zoukankan      html  css  js  c++  java
  • local variable 'xxx' referenced before assignment

             
    a=3
    def t2():
        print "ggg"
        print a
        a=4
    
    def t3(vv):
        if vv:
            a=4
        else:
            print "haha"
        return a
    
    t2()
    t3(0)#虽然t3(1)不会报错,但是这个函数已经失去了判断的意义了,因为我们要的是不管判断语句执行哪一句都不会报错。

     以上两个函数报的错误全是,本地变量在未分配前引用了

    调用这个函数时,Python解释器会先生成命名空间。当发现有条语句对a进行了赋值操作,pytgon就认为这个a是局部变量,就会把a这个变量添加到自己的局部命名空间。任何变量,都要先赋值然后才能引用,否则报错。就像下面这个

    print (sss)
    sss=32

    当然了,可以事先加global关键字声明函数内的变量是全局变量

    关于局部变量的说明,请见https://www.cnblogs.com/windlaughing/archive/2013/05/26/3100362.html

  • 相关阅读:
    python-历史
    10-函数命名空间,作用域,嵌套,闭包
    centos7 搭建dns服务器
    centos7 搭建dhcp服务器
    Nginx 启用 gzip 压缩
    Eclipse 个人手册
    Nginx 命令
    定时任务
    系统设计
    根据 xsd 生成 jaxb java 类
  • 原文地址:https://www.cnblogs.com/saolv/p/8988838.html
Copyright © 2011-2022 走看看