我是新来的编程和脱脂阅读一些功能和类的主题。 因此,在阅读了关于函数和封闭函数之后,我试图通过仅仅调用函数及其范围来模仿类中的继承搜索。围绕功能范围搜索?
例子:
对于代码
def f1():
t=1
def f2(x):
return eval(x)
return f2
为什么我得到一个名称错误定义说
def f1():
t=1
def f2():
return t
return f2
时做
f1()('t') #expecting 1 return
但不是当
f()() # 1 is returned here
我可以通过在f2范围内将t定义为非本地来解决这个问题,这意味着第一个代码仅在f2的本地范围中查找。为什么会发生? `
请缩进您的代码 – ForceBru
[相关](https://stackoverflow.com/questions/44425363/is-it-true-in-python-closure-will-be-stored-if-and-only-if -it-is-mentioned-lex) –
看看https://stackoverflow.com/questions/4020419/why-arent-python-nested-functions-called-closures的接受答案 - 非常好的解释。 – mkiever