码迷,mamicode.com
首页 > 其他好文 > 详细

UnboundLocalError: local variable 'a' referenced before assignment

时间:2020-01-23 19:49:45      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:本地变量   int   ble   运行   local   code   oca   error   sig   

首先,上一段代码:

1 def out():
2     a=1
3     def inner():
4         a+=1
5         print(a)
6     return inner
7 func = out()
8 func()

初略看上去没有什么问题,运行之后报错:UnboundLocalError: local variable ‘a‘ referenced before assignment 翻译成中文:UnboundLocalError:在赋值之前引用的本地变量‘a‘。

  那么问题来,这是个闭包函数,为啥不能引用本地的变量‘a‘呢?

  a+=1 => a=a+1

  也就是说,在给a赋值的时候,a已经被应用了,再引用a加1时,是重复引用,所以报错。

再上一段代码:

def out():
    a=1
    def inner():
        b=a+1
        print(b)
    return inner
func = out()
func()

如果你有幸看到这篇博客,请点个赞!

UnboundLocalError: local variable 'a' referenced before assignment

标签:本地变量   int   ble   运行   local   code   oca   error   sig   

原文地址:https://www.cnblogs.com/youhongliang/p/12231007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!