qingkuangs 发表于 2015-4-24 07:44:40

python local variable 'xxx' referenced before assignment

代码

1 # -*- coding:utf-8 -*-
2import sys
3
4def ms_fun():
5   obj = 3
6   def ms_k():
7         ifobj is not 4:
8             obj = 4
9             print(obj)
10   ms_k()
11
12if __name__ == '__main__':
13   ms_fun()  上述代码会抛出 UnboundLocalError:local variable 'obj' referenced before assignment 的异常

代码

# -*- coding:utf-8 -*-
import sys
def ms_fun():
    obj = 3
    def ms_k():
      #global obj
      ifobj is not 4:
            global obj
            obj = 4
            print(obj)
    ms_k()
if __name__ == '__main__':
    ms_fun()  上述代码会抛出NameError: global name 'obj' is not defined
  总结一下:如果你和我一样,熟悉javascript的语法,并且刚开始接触python.那么你很容易受javascript的语法 ,陷入习惯性思维误区.python的语法更灵活多变,甚至有些诡异.
  如果内部函数有引用外部函数的同名变量,并且对这个变量有修改.那么python会认为它是一个局部变量.可以这样改

代码

# -*- coding:utf-8 -*-
import sys
obj = 3
def ms_fun():
    def ms_k():
      global obj
      if obj is not 4:
            obj = 4
            print(obj)
    ms_k()
if __name__ == '__main__':
    ms_fun()
页: [1]
查看完整版本: python local variable 'xxx' referenced before assignment