我将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规则解释了这个?
答案 0 :(得分:3)
您应该将rate
声明为全球:
import os, sys
rate=30
def foo():
global rate # <----
print('#########rate:', rate)
if False:
rate=int(sys.argv[2])
foo()
如果存在对varaint的赋值(没有全局声明),则将其视为局部变量。