看板 Python 關於我們 聯絡資訊
我弱弱的請教一下前輩 從app1.py看的出來 a 這變數有傳到function中 但為什麼app2.py 中 a=a+1 會顯示referenced before assignment呢? 程式如下 """ app1.py """ a = 1 def prt(): print(a) prt() # result:1 """/app1.py"""" """" app2.py"""" a = 1 def prt(): a = a + 1 # 新增上面那行 print(a) prt() # result: File "app2.py", line 4, in prt a = a+1 UnboundLocalError: local variable 'a' referenced before assignment """ /app2.py""" -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.224.227.115 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1588703294.A.54B.html
penut85420: 這個限制我也不太瞭解他的原理是什麼,但像第二份程 05/06 03:26
penut85420: 式碼這種要修改視域外變數的情況在開頭加上global a 05/06 03:26
penut85420: 就可以了,另外還有nonlocal這種關鍵字你可以研究看 05/06 03:26
penut85420: 看 05/06 03:26
olycats: 同樓上 可參考: https://bit.ly/3c7hIf1 05/06 03:33
penut85420: 感謝樓上,比較理解為什麼會有這樣的議題了 05/06 03:40
kobe8112: 建議先範圍了解變數的可視範圍 05/06 15:49
kobe8112: XXXX 05/06 15:49
明白了 感謝上面幾位大大! ※ 編輯: alfven (36.224.227.115 臺灣), 05/06/2020 20:55:01
yangs0618: 取用可以 要更改值有些type會有問題 05/07 10:45