如果要在函数内部,更改外部变量的值,必须先用global
声明该变量为外部变量
否则仍然为局部变量,这种情况下,如果赋值语句之前引用了该变量,就会报错,说你的变量在未定义之前就引用了
c = 4
# 正常,使用global 声明c为外部变量,可以更改外部变量的值
def p():
global c # 声明c为外部变量
if c > 0:
c = 5 # 这里对c进行了赋值,如果事先没有声明global c 那么c就被定义为局部变量,那么在运行时,c>0 这个语句就会报错没有定义
print(c)
p()
#报错,变量为定义
# def p1():
# # global c
# if c > 0:
# c = 5 # 这里对c进行了赋值,如果事先没有声明global c 那么c就被定义为局部变量,那么在运行时,c>0 这个语句就会报错没有定义
# print(c)
#
#
# p1()
# 不报错,c为与外边变量同名的局部变量而已
def p2():
# global c
# if c > 0:
c = 5 # 这里对c进行了赋值,如果事先没有声明global c 那么c就被定义为局部变量,那么在运行时,c>0 这个语句就会报错没有定义
print(c)
p2()
# 正确,只是访问外部变量而已,c的值为外部变量的值
def p3():
# global c
# if c > 0:
# c = 5 # 这里对c进行了赋值,如果事先没有声明global c 那么c就被定义为局部变量,那么在运行时,c>0 这个语句就会报错没有定义
print(c)
p3()