问题描述
我有一个返回其参数的琐碎函数,该值是使用cpython的LOAD_FAST
指令获得的。
def function1(n):
return n # LOAD_FAST for n -- what I expect
dis.dis(function1)
2 0 LOAD_FAST 0 (n)
2 RETURN_VALUE
但是,在函数主体中添加lambda表达式会导致使用LOAD_DEREF
获得该值。
def function2(n):
return n # LOAD_DEREF for n -- this is surprising
lambda: n # LOAD_DEREF for n -- what I expect
dis.dis(function2)
2 0 LOAD_DEREF 0 (n)
2 RETURN_VALUE
disassembly of <code object <lambda> at 0x...,file "...",line 3>:
3 0 LOAD_DEREF 0 (n)
2 RETURN_VALUE
为什么n
的查找会根据是否在较低(相关)范围中使用n
而在较高范围中发生变化?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)