在Python中,全局变量和局部变量是两种不同的变量作用域。全局变量是在整个程序中都可访问的变量,而局部变量只在特定的代码块或函数中可访问。
奇怪行为:
在Python中,当全局变量和局部变量同名时,会出现一些奇怪的行为。具体来说,当在一个函数内部使用同名变量时,Python会将其视为局部变量,而不是全局变量。这意味着在函数内部对该变量的修改不会影响到全局变量的值。
示例代码:
x = 10 # 全局变量
def func():
x = 20 # 局部变量
print("局部变量 x =", x)
func()
print("全局变量 x =", x)
输出结果:
局部变量 x = 20
全局变量 x = 10
在上述代码中,我们定义了一个全局变量x,并在函数func()
内部定义了一个同名的局部变量x。当我们在函数内部打印局部变量x时,输出的值为20。然而,在函数外部打印全局变量x时,输出的值为10,没有受到函数内部的修改影响。
这种奇怪的行为是因为Python在函数内部会创建一个新的局部命名空间,用于存储函数内部的变量。当函数内部存在同名变量时,Python会优先使用局部变量,而不是全局变量。
为了在函数内部修改全局变量的值,我们可以使用global
关键字来声明变量为全局变量。示例代码如下:
x = 10 # 全局变量
def func():
global x # 声明x为全局变量
x = 20 # 修改全局变量的值
print("全局变量 x =", x)
func()
print("全局变量 x =", x)
输出结果:
全局变量 x = 20
全局变量 x = 20
在上述代码中,我们使用global
关键字声明了变量x为全局变量,并在函数内部修改了其值。当我们在函数内部和外部打印全局变量x时,输出的值都为20,说明全局变量的值已经被成功修改。
总结:
Python中的全局变量和局部变量有不同的作用域。当在函数内部使用同名变量时,Python会将其视为局部变量,而不是全局变量。为了在函数内部修改全局变量的值,可以使用global
关键字声明变量为全局变量。
领取专属 10元无门槛券
手把手带您无忧上云