[問題] func外 令a=1, 但func中 a=a+1 卻出錯!?

看板Python作者 (王英丸)時間4年前 (2020/05/06 02:28), 4年前編輯推噓4(406)
留言10則, 4人參與, 4年前最新討論串1/1
我弱弱的請教一下前輩 從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

05/06 03:26, 4年前 , 1F
這個限制我也不太瞭解他的原理是什麼,但像第二份程
05/06 03:26, 1F

05/06 03:26, 4年前 , 2F
式碼這種要修改視域外變數的情況在開頭加上global a
05/06 03:26, 2F

05/06 03:26, 4年前 , 3F
就可以了,另外還有nonlocal這種關鍵字你可以研究看
05/06 03:26, 3F

05/06 03:26, 4年前 , 4F
05/06 03:26, 4F

05/06 03:33, 4年前 , 5F
同樓上 可參考: https://bit.ly/3c7hIf1
05/06 03:33, 5F

05/06 03:40, 4年前 , 6F
感謝樓上,比較理解為什麼會有這樣的議題了
05/06 03:40, 6F

05/06 15:49, 4年前 , 7F
建議先範圍了解變數的可視範圍
05/06 15:49, 7F

05/06 15:49, 4年前 , 8F
XXXX
05/06 15:49, 8F

05/06 15:51, 4年前 , 9F
明白了 感謝上面幾位大大! ※ 編輯: alfven (36.224.227.115 臺灣), 05/06/2020 20:55:01

05/07 10:45, 4年前 , 10F
取用可以 要更改值有些type會有問題
05/07 10:45, 10F
文章代碼(AID): #1UiR0-LB (Python)