当在lambda表达式中引用局部变量时,该变量会被捕获。捕获的局部变量可以在lambda表达式中使用,即使在定义lambda表达式的作用域之外。
以下是一个示例,展示了如何在lambda表达式中捕获局部变量:
def outer_function():
message = 'Hello'
def inner_function():
name = 'Alice'
print(message) # 在lambda表达式之前使用局部变量
greeting = lambda: print(f'{message}, {name}!') # 捕获message和name变量
greeting() # 调用lambda表达式
inner_function()
outer_function()
在上面的示例中,message
和name
是局部变量。当lambda表达式greeting
被定义时,它捕获了message
和name
变量。在调用lambda表达式时,它可以访问和使用这些变量。
运行以上代码会输出:
Hello
Hello, Alice!
注意,被lambda表达式捕获的局部变量在lambda表达式定义时被确定,并且在之后的修改不会影响到lambda表达式中的变量值。