Python函数中的变量作用域:介绍Python函数中的局部变量和全局变量,并介绍在函数中修改全局变量的方法。
发布时间:2023-12-10 15:47:56
Python的函数中有局部变量和全局变量两种变量作用域。局部变量是在函数内部定义的变量,只在该函数内部有效;而全局变量则是在函数外部定义的变量,可以在整个程序中的任何地方使用。
局部变量在函数内部使用,作用范围仅限于函数体内。例如,在下面的例子中,变量x是函数func()的局部变量:
def func():
x = 10
print(x)
func() # 输出结果为10
print(x) # 报错,x is not defined
在上述例子中,变量x只在函数内部有效,当我们尝试在函数外部使用它时,就会出现"NameError: name 'x' is not defined"的错误。
与局部变量不同,全局变量在整个程序中都有效。我们可以在函数外部定义一个全局变量,并在函数内部使用它。例如:
x = 10 # 全局变量
def func():
print(x)
func() # 输出结果为10
print(x) # 输出结果为10
在这个例子中,变量x是全局变量,我们可以在函数内部访问和使用它。当我们在函数内部使用全局变量时,会先在函数内部查找是否有同名的局部变量,如果没有找到,则会使用全局变量。
当我们需要在函数内部修改全局变量时,需要使用global关键字声明该变量。例如:
x = 10
def func():
global x
x = 20
func()
print(x) # 输出结果为20
在这个例子中,我们使用global关键字声明了变量x是全局变量,在函数内部将x的值修改为20。在函数外部再次输出x的值时,我们可以看到x的值是被成功修改的。
需要注意的是,在函数内部,如果没有使用global关键字声明全局变量,而直接对全局变量进行赋值操作,会在函数内部创建一个同名的局部变量,而不会修改全局变量的值。
x = 10
def func():
x = 20
print(x)
func() # 输出结果为20
print(x) # 输出结果为10
在这个例子中,虽然我们在函数内部将x的值修改为20,但这里创建的是一个新的局部变量x,而不是修改了全局变量x的值。
总结起来,局部变量在函数内部有效,全局变量在整个程序中有效。在函数内部修改全局变量需要使用global关键字进行声明。对于全局变量的修改,我们可以通过使用global关键字声明并赋予新值来实现。
