我尝试在python 语句中声明两个函数。让我们称它们为f1()和f2()。
我发现当在某个函数中调用exec时,f2()对f1()是不可见的。但是,当、exec、和函数调用放在全局代码中时,就不会发生这种情况。
# Case 1: Working fine
code = """
def f1(): print "bar"
def f2(): f1()
"""
exec(code)
f2() # Prints "bar" as expected
# Case 2: Throws NameError: global name 'f1' is not defined
code = """
def f1(): print "bar"
def f2(): f1()
"""
def foo():
exec(code)
f2() # NameError
foo()
有人能给我解释一下如何避免这种NameError,让exec在函数中工作吗?
https://stackoverflow.com/questions/55763182
复制相似问题