您的位置:

Python关键字:global、nonlocal、lambda的用法和区别

一、global关键字

1、全局变量的定义与使用

x = 10 # 全局变量x

def test():
    print(x) # 函数内部访问全局变量

test() # 输出10

2、修改全局变量

x = 10 # 全局变量x

def test():
    global x # 使用global声明x为全局变量
    x = 20 # 修改全局变量x
    print(x)

test() # 输出20
print(x) # 输出20

3、注意事项

在函数内部使用global声明变量为全局变量后,不能直接对变量进行赋值,因为会被视为新的局部变量。必须使用赋值语句才能对全局变量进行修改。

二、nonlocal关键字

1、外层函数变量的使用

def outer():
    x = 10 # 外层函数变量x

    def inner():
        print(x) # 内层函数访问外层函数变量

    inner()

outer() # 输出10

2、修改外层函数变量

def outer():
    x = 10 # 外层函数变量x

    def inner():
        nonlocal x # 使用nonlocal声明上一级变量
        x = 20 # 修改外层函数变量x
        print(x)

    inner()
    print(x)

outer() # 输出20和20

3、注意事项

使用nonlocal声明变量为上一级函数中的变量后,不能对该变量进行赋值,因为会被视为新的局部变量。必须使用赋值语句才能对外层函数变量进行修改。

三、lambda关键字

1、lambda函数的简单定义

# 定义一个加法函数
def add(x, y):
    return x + y

# 使用lambda定义同样的加法函数
add_lambda = lambda x, y: x + y

print(add(1, 2)) # 输出3
print(add_lambda(1, 2)) # 输出3

2、lambda函数的应用

# 使用lambda函数作为参数排序
a = [(1, 2), (4, 1), (3, 4)]
a.sort(key=lambda x: x[1]) # 根据元组中的第二个元素进行排序
print(a) # 输出[(4, 1), (1, 2), (3, 4)]

3、注意事项

lambda函数适用于简单的函数定义,如果需要较为复杂的函数,仍需使用def语句进行定义。