网站首页 > 技术文章 正文
今天突然有学员问我,为什么有的函数有return而有的又没有return?
这个问题一下子把我的思绪拉回“年轻”的时候,那时这个问题也困扰我很久~~
我相信很多初学的小白肯定都遭遇过这个问题的洗礼,今天的文对小白友好,不适合大佬观赏~~
return的作用
假如我有一家生产手机的工厂,但工人把手机生产出来之后就直接被销毁了。
此时手机是被生产出来过,但是没有人接收到手机,所以手机变成垃圾,被销毁了。
示例代码如下:
def assemble_phone():
phone = "apple"
我定义了一个phone的变量,并赋值“apple”,但接下来之后函数就结束了,所以这个phone变量没有任何意义,就像手机被造出来之后就被销毁了一样。
那么如何把生产出来的手机保留下来呢?
?
很多初学者会以为print出来的值应该会被返回,这是一个很大的思维误区。
?
def assemble_phone():
phone = "apple"
print(phone)
phone = assemble_phone()
print(f"今天真开心,我买了一部{phone}手机")
执行结果:
apple
今天真开心,我买了一部None手机
今天一点都不开心,我买了个None(什么都没有)。
但是从执行结果中发现,函数运行之后的的确确是看到apple被输出了,那为什么new_phone还是个None呢?
因为apple手机在制造完成之后,送到我眼前晃了一下,让我欣赏了下,之后...销毁了...所以我还是买了个None。
正确写法
只要把函数中的print(phone)语句更换成return phone语句即可。
def assemble_phone():
phone = "apple"
return phone
phone = assemble_phone()
print(f"今天真开心,我买了一部{phone}手机")
执行结果:
今天真开心,我买了一部apple手机
这是为啥?因为如果在函数在执行完return语句之后,函数本身就会变成return语句后面的值,这样就能把值给传递出去。
没有return的函数,就没有任何值传递出去,所以无论函数怎么执行它,它也就是个None。
return使用小攻略
- 通常情况下,函数结束到return语句就结束了,return之后的语句将不会被执行。
def assemble_phone():
phone = "apple"
return phone
print(phone)
print(assemble_phone())
执行结果:
apple
print(phone)语句不会被执行到。
- return 后不带任何值,将会return None,
def return_empty():
return
print(return_empty())
执行结果:
None
- 函数中含有多个return的情况下,执行到任何一个return,函数都将停止并返回,
def choice_five(num):
if num == 5:
return num
return "不是5"
print(choice_five(10))
print(choice_five(5))
执行结果:
不是5
5
- 只有在这种情况下,执行到return语句函数不会停止,
def output_num():
try:
return 5
finally:
return 10
print(output_num())
执行结果:
10
应用场景
一般情况下,函数如果要拿到一些列操作之后的结果就需要用到return去返回这个结果;
如果我们不需要结果,只需要完成过程(例如写入数据库),那么return就会显得多余了。
作者: 小K
来源: 麦叔编程
猜你喜欢
- 2024-09-09 序列化 Python 对象(序列化对象需要实现的接口)
- 2024-09-09 一篇文章读懂系列-2.二叉树及常见面试题
- 2024-09-09 Meta 如何将缓存一致性提高到 99.99999999
- 2024-09-09 自学Python笔记2(python0基础自学书)
- 2024-09-09 找到两个链表的第一个公共节点(找出两个链表的第一个公共节点)
- 2024-09-09 详解SkipList跳跃链表(跳表遍历)
- 2024-09-09 Python画豪华版圣诞树,带漂亮彩灯与文字背景
- 2024-09-09 零基础Python完全自学教程23:函数的返回值、作用域和匿名函数
- 2024-09-09 redis的内存满了之后,redis如何回收内存
- 2024-09-09 「python小游戏」据说这是一款还原度超高的小游戏,你感受下....
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)