我很好奇python级别的lambda
函数和正则函数(用def
定义)之间的区别。(我知道程序员和何时使用每一个程序有什么不同。)
>>> def a():
return 1
>>> b = lambda: 1
>>> a
<function a at 0x0000000004036F98>
>>> b
<function <lambda> at 0x0000000004031588>
我们可以看到-python知道b
是一个lambda
函数,而a
是一个正则函数。为什么?它们与python的区别是什么?
Tags:
lambda
创建匿名函数。这个想法是从函数式编程语言中提取出来的。通过这种方式,您可以创建函数并将其传递给其他函数,如map
和filter
。(看here)您也可以将正常函数传递给这些函数,但由于它们大多很简单,而且它们没有在其他地方使用过,因此不方便传递到定义新函数的整个过程。
举个例子,看看这个:
唯一的区别是(a)lambda的主体只能由一个表达式组成,其结果是从创建的函数返回的,(b)a
lambda
表达式是一个计算为函数对象的表达式,而adef
语句没有值,并创建一个函数对象并将其绑定到一个名称。在所有其他重要方面,它们会产生相同的对象—应用相同的范围和捕获规则。(无形的区别在于,}。这可能会影响深奥情况下的操作,例如尝试pickle函数)。
lambda
创建的函数有一个默认的func_name
它们属于同一类型,因此它们的处理方式相同:
Python还知道
b
被定义为lambda函数,并将其设置为函数名:换言之,它会影响函数的名称,但就Python而言,这两个函数都是函数,这意味着它们大多可以以相同的方式使用。有关pickling函数和lambda函数之间的重要区别,请参见下面的mgilson注释。
相关问题 更多 >
编程相关推荐