作者alfven (王英丸)
看板Python
標題[問題] func外 令a=1, 但func中 a=a+1 卻出錯!?
時間Wed May 6 02:28:12 2020
我弱弱的請教一下前輩
從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
推 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