描述
global best_pec1
def main():
...
best_prec1 = 1
train()
...
def train():
print(best_prec1)
报错: best_prec1没有定义。
原因:当函数中定义同名的局部变量时,原来定义的全局变量会被局部变量覆盖掉。因此train()
中就不再有变量best_prec1
。
定义的表现形式为
variable = xx
, 即变量名字在等号左边。赋值也是这个格式,所以会容易产生上述错误,在赋值时被错误地当成定义。
正确用法
- 函数中直接使用全局变量
def main():
# best_prec1仍旧是全局变零,将其值直接赋给了a,也并没有改变best_prec1的值。
a = best_prec1
- 函数中为全局变量赋值时,加上
global
,使得不被覆盖成局部变量。
def main():
# 加上关键字global,best_prec1仍旧是全局变量,不会被覆盖。
global best_prec1
best_prec1 = 3
...
train()
...
def train():
print(best_prec1)