如下代码:
x = "I am a global var"
def showMessage():
y = "y:I am a local var"
x = "100"
showMessage()
print x
print y
I am a global var
但报如下错误:
NameError: name 'y' is not defined,即y未被定义。
说明:x是全局变量,在函数中虽然定义了x同名变量,但变量的值100是对局部x的操作,所以print x 打印的仍是全局变量的值。
y是局部变量,所以在函数外打印是不能正确输出的,报未定义错误。
那么,如何实现全局变量在函数中可以改变值,且局部变量在函数外可以打印呢?
看如下代码:
x = "I am a global var"
def showMessage():
global y
y = "y:I am a local var"
global x
x = "100"
print x
showMessage()
print x
print y
结果如下:
I am a global var
100
y:I am a local var
在函数中,通过global强制转换x和y为全局变量,从而在函数外进行打印。
在showMessage函数调用之前x的值未变,调用之后进行了改变。