欢迎访问宙启技术站
智能推送

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关键字声明。注意,如果在函数内部定义了与全局变量同名的局部变量,它将覆盖全局变量。