[问题] 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