Python中的全局和局部变量的作用域是如何定义的?
发布时间:2023-06-15 03:37:40
在Python中,作用域是指变量可见或可访问的范围。Python中有两种变量作用域:全局作用域和局部作用域。
1. 全局作用域
在Python中,全局作用域是指定义在函数外部的变量,其拥有全局作用域,可以在程序的任何地方被引用和修改。一旦全局变量被定义,它将一直存在于程序的整个生命周期中。
全局变量与局部变量不同,全局变量可以在函数内部访问和修改,但是如果在函数内部使用赋值语句来修改全局变量,Python会将其视为局部变量,而不是修改全局变量:
x = 10 # 全局变量
def foo():
x = 5 # 局部变量
print("x in foo: ", x)
foo()
print("x outside foo: ", x)
输出:
x in foo: 5 x outside foo: 10
全局变量可以通过在函数中使用global关键字来进行访问和修改:
x = 10 # 全局变量
def foo():
global x
x = 5 # 修改全局变量
print("x in foo: ", x)
foo()
print("x outside foo: ", x) # 输出5
输出:
x in foo: 5 x outside foo: 5
2. 局部作用域
在Python中,局部作用域是指变量在函数内部定义,其作用域仅限于函数内部。函数参数也属于局部变量。
def foo():
x = 5 # 局部变量
print("x in foo: ", x)
foo()
输出:
x in foo: 5
在函数内部可以访问全局变量,但是如果自己定义了一个同名变量,则会被视为局部变量。例如:
x = 10 # 全局变量
def foo():
x = 5 # 局部变量,覆盖了全局变量
print("x in foo: ", x)
foo()
print("x outside foo: ", x) # 输出10
输出:
x in foo: 5 x outside foo: 10
如果想在函数内部访问全局变量,可以使用global关键字:
x = 10 # 全局变量
def foo():
global x
print("x in foo: ", x)
foo()
print("x outside foo: ", x) # 输出10
输出:
x in foo: 10 x outside foo: 10
总结:
Python中的作用域分为全局作用域和局部作用域,全局变量可以在程序的任何地方被引用和修改,而局部变量只能在函数内部被引用和修改。在函数内部如果要访问全局变量,可以使用global关键字声明。注意,如果在函数内部定义了与全局变量同名的局部变量,它将覆盖全局变量。
