#!/usr/bin/python3 #-*- coding:utf-8 -*- import time localTime = 120 def getTime(): strTime = time.time() n = 1 while n < 5: time.sleep(1) n += 1 bTime = time.time() - strTime + localTime print("bTime is %d" % bTime) localTime = localTime - 10 print("lobalTime is %d" % localTime) getTime()
ubuntu@ubuntu:~$ python3 boundError.py
Traceback (most recent call last):
File "boundError.py", line 18, in <module>
getTime()
File "boundError.py", line 13, in getTime
bTime = time.time() - strTime + localTime
UnboundLocalError: local variable 'localTime' referenced before assignment
上面的例子中lobalTime变量为全局变量,但是在getTime函数中不仅仅进行了引用,还对他的值进行了修改“localTime = localTime - 10”,
所以python3会判定localTime为局部变量,从而导致出现如上错误,修改后结果如下,函数开始行加入global:
#!/usr/bin/python3 #-*- coding:utf-8 -*- import time localTime = 120 def getTime(): global localTime strTime = time.time() n = 1 while n < 5: time.sleep(1) n += 1 bTime = time.time() - strTime + localTime print("bTime is %d" % bTime) localTime = localTime - 10 print("lobalTime is %d" % localTime) getTime()