在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Python 函数默认返回None是什么原因?定义的函数没有返回值,Python 解释器就会强行地默认给注入一段返回逻辑!实际上 Python 中有很多行为都是隐性的。
Python 有一项默认的做法,很多编程语言都没有,所有函数都会有一个返回值,不管有没有写 return 语句。
在正式开始之前,用pass语句 和 …对象 作为例子,看下 Python 的函数返回值:

定义的两个函数都没有写任何的 return 语句,但是在函数调用后,都能取到一个返回值。执行效果跟直接写 return 语句相比,是完全相同的:

这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏的 return 返回值;一种写了 return,而且实际也有返回值。也就是说,后者在语义和行为上表现一致,前者虽然在语义上缺失,但是却有实际的行为和结果;后者的行为是显性的,前者却是隐性的。
《Python之禅》中有一句“显性胜于隐性(Explicit is better than implicit)”,但是,出于简洁和便利的考虑(Simple is better than complex),实际上 Python 中有很多行为都是隐性的,会把一些在语法层面的事交给解释器去完成。
真值判断 是隐性的行为,本文前两个例子也是如此。
使用dis查看字节码,就可以看到其背后的变化:

在这个对比图中,可以看出上述 4 个函数的解释器指令一模一样!
不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。
那么问题来了:Python 的函数为什么能默认返回 None ?如何实现的?
答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回:

如果定义的函数没有返回值,Python 解释器就会(强行地)默认给我们注入一段返回逻辑!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础python能找到工作吗?需要掌握哪些技能?
对于大部分零基础学编程半路出家的人来说,无非是想改变现状换一门新职业,所谓技术大牛不过是比小白们更早接触编程罢了,选择好自己有兴趣的职业技能,并为之学习专业技术,提升自身的编程水平。
8975
2019-05-13 10:30:37
Python开发工程师面试中常见知识点集锦(一)
很多Python工程师屡屡碰壁,需要很长时间才能找到合适的工作。虽然有一部分是因为技术能力确实无法满足企业需求,而更多的人技术能力很强仅仅是因为面试过程中没有良好的发挥。所以作为Python开发工程师,不仅仅要掌握知识,同时也要多了解一些面试题。这样在遇到跳槽的时候才能更快的找到满意的工作。下面就是python开发工程师面试中常见的知识点集锦。
10461
2019-06-27 18:11:50
Python开发Flask中数据库设置?
Flask中数据库设置?#动态追踪修改设置,如未设置只会提示警告#查询时会显示原始SQL语句。
9083
2019-07-02 17:04:55
了解Python五大特性提高工作效率
Python作为近些年来新崛起的编程语言黑马,发展可以说是势如破竹,风头强劲。而随着Python一起升温的,还有全民学习Python的热度。虽说Python是新手友好的语言,但对于零基础的初学者而言,学习一门编程语言的难度并不低。为了帮助大家更好的掌握Python,本文将为大家总结归纳可以提高工作效率的Python五大特性,分别是列表操作、压缩和枚举、列表推导式、虚拟环境的使用和生成器。
6381
2020-01-11 19:26:10
学好了Python可以干什么?
随着我国对编程的重视程度上升,Python编程的学习趋势逐渐低龄化。在全国掀起Python编程热的同时,还是有许多人对于学习Python抱有怀疑,那么我们就来看看学好了Python究竟可以干什么。根据目前就业市场的反馈,我们可以看到Python的就业发现主要集中在大数据、Web前端、人工智能、爬虫等其他众多领域。
6575
2020-06-24 18:32:32
