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

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

本文出自“Python为什么”系列,正式开始之前,我们就用之前讨论过 pass语句 和 …对象 作为例子,看看 Python 函数是怎样“无中生有”: 可以看出,我们定义两个函数都没有写任何...不管有没有写 return,它们都会执行 return 逻辑,而且默认返回值就是 None。 那么,问题来了:Python 函数为什么能默认返回 None 呢?它是如何实现呢?...答案就在解释器,当 CPython 解释器执行到函数最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None返回(出自:compile.c): 也就是说,如果定义函数没有返回值...为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回函数呢? 关于这个问题,我们将在下一期“Python为什么”系列文章揭晓。...4、Python 为什么没有 main 函数为什么不推荐写 main 函数? 5、Python 为什么推荐蛇形命名法? 6、Python 为什么不支持 i++ 自增语法,不提供 ++ 操作符?

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

为什么PythonNone is None is None == True

最近在StackOverflow上看到了一个问题,为什么PythonNone is None is None返回True,看到大家讨论后对Python比较运算有了更深认识。...None,而后者百分之百是False,因为True is None == False.然而问题关键是isPython是比较运算符,而不是算数运算符。...括号比较运算并不是改变运算优先级,而是直接返回括号内比较运算结果,这个结果只会是True或者False,而True和False已经不是原来比较对象了。...就像(1 < 2) < 3Python虽然是True但事实上比较是True < 3, 而True比较运算是当作1看待。...Python连续进行比较运算底层实现 上一节提到了(3 > 2) > 1Python是False,但是懂一点Python的人都知道3 > 2 > 1Python是合法并且返回True,我们可以看一下这一个表达式

2.3K70

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、数据结构、算法、编程、网络等各种常考题。

67300

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

今天给大家分享小编遇到一个坑有关python递归调用坑:打印有值, 返回None问题。...输出结果让百思不得其解, 为什么明明上一步输出有值, return出去后就变成了None??...解决方法: return function() 今日写一个装饰器时候偶然想起一个可能, 把函数内最下面一行right_shift(s, n) 改为return right_shift(s, n)即可...return 之前答应出来都是有值, 调用时候返回值都是None ,很是纳闷 后来找到原因 现在来看下返回None 代码 def get_end_parent_ele(self, obj):...None 总结 到此这篇关于python递归调用坑:打印有值, 返回None文章就介绍到这了,更多相关python递归打印有值返回none内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持

2.4K31

python函数返回值详解

1.返回值介绍 现实生活场景: 给儿子10块钱,让他给我买包烟。...这个例子,10块钱是给儿子,就相当于调用函数时传递到参数,让儿子买烟这个事情最终目标是,让他把烟给你带回来然后给你对么,,,此时烟就是返回值 开发场景: 定义了一个函数,完成了获取室内温度,...想一想是不是应该把这个结果给调用者,只有调用者拥有了这个返回值,才能够根据当前温度做适当调整 综上所述: 所谓“返回值”,就是程序函数完成一件事情后,最后给调用者结果 2.带有返回函数 想要在函数把结果返回给调用者....保存函数返回本小节刚开始时候,说过“买烟”例子,最后儿子给你烟时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存 保存函数返回值示例如下...5.python我们可不可以返回多个值?

3.2K20

Java为什么不同返回类型不算方法重载?

doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名组成规则我们可以看出,方法返回类型不是方法签名组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名一部分呢?...总结 同一个类定义了多个同名方法,但每个方法参数类型或者是参数个数不同就是方法重载。方法重载典型使用场景是 String valueOf 方法,它有 9 种实现。...方法返回类型不能作为方法重载依据,因为它不是方法签名组成部分。

3.3K10

Python 字符串返回bool类型函数集合

字符串返回bool类型函数集合 isspace 功能: 判断字符串是否是由一个空格组成字符串 用法: booltype = string.isspace() -> 无参数可传 ,返回一个布尔类型...=‘’’ istitile 功能: 判断字符串是否是一个标题类型 用法 booltype = String.istitle() -> 无参数可传, 返回一个布尔类型 注意: 该函数只能用于英文 isupper...与islower 功能: isupper判断字符串字母是否都是大写 islower判断字符串字母是否都是小写 用法: booltype = string.isupper() -> 无参数可传..., 返回一个布尔类型 booltype = string,islower() ->无参数可传 ,返回一个布尔类型 注意: 只检测字符串里字母,对其他字符不做判断 join与split 稍后见 我们数据类型转换时候见...upper_str_02 = 'Python Is A Good Code' lower_str = ' i love python 哈哈!'

2.4K20

【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值弊端 | 尝试 sequence 调用挂起函数返回多个返回值 | 协程调用挂起函数返回集合 )

