global var变为local --UnboundLocalError:赋值前引用的局部变量

时间:2013-09-01 14:21:05

标签: python

我将rate初始化为全局var:

import os, sys
rate=30

def foo():
    print('#########rate:', rate)
    if False:
        rate=int(sys.argv[2])


foo()

但是在运行脚本时,我收到以下错误:

Traceback (most recent call last):
  Line 10, in <module>
    foo()
  Line 5, in foo
    print('#########rate:', rate)
UnboundLocalError: local variable 'rate' referenced before assignment

虽然没有执行if False: rate=int(sys.argv[2])语句,但似乎有一些影响,是否有一些python规则解释了这个?

1 个答案:

答案 0 :(得分:3)

您应该将rate声明为全球:

import os, sys
rate=30

def foo():
    global rate # <----
    print('#########rate:', rate)
    if False:
        rate=int(sys.argv[2])


foo()

如果存在对varaint的赋值(没有全局声明),则将其视为局部变量。