這個問題在這里已經有了答案: exec() 在函式 python3.x 中不起作用 (4 個回答) 昨天關閉。
我的問題涉及以下代碼示例:示例 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 中的縮進那樣作業?
uj5u.com熱心網友回復:
將當前區域作用域傳遞給函式,并將其用作exec().
# example 2
def example_function(loc):
string_two = 'greeting_two = "hi"'
exec(string_two, loc)
print(greeting_two)
example_function(locals())
在這里閱讀更多
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376178.html
