2

我初始化rate为全局变量:

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规则解释了这一点?

4

1 回答 1

3

您应该声明rate为全局:

import os, sys
rate=30

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


foo()

如果对 varint 进行了赋值(没有全局声明),则将其视为局部变量。

于 2013-09-01T14:21:53.990 回答