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

Python变量的局部与全局作用域

发布时间:2023-07-04 11:06:57

Python中变量的作用域是指变量能够被访问的范围。Python中有两种作用域:局部作用域和全局作用域。

局部作用域是指在函数内部定义的变量,只能在其所在的函数内部访问。在函数外部无法访问这些变量。当函数执行完成后,局部作用域中的变量也会被销毁。例如:

def my_function():
    x = 10
    print(x)

my_function()
print(x) # 报错,x在函数外部不可访问

在上面的代码中,变量x是在函数内部定义的,它的作用域只限于函数内部。函数执行时会打印出x的值,但在函数外部尝试访问x时会报错。

在函数中,也可以使用global关键字将变量声明为全局变量。全局变量是在函数外部定义的变量,它可以在全局范围内被访问。当在函数内部使用该变量时,Python会优先在函数内部查找该变量的值。如果没有找到,则会查找全局作用域中是否有同名的变量。例如:

x = 10

def my_function():
    global x  # 使用global关键字将x声明为全局变量
    x += 5
    print(x)

my_function()
print(x) # 打印15

在上面的代码中,函数内部对全局变量x进行了修改,然后打印出了修改后的值。在函数外部也可以访问到修改后的值。

虽然可以使用global关键字在函数内部访问和修改全局变量,但是在函数内部如果直接对全局变量进行赋值,Python会认为这是一个新的局部变量,而不是修改原有的全局变量。例如:

x = 10

def my_function():
    x = 5
    print(x)

my_function()
print(x) # 打印10

在上面的代码中,函数内部对x进行了赋值操作,但是这并不会修改全局变量x的值,而是定义了一个新的局部变量x并赋值为5。在函数内部打印x时,会打印出局部变量x的值,而不是全局变量x的值。

总之,Python中的变量作用域有两种:局部作用域和全局作用域。局部作用域是在函数内部定义的变量,只能在其所在的函数内部访问。全局作用域是在函数外部定义的变量,可以在全局范围内被访问。可以使用global关键字将变量声明为全局变量,在函数内部访问和修改全局变量。但是在函数内部如果直接对全局变量进行赋值,Python会认为这是一个新的局部变量。