num = 100
def func():
num = 123
print(num)
func()
此时的num为局部变量。输出123
num = 100
def func():
num+ = 123
print(num)
func()
此时报错,因为局部变量没有被初始化。
num = 100
def func():
x = num + 100
print x
func()
此时输出200
总结:当num在=的后面出现时,且被定义为全局变量,那就会先去局部找,找不到再去全局找。如果num在=前面出现为赋值语句。当num同时出现时,num为局部变量,num在左边定义了,但是还没有赋值就在右边被使用了,所以会报错。