python是否将no return语句与return None完全相同?

里德·莫法特

码:

def foo():
    if condition:
        return some_value
    return None

def bar():
    if condition:
        return some_value

如果条件为假,则两者都返回None,但是它们在计算时间或其他方面是否有所不同?通常首选哪一个

布莱克金

在当前版本的CPython中,return None与完全不返回完全相同。两者都被编译成两个字节码,一个LOAD_CONST字节码(用于加载None)和一个RETURN_VALUE(用于返回)。

您可以通过使用dis模块分解已编写的两个函数来查看此信息

>>> import dis
>>> dis.dis(foo)
  2           0 LOAD_GLOBAL              0 (condition)
              2 POP_JUMP_IF_FALSE        8

  4           4 LOAD_GLOBAL              1 (some_value)
              6 RETURN_VALUE

  5     >>    8 LOAD_CONST               0 (None)
             10 RETURN_VALUE

>>> dis.dis(bar)
  8           0 LOAD_GLOBAL              0 (condition)
              2 POP_JUMP_IF_FALSE        8

 10           4 LOAD_GLOBAL              1 (some_value)
              6 RETURN_VALUE
        >>    8 LOAD_CONST               0 (None)
             10 RETURN_VALUE

唯一的区别是bar行数更少(在第一列中指示),因为隐式return代码不对应于源代码中的任何行。

但是,它们相同的事实是实现细节。其他Python解释器(甚至包括其他版本的CPython)可能会为两种情况生成不同的代码。

即使实现是相同的,显式方法return None也可以使阅读代码的人更清楚自己关心的是返回值。依赖隐式返回值表明您不必关心该返回值,并且主要是因为该函数的副作用(例如,打印某些内容或对某个对象进行突变)而调用该函数。

在您完全忘记了对该功能的编程方式之后,将来阅读您的代码的人可能就是您。编写清楚的代码通常比编写可正确编译和运行的代码更加困难。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ pass”是否与Python中的“ return None”相同?

来自分类Dev

为什么动态sqlite语句不起作用,而完全相同的静态语句将起作用?

来自分类Dev

python中的return语句

来自分类Dev

将函数放入return语句

来自分类Dev

将函数放入return语句

来自分类Dev

减少return语句的数量(Python)

来自分类Dev

Excel公式来检查数据范围是否完全相同

来自分类Dev

如何确定两个网页是否完全相同

来自分类Dev

MongoDB中的新文档是否必须与Schema完全相同?

来自分类Dev

平台之间是否对apiclient完全相同的调用崩溃

来自分类Dev

简单的python函数返回None,并且我正在使用return语句

来自分类Dev

URL是否将始终创建具有完全相同字节模式的安全范围书签?

来自分类Dev

如果if语句中已经包含return语句,是否必须在方法中包含return语句?

来自分类Dev

无限循环后是否需要return语句?

来自分类Dev

是否需要break语句或return语句是否足够?

来自分类Dev

是否需要break语句或return语句是否足够?

来自分类Dev

Return语句将永远不会执行警告

来自分类Dev

是否可以使用if语句编写单行return语句?

来自分类Dev

if / else语句是否在return语句内的循环内?

来自分类常见问题

Python元组在return语句中解包

来自分类Dev

子流程returncode中的Python'return not'语句

来自分类Dev

python中的多个return语句问题

来自分类Dev

这个python return语句怎么了?

来自分类Dev

和门中的python return语句

来自分类Dev

Python-Return语句清空我的列表

来自分类Dev

Python return语句不会中断循环

来自分类Dev

这个python return语句怎么了?

来自分类Dev

和门中的python return语句

来自分类Dev

Python编码风格-多个return语句

Related 相关文章

热门标签

归档