首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在函数内部调用exec()时会有不同的工作方式,以及如何避免这种情况

为什么在函数内部调用exec()时会有不同的工作方式,以及如何避免这种情况
EN

Stack Overflow用户
提问于 2019-04-19 22:10:32
回答 2查看 89关注 0票数 4

我尝试在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在函数中工作吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55763182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档