【发布时间】:2011-08-12 22:49:48
【问题描述】:
我写了一个如下所示的测试程序:
#!/usr/bin/python
def incrementc():
c = c + 1
def main():
c = 5
incrementc()
main()
print c
我认为既然我在 main 的主体中调用了 incrementc,那么 main 中的所有变量都会传递给 incrementc。但是当我运行这个程序时,我得到了
Traceback (most recent call last):
File "test.py", line 10, in <module>
main()
File "test.py", line 8, in main
incrementc()
File "test.py", line 4, in incrementc
c = c + 1
UnboundLocalError: local variable 'c' referenced before assignment
为什么 c 没有通过?如果我想让一个变量被多个函数引用,我是否必须全局声明它?我在某处读到全局变量不好。
谢谢!
【问题讨论】:
-
全局变量绝对不错,如果使用得当,它不应该成为测试程序的一个大问题:)
-
你不是第一个[问这个问题][1]的人。 [1]:stackoverflow.com/questions/423379/…