0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python 函数默认返回None的原因

如意 来源:博学园 作者:吾非鱼 2020-08-21 10:51 次阅读

Python 函数默认返回None是什么原因?定义的函数没有返回值,Python 解释器就会强行地默认给注入一段返回逻辑!实际上 Python 中有很多行为都是隐性的。

Python 有一项默认的做法,很多编程语言都没有,所有函数都会有一个返回值,不管有没有写 return 语句。

在正式开始之前,用pass语句 和 …对象 作为例子,看下 Python 的函数返回值:

Python 函数默认返回None的原因

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

Python 函数默认返回None的原因

这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏的 return 返回值;一种写了 return,而且实际也有返回值。也就是说,后者在语义和行为上表现一致,前者虽然在语义上缺失,但是却有实际的行为和结果;后者的行为是显性的,前者却是隐性的。

《Python之禅》中有一句“显性胜于隐性(Explicit is better than implicit)”,但是,出于简洁和便利的考虑(Simple is better than complex),实际上 Python 中有很多行为都是隐性的,会把一些在语法层面的事交给解释器去完成。

真值判断 是隐性的行为,本文前两个例子也是如此。

使用dis查看字节码,就可以看到其背后的变化:

Python 函数默认返回None的原因

在这个对比图中,可以看出上述 4 个函数的解释器指令一模一样!

不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。

那么问题来了:Python 的函数为什么能默认返回 None ?如何实现的?

答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回:

Python 函数默认返回None的原因

如果定义的函数没有返回值,Python 解释器就会(强行地)默认给我们注入一段返回逻辑!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源代码
    +关注

    关注

    95

    文章

    2929

    浏览量

    66066
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83477
  • 解释器
    +关注

    关注

    0

    文章

    98

    浏览量

    6423
收藏 人收藏

    评论

    相关推荐

    python中open函数的用法详解

    python中open函数的用法详解 Python中的open()函数用于打开文件。它接受文件名和模式作为参数,并返回一个文件对象。文件对象
    的头像 发表于 01-30 15:31 446次阅读

    input函数会将接收的数据以什么类型返回

    nput函数会将接收的数据以字符串类型返回。 input函数Python内置函数之一,它用于从用户处获取输入。当程序运行到input
    的头像 发表于 11-30 10:09 1128次阅读

    python中计算排列组合的函数有哪些

    Python中,有多种可以用于计算排列组合的函数和模块。下面将详细介绍一些常用的函数和模块,并提供详实和细致的说明。 math模块: Python的math模块提供了一些计算排列组合
    的头像 发表于 11-29 16:33 1496次阅读

    python中各种函数的用法

    Python中有很多种不同类型的函数,它们在解决各种问题和完成不同任务时起着重要的作用。下面我将详细介绍几种常用的函数,包括内置函数、自定义函数
    的头像 发表于 11-23 15:48 400次阅读

    python调用math函数的方法

    中。本文将详细介绍math模块中的各种数学函数的调用方法,包括函数的功能、参数的使用和返回值的含义等方面,以帮助读者更好地理解和应用这些函数。 一、导入math模块 要使用math模块
    的头像 发表于 11-22 11:01 1276次阅读

    python函数返回多个参数

    函数是程序设计中的一个重要概念,在很多编程语言中都存在。函数可以接受输入数据,并且根据输入数据进行一系列操作,最后可以返回一个或多个结果。Python是一种非常流行的编程语言,也支持
    的头像 发表于 11-21 16:37 499次阅读

    tuple函数怎么返回多个值

    在编程领域中,函数是非常重要的构建模块,它能够接受输入参数并执行特定的计算,最终返回结果供程序使用。常规的函数只能返回一个值,但有时我们希望函数
    的头像 发表于 11-21 16:33 299次阅读

    sort函数python用法

    sort()函数Python中的内置函数之一,用于对可迭代对象进行排序。可迭代对象包括列表、元组和字符串等。sort()函数是一个灵活而强大的函数
    的头像 发表于 11-21 15:15 698次阅读

    python定义空函数返回多个值方法

    ,缺少了pass,代码运行就会有语法错误 pass还可以用在其他语句里,如if语句 参数检查 当定义函数时,如果有必要,可先对参数做检查,通常包括: 参数个数检查 参数类型检查 返回多个值 函数可以
    的头像 发表于 11-14 11:33 244次阅读

    C语言函数返回1和返回0究竟哪个好?

    模糊,因为并没有具体说明函数执行失败的原因。因此,本文将从一些实际例子入手,详细分析和比较C语言函数返回1和返回0的优缺点,以期解决这个问题
    的头像 发表于 10-31 14:43 486次阅读

    Python 函数参数分类

    文章应该对你会有不小的帮助。 接下来是正文。 1. 参数分类 函数,在定义的时候,可以有参数的,也可以没有参数。 从函数定义的角度来看,参数可以分为两种: 必选参数 :调用函数时必须要指定的参数,在定义时没有等号 可选参数 :也
    的头像 发表于 10-21 10:45 238次阅读

    Python函数作为返回

    函数作为返回函数除了作为代码块,作为接收参数,还可以把函数作为结果返回。 例子: 可变参数的求和: 通常 def calc_sum (
    的头像 发表于 09-27 17:01 867次阅读

    python常用方法总结(eval/input/if)

    Python中,`eval()`函数是一个内置函数,用于将字符串作为表达式进行求值并返回结果。它的基本语法是`eval(expression, globals=
    的头像 发表于 08-18 15:27 1644次阅读
    <b class='flag-5'>python</b>常用方法总结(eval/input/if)

    为什么Python没有main函数

    今天的文章中,我们来讨论一下为什么有的编程语言有main函数,而Python为什么没有main函数
    发表于 08-17 11:47 172次阅读

    C语言的函数如何返回多个数据

    C语言的函数如何返回多个数据?这个操作在写代码的时候还经常遇到。
    发表于 07-25 10:53 614次阅读