def fn4():
x=1
print(x)
输出:NameError: name 'x' is not defined
这样会报错,在函数外是访问不了函数内部定义的变量的,因为当函数执行的时候回将函数里定义的变量储存到一个栈内,当函数执行结束就将栈清空,所以之后想要使用函数内定义变量是找不到的。
函数内部定义变量是局部变量,作用域是这个函数内
如果是全局变量,其作用域在这个文件内
如果要在函数里修改全局变量
def fn5():
n1=1000
print("1. n1=",n1)
n1=500
fn5()
print("2. n1=",n1)
输出:
- n1= 1000
- n1= 500
在函数内可以修改成功,可是在函数外,依然是原来的数字。原因:在函数内修改全局变量的时候,实际上是新创建了一个和全局变量同名的局部变量,将想要修改的值赋予这个局部变量,当函数执行完,局部变量被清除,原来的全局变量依然没有修改。
如果一定要在函数中修改全局变量,可以使用global
def fn5():
global n1
n1=1000
print("1. n1=",n1)
n1=500
fn5()
print("2. n1=",n1)
输出:
- n1= 1000
- n1= 1000