【发布时间】:2021-12-05 13:48:08
【问题描述】:
我的问题与以下代码示例有关:示例 1 工作正常,而示例 2 失败。
# example 1
string_one = 'greeting_one = "hello"'
exec(string_one)
print(greeting_one)
# example 2
def example_function():
string_two = 'greeting_two = "hi"'
exec(string_two)
print(greeting_two)
example_function()
示例 1 在全局范围内创建变量,示例 2 应在本地范围内创建变量,否则这两个应该相同 (?)。相反,示例 2 给出了以下错误:name 'greeting_two' is not defined。为什么 exec() 没有像示例 2 中那样缩进?
【问题讨论】:
-
docs 向您发出警告:“注意:默认本地变量的行为与以下函数 locals() 的描述相同:不应尝试修改默认的本地字典。”
-
感谢您的回复。我现在首先将 greeting_two 设为全局变量,但错误仍然存在。有没有办法获得与示例 2 中的示例 1 相同的行为?
标签: python function scope global-variables local-variables