变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment

 1 class Battery():
 2     """一次模拟电动汽车电瓶的简单尝试"""
 3     def __init__(self,battery_size=70):
 4         self.battery_size = battery_size
 5         # self.range =range
 6     def describe_battery(self):
 7         print(self.battery_size)
 8
 9     def get_range(self):
10         print("battery_size是"+str(self.battery_size))
11         # range = 300
12         if self.battery_size == 80:
13                 range = 240
14         elif self.battery_size == 85:
15                 range = 270
16         # print("这里公布剩余里程"+str(rang))
17         message = "this car can go " + str(range)
18         print(message)

执行上述函数的时候,会报错 UnboundLocalError: local variable ‘range‘ referenced before assignment
意思是,还没在定义前就调用报错,怀疑是range作用域的问题
起初的想法是第一个解决办法,是把range的作用域变大,直接放大到class级别,在__init__中就声明,如下:
 def __init__(self,battery_size=70,range=200):
        self.battery_size = battery_size
        self.range =range

这样在调用的时候,就成功了,但疑问仍然存在,是作用域的原因,非要全局作用域吗

第二个解决办法的思路,案例中range的作用域在def范围内,但是为什么写在了if中,却没有实例化呢。if不会改变量的作用域,
除非是条件没有满足,未执行到初始化...事实确实如此
battery_size条件是80或者85,但是此时battery_size是70
条件都没有满足,所以就没有声明

解决办法:def 域内,if条件外声明变量range,比如这样
 def get_range(self):
        print("battery_size是"+str(self.battery_size))
        range = 300
        if self.battery_size == 80:
                range = 240
        elif self.battery_size == 85:
                range = 270
        # print("这里公布剩余里程"+str(rang))
        message = "this car can go " + str(range)
        print(message)

变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment

时间: 2024-10-09 23:22:26

变量引用的错误:UnboundLocalError: local variable 'range' referenced before assignment的相关文章

全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment

总结: 内部函数,不修改全局变量可以访问全局变量 内部函数,修改同名全局变量,则python会认为它是一个局部变量 在内部函数修改同名全局变量之前调用变量名称(如print sum),则引发Unbound-LocalError 在程序中设置的sum属于全局变量,而在函数中没有sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEE

UnboundLocalError: local variable 'a' referenced before assignment

首先,上一段代码: 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'. 那么问题来,这是个闭包函数,为啥不能引用本地

【python】UnboundLocalError: local variable 'counter' referenced before assignment

http://passport.baidu.com/?business&un=%E4%BA%91%E9%BE%99%E5%8E%BF%5F%E5%B0%8F%E5%A7%90%5F%E6%89%BE#0 http://passport.baidu.com/?business&un=%E6%89%BE%5F%E6%B4%B1%E6%BA%90%E5%8E%BF%5F%E7%BE%8E%E5%A5%B3#0 http://passport.baidu.com/?business&un=

全局变量报错:UnboundLocalError: local variable 'xxxxx' referenced before assignment

daibuchong 参考:http://blog.csdn.net/my2010sam/article/details/17735159 http://blog.csdn.net/onlyanyz/article/details/45009697 http://blog.csdn.net/magictong/article/details/4464024 全局变量报错:UnboundLocalError: local variable 'xxxxx' referenced before ass

python的UnboundLocalError: local variable 'xxx' referenced before assignment

一.意思: 本地变量xxx引用前没定义. 二.错误原因 在于python没有变量的声明 , 所以它通过一个简单的规则找出变量的范围 :如果有一个函数内部的变量赋值 ,该变量被认为是本地的,所以如果有修改变量的值就会变成局部变量. 三.产生这个错误的场景 python代码:val=9def test(flag):      if flag:          val = 1      else:          print 'fuck'      return val test(0)错误提示:U

python: local variable 'xxx' referenced before assignment

问题发现 xxx = 23 def PrintFileName(strFileName): if xxx == 23: print strFileName xxx = 24 PrintFileName("file") 报错 Traceback (most recent call last): File "C:/Users/Desktop/del.py", line 7, in <module> PrintFileName("file"

Python | local variable &#39;xxxx&#39; referenced before assignment

>>> def func(num): ... def func_in(): ... num += 1 ... print(num) ... return func_in ... >>> fun = func(10) >>> fun <function func.<locals>.func_in at 0x1034410d0> >>> fun() Traceback (most recent call last)

python 错误--UnboundLocalError: local variable &#39;**&#39; referenced before assignment

昨日想在python的一个函数中做一下发送次数的统计,需要用到全局变量,如下 1 COUNT = 0 2 3 def sendOneLineMsg(producer, listFromLine): 4 acSNStr = listFromLine[0] 5 macStr = listFromLine[1] 6 onlineTimeStr = listFromLine[2] 7 msg = {'clientMAC' : macStr, 'acSN' : acSNStr, 'onLineTime'

遇到local variable &#39;e&#39; referenced before assignment这样的问题应该如何解决

问题:程序报错:local variable 'e' referenced before assignment 解决:遇到这样的问题,说明你在声明变量e之前就已经对其进行了调用,定位到错误的地方,对变量进行重新的声明 通常这样的问题对于python的程序员来说都是因为习惯了python2的语法,转移到python3中时,出现的错误.在Python3中,异常对象无法在异常块作用域外访问.(原因是在垃圾收集器运行且从内存中清理引用之前会在内存栈帧中保存一个引用周期)通常参考下面这个例子来做异常处理: