UnboundLocalError: local variable 'c' referenced before assignment

来源:互联网 发布:ipad达芬奇调色软件 编辑:程序博客网 时间:2024/05/01 07:22

问题代码:

def outer():    c = 0    def inner():        c += 1        print 'inner'        print c    print 'outer'    return inner()outer()

报错:

UnboundLocalError: local variable 'c' referenced before assignment

解决方法:
1.python2.7使用global

c = 0def outer():    def inner():        global c            # python2.7使用global        c += 1        print 'inner'        print c    print 'outer'    return inner()outer()outer()outer()

输出:

outerinner1outerinner2outerinner3

2.python3使用nonlocal

def outer():    c = 0    def inner():        nonlocal c          # python3使用nonlocal        c += 1        print ('inner')        print (c)    print ('outer')    return inner()outer()outer()outer()

参考:https://www.cnblogs.com/thinking-jxj/p/7681415.html

另外,

def outer():    c = 0    def inner():        print 'inner'        print c             # 直接访问不修改值,不报错    print 'outer'    return inner()outer()outer()outer()

输出:

outerinner0outerinner0outerinner0
阅读全文
0 0