Python中的“lambda绑定”是什么?

10 投票
3 回答
6298 浏览
提问于 2025-04-11 09:27

我知道Python中的lambda函数是什么,但我在查找Python文档时找不到“lambda绑定”的意思。 如果能提供一个相关的链接就太好了。 如果能有一个简单易懂的例子就更好了。 谢谢。

3 个回答

1

你在哪里见过这个词?

在Python中,“绑定”通常指的是一个变量名指向某个特定对象的过程,这个过程可以通过赋值、参数传递或其他方式来实现,比如:

a = dict(foo="bar", zip="zap", zig="zag") # binds a to a newly-created dict object
b = a # binds b to that same dictionary

def crunch(param):
  print param

crunch(a) # binds the parameter "param" in the function crunch to that same dict again

所以我猜“lambda绑定”是指把一个lambda函数绑定到一个变量名上,或者把它的命名参数绑定到特定对象上?在语言参考中有一个关于绑定的不错解释,可以在这里找到:http://docs.python.org/ref/naming.html

8

我之前没听过这个词,不过可以这样理解:这是一个“默认参数”的技巧,用来直接给一个函数的参数赋值。下面是Swati的例子:

def foo(x): 
    a = lambda x=x: x 
    x = 7 
    b = lambda: x 
    return a,b

aa, bb = foo(4)
aa() # Prints 4
bb() # Prints 7
14

首先,给大家一个大概念:

当一个程序或函数被执行时,当前的参数值会被保存(在一个叫做“栈”的地方),在这个语句的作用范围内,这些参数会和实际传入的值绑定在一起。当这个语句执行完毕后,之前的参数值会被恢复。这个过程是完全可以递归的。如果在语句的内部做了一些事情,导致这些参数又绑定到新的值上,lambda绑定的机制会确保这一切都是有序进行的。

现在,这里有一个很好的Python示例

“...对于x来说,只有一个绑定:执行x = 7只是改变了原有绑定中的值。这就是为什么

def foo(x): 
   a = lambda: x 
   x = 7 
   b = lambda: x 
   return a,b

返回两个都返回7的函数;如果在x = 7之后有了新的绑定,这两个函数就会返回不同的值【当然,前提是你不调用foo(7),还假设有嵌套作用域】....”

撰写回答