def foo(i):
print len(A)
return i < len(A)
if __name__ == '__main__':
A = [12]
print A
foo(10)
Run Code Online (Sandbox Code Playgroud)
怎么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
Run Code Online (Sandbox Code Playgroud)
要加载A变量,它使用LOAD_GLOBAL操作码.因此,当函数运行(而不是定义)时,它将在全局命名空间中搜索此变量
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |