4. UnboundLocalError

#!/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()

 

posted @ 2018-03-23 11:15  芝麻芝麻  阅读(198)  评论(0编辑  收藏  举报