当前位置: 首页 > 科技观察

Python函数默认返回None的原因是什么?

时间:2023-03-13 20:29:02 科技观察

Python函数默认返回None。是什么原因?定义的函数没有返回值,Python解释器默认会强行注入一段返回逻辑!事实上,Python中的许多行为都是隐式的。Python有一个很多编程语言没有的默认做法,就是所有的函数都会有一个返回值,不管是否写了return语句。在正式开始之前,我们先以pass语句和...对象为例,来看一个Python函数的返回值:定义的两个函数都没有return语句,但是函数调用后,返回一个值可以获得。执行效果和直接写return语句完全一样:这4个例子分两种:一种不写return,但是有隐藏的return返回值;一个写return,其实是有返回值的。也就是说,后者在语义和行为上是一致的,而前者在语义上有所欠缺,但有实际的行为和结果;后者的行为是显性的,而前者是隐性的。《Python之禅》中有一句“Explicitisbetterthanimplicit(显式优于隐式)”,但是,为了简洁方便(Simpleisbetterthancomplex),其实Python中很多行为都是隐式的是的,有些语法层面的东西会交给解释器来完成。真相判断是隐含的行为,本文的前两个例子也是如此。使用dis查看字节码,可以看到背后的变化:在这张对比图中,可以看到上面四个函数的解释器指令是完全一样的!不管return有没有写,都会执行return的逻辑,默认返回值为None。那么问题来了:为什么Python函数可以默认返回None?如何实现?答案在于解释器。CPython解释器在执行函数的最后一个代码块时,如果发现没有返回值,会主动添加一个Py_None值返回:如果定义的函数没有返回值,Python解释器会(强制)注入我们默认带有返回逻辑!