编辑 (将答案包括在注释中,阐明):
原因之类的
def call_a(): a()def a(): passcall_a()
工作原理,当你有
a()在
call_a()之前
a甚至定义为一个功能是因为Python实际上只查找值的上的符号 按需
的基础。当
call_a被评估时,
a()呼叫基本上存储字节码指令“查找什么
a是并称之为” 在时机成熟时
,直到你坐下来的实际调用这是不是
call_a()在底部。
这是
call_a(via
dis.dis)的反汇编后的字节码:
Disassembly of call_a: 20 LOAD_GLOBAL 0 (a) 3 CALL_FUNCTION 0 6 POP_TOP 7 LOAD_ConST 0 (None) 10 RETURN_VALUE
所以基本上,当你打
call_a,它加载无论是存储
a在堆栈中,调用它的函数,然后d出返回值关闭返回前
None,这是隐含发生的任何不明确地返回(
call_a()is None返回
True)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)