文章目录 一、以异步返回返回多个返回值 二、同步调用返回多个值弊端 三、尝试 sequence 调用挂起函数返回多个返回值 四、协程调用挂起函数返回集合 一、以异步返回返回多个返回值 ----... Kotlin 协程 Coroutine , 使用 suspend 挂起函数 以异步方式 返回单个返回值肯定可以实现 , 参考 【Kotlin 协程】协程挂起和恢复 ① ( 协程挂起和恢复概念...sequence 调用挂起函数返回多个返回值 ---- 尝试使用 挂起函数 kotlinx.coroutines.delay 进行休眠 , 这样挂起时 , 不影响主线程其它操作 , 此时会报如下错误...SequenceScope 对象方法 ; 该匿名函数 , 不能调用 SequenceScope 之外定义挂起函数 , 这样做是为了保证该类执行性能 ; /** * 构建一个[Sequence...---- 如果要 以异步方式 返回多个返回值 , 可以协程调用挂起函数返回集合 , 但是该方案只能一次性返回多个返回值 , 不能持续不断 先后 返回 多个 返回值 ; 代码示例 : package

8.2K30

ctypesC共享库调用Python函数

概述 ctypes 是Python标准库中提供外部函数库,可以用来Python调用动态链接库或者共享库函数,比如将使用大量循环代码写在C语言中来进行提速,因为Python代码循环实在是太慢了...大致流程是通过 ctypes 来调用C函数,先将Python类型对象转换为C类型,C函数做完计算,返回结果到Python。这个过程相对是比较容易。...现在有个更复杂情况,想要在C代码调用Python某些函数来完成C代码计算,比如在C代码sort函数,采用Python定义函数来进行大小判断。...这个Python定义函数 ctypes 称为回调函数 (callback function)。也就是说需要把Python函数当作变量传给C语言,想想还是有些难度。...如果回调函数没有返回值,那@c.CFUNCTYPE后面的第一个参数设置为None

27530

Python实现ExcelVLOOKUP、HLOOKUP、XLOOKUP函数功能

事实上,我们可以使用相同技术Python实现VLOOKUP、HLOOKUP、XLOOKUP或INDEX/MATCH等函数功能。...图1 Python实现XLOOKUP 我们将使用pandas库来复制Excel公式,该库几乎相当于Python电子表格应用程序。...给定一个lookup_value,lookup_array中找到它位置,然后从return_array返回相同位置值。下面是Excel XLOOKUP公式可用参数。...第一行,我们用一些参数定义了一个名为xlookup函数: lookup_value:我们感兴趣值,这将是一个字符串值 lookup_array:这是源数据框架一列,我们正在查找此数组/列...“lookup_value” return_array:这是源数据框架一列,我们希望从该列返回值 if_not_found:如果未找到”lookup_value”,将返回随后: lookup_array

6.6K10

python笔记22-literal_eval函数处理返回json单双引号

前言 在做接口测试时候,最常见接口返回数据就是json类型,json类型数据实际上就是字串,通常标准json格式是可以转化成python里面的对应数据类型 有时候开发返回数据比较坑,不按常理出牌...: ‘[{“name”:”yoyo”, “status”: “200”}]’} eavl 1.eval函数实现功能 将字符串string对象转化为有效表达式参 求值运算返回计算结果 2.语法:eval...(expression,globals=None, locals=None返回是计算结果 expression是一个参与计算python表达式 globals是可选参数,如果设置属性不为None...的话,就必须是dictionary对象了 locals也是一个可选对象,如果设置属性不为None的话,可以是任何map对象了 求值运算 1.eval() 函数用来执行一个字符串表达式,并返回表达式值...print(b) print(type(b)) 运行结果 {'isSucess': True, 'name': 'yoyo', 'status': '200'} 2.有时候返回

2.3K10

nextline函数_JAVAScannernext()和nextLine()为什么不能一起使用?

大家好,又见面了,是你们朋友全栈君。...对于 “” 情况分析: 输入 2 时候调用是 nextInt返回:nextInt 返回是结束符之前内容,并不会返回结束符 我们输入:2 \r 以回车 ( \r ) 结尾,于是 2 被返回,...回车符 “\r” 它被丢弃缓冲区,现在缓冲区,只有一个 \r ,于是 下一次 nextLine 扫描时候就又扫描到了 \r,返回它之前内容,也是啥都没有 “” ,然后再把 \r 去掉, 对于...这个扫描器扫描过程判断停止依据就是“结束符”,空格,回车,tab 都算做是结束符 而坑点在于 next 系列,也就是下面这些函数:next nextInt nextDouble nextFloat...这些函数与 nextLine 连用都会有坑 坑点就是 next 系列函数返回了数据后,会把回车符留在缓冲区,因此我们下一次使用 nextLine 时候会碰到读取空字符串情况 解决方案:输入都用

2.6K10
领券