我将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规则对此进行了说明?

最佳答案

您应该将rate声明为全局:

import os, sys
rate=30

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


foo()

如果分配了一个变量(没有全局声明),则将其视为局部变量。

关于python - 全局变量变为局部--UnboundLocalError:分配前引用了局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18559320/

10-12 23:05