问题代码:
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 = 0
def outer():
def inner():
global c # python2.7使用global
c += 1
print 'inner'
print c
print 'outer'
return inner()
outer()
outer()
outer()
输出:
outer
inner
1
outer
inner
2
outer
inner
3
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()
输出:
outer
inner
0
outer
inner
0
outer
inner
0
本文介绍了如何解决Python中因在嵌套函数内修改外部变量而引发的UnboundLocalError异常。通过示例代码展示了在Python 2.7及Python 3中使用global和nonlocal关键字来正确地修改外部作用域内的变量。
3135

被折叠的 条评论
为什么被折叠?



