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

作者: alfven (馮小丸)   2020-05-06 02:28:12
我弱弱的請教一下前輩
從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"""
作者: penut85420 (PenutGGorz)   2020-05-06 03:26:00
這個限制我也不太瞭解他的原理是什麼,但像第二份程式碼這種要修改視域外變數的情況在開頭加上global a就可以了,另外還有nonlocal這種關鍵字你可以研究看看
作者: olycats ( )   2020-05-06 03:33:00
同樓上 可參考: https://bit.ly/3c7hIf1
作者: penut85420 (PenutGGorz)   2020-05-06 03:40:00
感謝樓上,比較理解為什麼會有這樣的議題了
作者: kobe8112 (小B)   2020-05-06 15:49:00
建議先範圍了解變數的可視範圍XXXXhttps://openhome.cc/Gossip/Python/VariableScope.html
作者: yangs0618 (阿彰)   2020-05-07 10:45:00
取用可以 要更改值有些type會有問題

Links booklink

Contact Us: admin [ a t ] ucptt.com