簡體   English   中英

function 中的命令執行,名稱錯誤 - python3

[英]Command exec in a function, name error - python3

我是 Python 的初學者,我遇到了一個我無法理解的問題。 我試圖用 exec() 定義一個變量,然后打印它。 它運作良好。 但是當我在 function 中執行相同的代碼時,它不起作用......

例子:

def fonct():
    possibilite = [0,1,2,3]
    testc = 0
    testl = 1
    commande = "proba"+str(testc+1)+str(testl)+" = possibilite"
    exec(commande)
    print(commande)
    print(proba11)

同樣的事情,但不是在 function 有結果,命令 print(proba11) 返回 [0,1,2,3] 所以它工作。 但對於這個例子,我得到了這個:

proba11 = possibilite
NameError: name 'proba11' is not defined

沒有關於全球人或本地人的故事,一切都是本地人......

由於局部變量的存儲方式,在 Python 3 中使用exec()更新局部變量很棘手。 它曾經在 Python 2.7 及更早版本中工作。

要解決此問題,您需要

  • 將顯式locals字典傳遞給exec
  • 從更新的本地字典中獲取新定義的變量

像這樣:

def fonct():
    possibilite = [0, 1, 2, 3]
    testc = 0
    testl = 1
    varname = "proba" + str(testc + 1) + str(testl)
    commande = varname + " = possibilite"
    _locals = locals()
    exec(commande, globals(), _locals)
    proba11 = _locals[varname]
    print(proba11)

哪個按預期工作。

你可以在這里讀更多關於它的內容:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM