gpt4 book ai didi

python - None 在代码对象的 co_consts 属性中做了什么?

转载 作者:太空狗 更新时间:2023-10-29 21:39:44 25 4
gpt4 key购买 nike

以下函数返回:

In [5]: def f():
...: pass

所以我对这个输出并不感到惊讶:

In [8]: dis.dis(f)
2 0 LOAD_CONST 0 (None)
3 RETURN_VALUE

In [10]: f.__code__.co_consts
Out[10]: (None,)

好的,这是有道理的。但是现在,考虑以下函数:

In [11]: def g():
....: return 1

In [12]: dis.dis(g)
2 0 LOAD_CONST 1 (1)
3 RETURN_VALUE

In [13]: g.__code__.co_consts
Out[13]: (None, 1)

g 没有使用None,那么为什么它在co_consts 中呢?

最佳答案

函数的默认返回值是None,所以它总是被插入。 Python 不想分析您是否总是要到达返回语句。

例如考虑:

def foo():
if True == False:
return 1

上述函数将返回 None,但这只是因为 if 语句永远不会是 True

在您的简单情况下,对我们人类来说很明显只有一个 RETURN_VALUE 操作码,但是将其扩展到计算机检测的一般情况是不值得的。最好只存储 None 引用并完成它,一个引用非常便宜

关于python - None 在代码对象的 co_consts 属性中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com