首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 函数为什么会默认返回 None

本文出自“Python为什么”系列,在正式开始之前,我们就用之前讨论过的 pass语句 和 …对象 作为例子,看看 Python 的函数是怎样“无中生有”的: 可以看出,我们定义的两个函数都没有写任何的...使用dis查看字节码,就可以看到其背后的小动作: 在这个对比图中,可以看出上述 4 个函数的解释器指令一模一样!...不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...,Python 解释器就会(强行地)默认给我们注入一段返回逻辑!

2.1K40

Python 递归函数返回值为 None 的解决办法

在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。 下面来举一个例子: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 比如上面这段代码,乍一看没什么问题,但返回值并不是我们期望的 5,而是 None。...>>> print(r) None 要解决这个问题也简单,就是在执行递归调用的时候,加上 return 语句。 修改之后的代码如下: >>> def fun(i): ... ...最后补充一句,如果想要了解这背后深层的原理,可以看看函数调用栈相关的资料,这里就不过多介绍了。 本文就到这里了,如果觉得有用的话欢迎点赞,转发和关注,谢谢。...面试题汇总: 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。

66600
您找到你想要的搜索结果了吗?
是的
没有找到

python递归调用中的坑:打印有值, 返回None

今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有值, 返回None问题。...输出结果让我百思不得其解, 为什么明明上一步输出有值, return出去后就变成了None??...return right_shift(s, n) s = right_shift(s1, 4) print(s) # 成功输出 "efgabcd" 知识点补充:python 递归返回None 解决 今天写了一个递归...return 之前答应出来都是有值的, 调用时候返回值都是None ,很是纳闷 后来找到原因 现在来看下返回None 的代码 def get_end_parent_ele(self, obj):...None 总结 到此这篇关于python递归调用中的坑:打印有值, 返回None的文章就介绍到这了,更多相关python递归打印有值返回none内容请搜索ZaLou.Cn以前的文章继续浏览下面的相关文章希望大家以后多多支持

2.4K31

Python】函数 ④ ( 函数 None 返回值 | None 值应用场景 | 用于 if 判断 | 定义无初始内容变量 | 代码示例 )

一、函数 None 返回值 1、空返回值 在 Python 函数中 , return 返回值是可选的 , 函数可以没有返回值 ; def 函数名(函数参数): """函数文档字符串(可选)"""...# 函数体 # return 返回值 (可选) Python 函数中没有显示定义返回值 , 那么返回的就是 特殊字面量 None , 其类型是 ; None...表示没有实际意义 , 返回空 , 不需要处理返回值信息 ; Python返回 None 相当于 Java / C / C++ 中的 void Kotlin 中的 Unit 等 空返回值 ; 2、代码示例...None 二、None 值应用场景 ---- 1、None 值应用场景简介 函数 None 返回值应用场景 : 函数返回值 : 表示函数没有返回值 ; 用于 if...判断 : None 相当于 布尔值 False ; 定义无初始内容变量 : 定义变量时如果不需要变量的具体值 , 可以暂时为其赋值 None ; 2、代码示例 - 使用 None 进行 if 判断 代码示例

29520

解决python cv2.imread 读取中文路径的图片返回None的问题

使用cv2读取图片时,输出图片形状大小时出现报错“ ‘NoneType’ object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取....x, cv2.imread()导入图片失败,none 首先在第一次运行时,命令行中错误: ValueError: embedded null character 发现是因为导入的图片路径中存在\...0 python3.x, cv2.imread()导入图片失败,none 1....路径中无中文名 2. pip list 发现也有opencv-python,(虽然我又重新下了一遍 而这些图片用PS打开的时候,会报错:无法完成请求,因为找到不知名的无效的JPEG标识符类型 图片是我从网站上爬下来的...cv2.imread 读取中文路径的图片返回None的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.5K40

Python字典不是不可以排序,是你方法没用对!

摘要:排序是个古老的话题,不过对于字典的排序,常常会让 小白手足无措。好像没有找到可以排序字典的函数呢!到底是按key排序,还是按value排序呢?字典到底可不可以按value排序呢?...排完序后,还可以通过key检索吗?当然,还会抛出很多问题,而本文将完美地给出了这些问题的答案! 字典Python语言中的一种数据结构,每一个字典元素是由一对key-value组成的。...如果使用的是Python 3.7或以上版本。...: print(dict(sorted(x.items(), key=lambda item: item[1]))) 如果不想使用lambda表达式,需要更复杂的排序规则,可以自定义排序规则函数,代码如下...key和value集合进行排序,也可以对key-value对进行排序,如果是后者,需要通过key指定到底是用key,还是用value排序,sorted函数返回的是排好序的列表,如果要得到排好序的字典,或者使用

1.1K10

这样合并Python字典可以让程序的运行效率提高4倍

本文将对这些合并字典的方式进行逐个深度详解,最后会比较这些方式,看看到底谁是效率之王! 现在提出一个问题:如何用一行代码合并两个Python字典,并返回合并结果。...Python 3.5及以上版本的解决方案 如果读者使用的不是Python 3.9,但却是Python3.5或以上版本,如Python3.7、Python3.8等,可以采用双星(**)运算符合并两个字典,...Python 3.4一下版本的解决方案 如果读者使用的是Python3.4更低的Python版本,如Python2.7,那么如果想用一行代码解决问题,就要自己编写函数了。...: from copy import deepcopy def dict_of_dicts_merge(x, y): z = {} # 如果两个要合并的字典结构不一致,无法合并,返回None...其他合并字典的方式 除了前面介绍的几种合并字典的方式,还可以用下面的2种合并方式: (1)for in 表达式 在Python中有一种语法,可以利用for in表达式生成列表字典,因此,可以利用这个功能

4.7K10
领券