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

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

不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...对于解释器的这种附赠的服务,大家是觉得很贴心,还是嫌弃它多事呢? 这样的做法似乎没多少好处,但似乎也没有坏处? 那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?...为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢? 关于这个问题,我们将在下一期“Python为什么”系列文章中揭晓。...如果你觉得这些问题很有启发性,那你应该会喜欢这些文章: 1、Python为什么使用缩进来划分代码块? 2、Python 的缩进是不是反人类的设计? 3、Python 为什么不用分号作语句终止符?

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

    【Kotlin】函数 ③ ( 匿名函数 | 匿名函数的函数类型 | 匿名函数的隐式返回 )

    文章目录 一、匿名函数 二、匿名函数的函数类型 三、匿名函数的隐式返回 一、匿名函数 ---- 声明函数时 , 没有 函数名 的函数 是 匿名函数 ; 匿名函数 可以作为 函数参数 , 也可以作为 函数返回值...Boolean) 扩展函数 , 接收一个 (Char) -> Boolean 类型的函数 , 用于 返回匹配给定 匿名函数 的字符数 ; /** * 返回匹配给定[谓词 predicate 匿名函数...决定 ; 有 相同 参数顺序 , 参数个数 和 返回值类型 的函数 , 其 函数类型相同 ; 如上个章节 , 扩展函数 CharSequence.count 接收的匿名函数参数 predicate ,...= helloFun() println(str) } 执行结果 : Hello World 三、匿名函数的隐式返回 ---- 普通函数 返回值 , 都是 显示返回 , 如 : 使用 return...关键字 , 返回返回值 ; 匿名函数 的 返回值 不需要使用 return 关键字 , 匿名函数 可以 隐式 返回 函数体最后一行语句 ; 代码示例 : 在匿名函数中 , 第一行是 Int 值 , 第二行是

    3.1K20

    函数返回指针

    大部分人会说11 也确实是11 因为是值拷贝 或者传递 返回的c也赋值给了res 这并没有什么难理解的,但如果我们要返回一个指针呢,再看一个例子。...是一个不确定的值 可能是11也可能是一个垃圾值 在我的笔记本上运行的是11 看着运行没有错误是吧。...但其实这是偶然性的结果,看图 我们在运行程序时,会先执行main函数 然后调用add函数 这时候main在堆栈就会暂停 将add压入堆栈 执行完add函数 add函数在堆栈中的数据 会被清空 也就是说我们返回的...&c会被系统清空 而res是&c,所以解引用res就会出现错误.至于为什么我的结果依旧正确,可能是我写的函数没有占用到那块内存。...如果我把print函数写成 #include int *add(int *a, int *b) { printf("a = %d b = %d\n", &a, &b);

    11110

    【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )

    一、函数返回值定义语法 在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ; def 函数名(函数参数): """函数文档字符串...(可选)""" # 函数体 return 返回值 调用函数时 , 使用 变量 可以接收函数返回值 ; 变量 = 函数(参数列表) 在函数中 , 如果遇到 return 关键字 , 则不会执行后续函数体中的代码..., 可以使用元组(tuple)或者列表(list)存储返回值 , 并将其赋值给一个变量 , 下面的代码 , 就是在函数中 , 返回了两个值 , """ 函数返回值示例 """ # 定义返回多个返回值的函数...""" 函数返回值示例 """ # 定义函数, 并设置函数返回值 def add(a, b): return a + b # 接收函数返回值 sum = add(1, 2) # 打印函数返回值...print(f"函数返回值为 {sum}") 执行结果 : 函数返回值为 3

    71820

    【JavaScript】函数 ④ ( 函数返回值 | 函数返回值语法 return 关键字 | 函数默认返回值 undefined )

    一、JavaScript 函数返回值 1、函数返回值引入 JavaScript 函数 可以 实现某种特定的功能 , 执行完毕后 , 可以返回一个 " 返回值 " ; 当 函数 被调用执行任务完毕时 ,...中 , 函数 返回值是 通过 return 语句实现 , 在函数体 中 使用 return 语句 指定函数返回的值 , 使用 return 语句后 会立即终止函数的执行 , return 返回值 语法如下...: function functionName(parameters) { // 函数体 return expression; // 返回值 } 在 JavaScript 中的返回值类型..., 返回给 调用者的 默认返回值是 undefined 未定义值 , 使用 变量 ret 接收默认返回值 , 将其打印出来 就是 undefined 值 ; 代码示例 : 执行结果 : 打印出来的 函数返回值 是 undefined 未定义值 ; 4、函数默认返回值 在下面的代码中 , add 函数 中 使用 return 关键字 返回返回值

    46310

    Python基础语法-函数-函数的返回值

    在Python中,函数可以返回一个值或多个值。函数的返回值是指在函数执行完成后,将一个或多个值返回给函数调用者。要从函数中返回一个值,可以使用return语句。...以下是一个返回整数值的简单函数的示例:def square(x): return x * x在这里,square()函数接收一个参数x,并返回它的平方值。...如果我们调用square(5),则函数将返回25。除了返回单个值外,Python函数还可以返回多个值。这可以通过将多个值打包成元组或列表来实现。...25)在这里,我们将get_name_and_age()函数的返回值存储在person变量中,并将它打印出来。...# 输出 25在这里,我们将get_name_and_age()函数的返回值解包,并将名字存储在name变量中,将年龄存储在age变量中。

    2.1K31

    stat()函数_stat函数返回值

    1 stat 函数 1.1 stat 函数的作用 linux 中,可以使用 stat 函数来获取文件相关的信息,就比如说文件的大小,文件的类型等等。...1.2 struct stat 结构体 stat 函数将获取到的结果保存到一个名为 struct stat 的结构体中。...第二个参数是输出参数,用来保存返回的文件信息的结果。 stat 函数的返回值如果是 0,表示函数执行成功,否则失败。失败后会改写 errno 这个全局变量。...我们可以使用 perror 这个函数打印失败的原因。...我们提出的问题是,stat 函数是从哪儿获取到文件信息的? 倘若你阅读了前面几篇有关文件系统的章节,相信你还回忆得起 目录项、inode 节点 这些很重要的名词。

    3.4K20

    Python函数式编程:返回函数与匿名函数

    接着上次的Python函数式编程,小编继续往下学习了函数式编程的剩下的一些内容。今天的内容包括返回函数和匿名函数。...顺便说一句,Python真的比R难学啊,对于没有计算机学科基础的同学来说,自学Python确实挺头疼的。 >>>> 返回函数 所谓返回函数,顾名思义,就是把函数作为返回值。...fx = fx * n return fx return fac 重新定义求积函数后,当我们调用lazy_fac()时,返回的就不是求积的结果啦,而是求积函数: >>>...在闭包结构中,函数作为结果返回时,函数过程并没有被立刻执行,而是等我们调用 a( )后才执行。 总之,在函数式编程里,函数除了可以返回一个计算结果之外,也可以返回一个未执行的函数。...当返回函数时,始终牢记该函数并未被执行,返回函数中尽量不要引入循环变量等可能引起变化的变量。 >>>> 匿名函数 当我们在传入函数时或者代码结构过于复杂时,我们可以通过匿名函数来代替显式的函数定义。

    70220

    【Python】函数 ① ( 函数定义语法 | 函数名称 | 函数参数 | 函数返回值 | 函数示例 )

    ,可以有一个或多个 ; 多个参数之间用逗号分隔 , 在函数体内 , 可以调用这些参数进行操作 ; 函数的文档字符串 : 可选设置 , 位于函数定义的第一行之后 ; 用于描述函数的用途、参数和返回值等信息...; 类似于 Java 中的文档注释 ; 函数表达式 : 函数体 是由 缩进的代码块组成 , 定义了函数要执行的操作 ; 函数体可以包含任意数量的语句和表达式 ; 函数返回值 : 函数可以使用...如果没有指定返回值,函数将默认返回None。..., add_numbers 函数接受两个参数 a 和 b , 将这两个参数相加并将结果返回 ; 函数的 文档字符串 描述了函数的作用 ; 函数体内的代码将两个参数相加并将结果存储在sum变量中,然后通过...Python 函数调用示例 : result = add_numbers(1, 2) print(result) # 输出:3 调用 add_numbers 函数并传递参数 1和2,并将返回的结果存储在

    25020

    C++函数指针、指针函数、返回值为函数指针的函数浅谈

    C++函数指针、指针函数、返回值为函数指针的函数浅谈 引言 函数指针、指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。...而返回值为函数指针的指针函数就更难理解了,放在文章的最后来介绍。 函数指针 函数指针是一种特殊的 指针,它指向函数的入口。...endl; return 0; } 指针函数 指针函数是一种返回值为指针的 函数。...return 0; } 返回值为函数指针的函数 其实在搞懂了函数指针和指针函数后,这个概念并不难懂,其实这就是一个复杂一点的指针函数,因为他的返回值为函数指针。...先给一个例子: /* *本例是SGISTL源码中的一个函数,比普通的返回值为函数指针的函数要更复杂一点 *因为本例中函数的参数也是一个函数指针 */ void (* set_malloc_handler

    1.6K10

    【C++】函数重载 ① ( 函数重载概念 | 函数重载判断标准 - 参数个数 类型 顺序 | 返回值不是函数重载判定标准 )

    的 返回值 不是 " 函数重载 " 的 判断标准 ; 一、函数重载 1、函数重载概念 C++ 中 " 函数重载 " 概念 : 使用 相同 的 函数名 , 定义 不同 的 函数 ; 函数名 相同 , 参数列表...的 参数顺序 或 参数类型 不同 ; 注意 : 只有 函数参数 是 " 函数重载 " 的判断标准 , 函数 的 返回值 不是 " 函数重载 " 的 判断标准 ; 2、函数重载判断标准 " 函数重载 "...满足的条件 ( 判断标准 ) : 参数 " 个数 " 不同 参数 " 类型 " 不同 参数 " 顺序 " 不同 只有 函数参数 是 " 函数重载 " 的判断标准 , 函数 的 返回值 不是 " 函数重载...: 打印整数: 4 打印两个整数: 2 和 3 打印浮点数: 1.5 Press any key to continue . . . 2、代码示例 - 返回值不是函数重载判定标准 只有 函数参数 是..." 函数重载 " 的判断标准 , 函数 的 返回值 不是 " 函数重载 " 的 判断标准 ; 因此 , 如果两个函数 , 参数列表相同 , 返回值不同 , 此时就会在编译时报错 , 程序无法运行 ;

    36320

    函数指针,指针函数,返回值为指针的函数「建议收藏」

    指针函数就是返回值为指针的函数,两个本质上是同一事物,只是叫法不同。函数指针就是一个指向函数的指针,本质上是一个指针,只是这个指针指向的对象是函数,而不是一般意义上的存储对象。...正文: 指针函数 指针函数就是返回指针值的函数,本质是一个函数。所以指针函数等价于“返回值为指针的函数”。...对于一个返回值为指针的函数,不能返回auto型局部变量的地址,但可返回static型变量的地址。...这是因为auto型变量的生存周期很短,当函数返回时,auto型变量的内存空间将被释放,如果返回值是auto型变量,那么这个返回指针将无效,变成野指针。...而static类型变量占用的内存空间则不会因为函数返回而被释放,不会出现野指针问题。 所以编写指针函数使要注意返回值。总体原则是:返回的指针对应的内存空间不会因函数返回则被释放掉。

    3K10

    函数的变量+返回值

    函数的变量: 局部变量 和 全局变量 Python中的任何变量都有特定的作用域 在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量 在一个文件顶部定义的变量可供文件中的任何函数调用...,这些可以为整个程序所使用的变量称为全局变量 (1)、局部函数: #!...输出结果: {'y': 1, 'x': 11} 函数的返回值: 函数被调用后会返回一个指定的值 函数调用后默认返回None 指定return 来返回一个值 返回值可以是任意类型 一旦return执行后...sys def isNum(p): for i in p: if i not in '0123456789': return False ##如果不是数字...设计一个函数,接收一个英文单词,从文件中查询该单词的汉语意思并返回

    4.9K40
    领券