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

Python自定义函数中局部变量和全局变量的使用区别及应用

发布时间:2023-06-14 13:21:54

Python中,变量分为全局变量和局部变量。在函数中定义的变量为局部变量,在函数外定义的变量为全局变量。两者的作用范围不同,使用方式也不同。

1. 局部变量

局部变量只能在函数内部使用,函数外部无法访问。当函数执行结束后,该变量的内存空间也会被释放掉。如下面的例子,x为局部变量,只能在函数内部使用。

def func():
    x = 10
    print(x)
 
func()    # 10
print(x)  # NameError: name 'x' is not defined

2. 全局变量

全局变量则可以在函数内部和外部使用。在函数内部使用全局变量时,需要在函数内部将其声明为global,否则会被认为是一个局部变量,无法修改全局变量的值。如下面的例子,x为全局变量,可以在函数内部和外部使用。

x = 10
 
def func():
    global x
    x = 20
    print(x)
 
func()    # 20
print(x)  # 20

3. 应用

局部变量和全局变量在使用时需要注意以下几点。

3.1、命名冲突

当局部变量和全局变量名称相同时,优先使用局部变量。如果需要在函数内部使用全局变量,需要使用global关键字进行声明。如下面的例子,函数内部的x为局部变量,函数外部的x为全局变量。

x = 10
 
def func():
    x = 20
    print(x)
 
func()    # 20
print(x)  # 10

3.2、修改全局变量

在函数内部修改全局变量时,需要使用global关键字进行声明。如果直接修改全局变量,会被认为是一个局部变量,不会修改全局变量的值。如下面的例子,需要使用global关键字将x声明为全局变量,才能修改其值。

x = 10
 
def func():
    global x
    x = 20
    print(x)
 
func()    # 20
print(x)  # 20

3.3、变量的作用范围

在函数内部定义的变量,只能在函数内部使用,函数外部无法访问。如下面的例子,y为局部变量,只能在函数内部使用。

def func():
    y = 30
    print(y)
 
func()    # 30
print(y)  # NameError: name 'y' is not defined

在函数外部定义的变量,可以在函数内部和外部使用,但是在函数内部修改时,需要使用global关键字进行声明。如下面的例子,x为全局变量,可以在函数内部和外部使用。

x = 10
 
def func():
    global x
    x = 20
    print(x)
 
func()    # 20
print(x)  # 20

总之,全局变量和局部变量各有应用场景,在编写Python自定义函数时,需要根据实际情况选择合适的变量类型。对于全局变量的修改,需要使用global关键字进行声明,否则全局变量不会被修改。而对于局部变量的使用,则需要在函数内部进行定义,避免命名冲突的产生。