是什么拉姆达和常规功能之间蟒蛇的区别?(what is the difference for pyt

2019-06-18 00:57发布

我很好奇的区别lambda函数和常规函数(定义def ) -在蟒蛇的水平。 (我知道什么是程序员,以及何时使用每个人的差异。)

>>> def a():
    return 1

>>> b = lambda: 1
>>> a
<function a at 0x0000000004036F98>
>>> b
<function <lambda> at 0x0000000004031588>

正如我们看到的-蟒蛇知道 b是一个lambda功能, a是有规律的功能。 这是为什么? 就是到Python它们之间的区别?

Answer 1:

他们是同一类型,因此它们以相同方式处理:

>>> type(a)
<type 'function'>
>>> type(b)
<type 'function'>

蟒蛇也知道b被定义为一个lambda函数,并将它设置,作为函数名称:

>>> a.func_name
'a'
>>> b.func_name
'<lambda>'

换句话说,它影响该功能会得到,但据Python的来讲,都是功能,这意味着他们可以以同样的方式被大多使用的名称。 见下面mgilson的意见,关于酸洗功能和lambda函数之间的一个重要区别。



Answer 2:

唯一的区别是,(a)中的λ的主体可以仅由一个单一的表达,其结果是从所创建的功能,并返回(b)的一个lambda表达式是将计算得到一个功能对象的表达式,而def语句没有价值,并创建一个函数对象,并将其绑定到一个名称。

在其他所有重大方面它们导致相同的对象 - 在同一范围和捕获规则。 (非物质的区别是, lambda -created函数都有一个默认func_name"<lambda>"在深奥情况下这可能会影响操作。 -例如试图酸洗函数)。



Answer 3:

lambda创建匿名函数。 这个想法已经采取了从函数式编程语言。 通过这种方式,你可以创建和传递功能,像其他功能mapfilter 。 (看这里 )
你可以通过正常的功能,这些功能太多,但因为他们大多是简单,他们已经不能用于其他地方,它通过对definfing新功能的全过程不方便。

作为一个例子来看看这个:

>>> a = [1, 2, 3, 4]
>>> print map( lambda x : x*2 + 1, a )
[3, 5, 7, 9, 11]


Answer 4:

LAMBDA是一个内联函数,我们可以做任何功能,而函数名。 当我们用它作为参数传递给高阶函数是有帮助的。 例如:一个使用其他函数作为参数的函数。

函数定义的实施例:

>>> def func(a, b):
    return a * b

>>> func(2,3)
6
>>> type(func)
<class 'function'>
>>> func
<function func at 0x034B6E88>

Lambda表达式的例子:

>>> multiply = lambda a, b: a * b
>>> multiply(2, 3)
6
>>> type(multiply)
<class 'function'>
>>> multiply
<function <lambda> at 0x034B6ED0>

这两个返回相同的输出值。 只有返回的对象是不同的。 “功能”名称功能和LAMBDA。



文章来源: what is the difference for python between lambda and regular function?
标签: python lambda