我知道使用eval()通常意味着糟糕的代码,但我eval()在内部函数中偶然发现了一个我无法理解的函数的奇怪行为。如果我们写:
def f(a):
def g():
print(eval('a'))
return g()
f(1)在这种情况下运行会产生NameError,声称a未定义。但是,如果我们定义
def f(a):
def g():
b = a + 1
print(eval('a'))
return g()
然后运行f(1)打印1。
局部和全局变量发生了一些我不太明白的事情。是a只在一个局部变量g(),当它被“拿来主义”的东西?这里发生了什么?
慕少森
呼啦一阵风
相关分类