考虑以下代码:
def foo():
print('------- entering foo() ---------')
def internal():
print('x in internal: {}'.format(x))
print('id(x) in internal: {}'.format(id(x)))
print()
x = 100
internal()
global f
f = internal
x = 111
internal()
print('------- exiting foo() ---------')
print()
foo()
f()
代码的输出是:
------- entering foo() ---------
x in internal: 100
id(x) in internal: 4362053072
x in internal: 111
id(x) in internal: 4362053424
------- exiting foo() ---------
x in internal: 111
id(x) in internal: 4362053424
执行foo()
的堆栈帧应该在执行完成后销毁吗?但是,根据上面代码的输出,在我看来,f
引用的internal
的闭包可以访问分配f
的执行foo()
的堆栈帧。如果堆栈帧已被销毁,f
如何访问执行foo()
的堆栈帧
目前没有回答
相关问题 更多 >
编程相关推荐