作者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://webptt.com/cn.aspx?n=bbs/Python/M.1588703294.A.54B.html
1F:推 penut85420: 这个限制我也不太了解他的原理是什麽,但像第二份程 05/06 03:26
2F:→ penut85420: 式码这种要修改视域外变数的情况在开头加上global a 05/06 03:26
3F:→ penut85420: 就可以了,另外还有nonlocal这种关键字你可以研究看 05/06 03:26
4F:→ penut85420: 看 05/06 03:26
6F:推 penut85420: 感谢楼上,比较理解为什麽会有这样的议题了 05/06 03:40
7F:→ kobe8112: 建议先范围了解变数的可视范围 05/06 15:49
8F:→ kobe8112: XXXX 05/06 15:49
明白了 感谢上面几位大大!
※ 编辑: alfven (36.224.227.115 台湾), 05/06/2020 20:55:01
10F:推 yangs0618: 取用可以 要更改值有些type会有问题 05/07 10:45