gpt4 book ai didi

python - 为什么python函数可以在定义之前在全局范围内使用变量?

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:52 24 4
gpt4 key购买 nike

def foo(i):
print len(A)
return i < len(A)

if __name__ == '__main__':
A = [12]
print A
foo(10)

foo 如何知道A

我写这篇文章是因为 stackoverflow 坚持要我多写一些字。

最佳答案

检查生成的字节码:

>>> dis.dis(foo)
2 0 LOAD_GLOBAL 0 (print)
3 LOAD_GLOBAL 1 (len)
6 LOAD_GLOBAL 2 (A)
9 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
12 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
15 POP_TOP

3 16 LOAD_FAST 0 (i)
19 LOAD_GLOBAL 1 (len)
22 LOAD_GLOBAL 2 (A)
25 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
28 COMPARE_OP 0 (<)
31 RETURN_VALUE

要加载 A 变量,它使用 LOAD_GLOBAL 操作码。因此,当函数运行时(而不是在定义处),它将在全局命名空间中搜索此变量

关于python - 为什么python函数可以在定义之前在全局范围内使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414383/

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