我很好奇lambda函数和常规函数(定义为def)之间的区别- 在python级别.(我知道程序员和使用每个程序员的区别是什么.)
>>> def a():
return 1
>>> b = lambda: 1
>>> a
<function a at 0x0000000004036F98>
>>> b
<function <lambda> at 0x0000000004031588>
Run Code Online (Sandbox Code Playgroud)
我们可以看到 - python 知道这b是一个lambda函数,并且a是一个常规函数.这是为什么?他们和python有什么区别?
Sim*_*ser 31
它们是相同的类型,因此它们以相同的方式处理:
>>> type(a)
<type 'function'>
>>> type(b)
<type 'function'>
Run Code Online (Sandbox Code Playgroud)
Python也知道它b被定义为lambda函数,并将其设置为函数名:
>>> a.func_name
'a'
>>> b.func_name
'<lambda>'
Run Code Online (Sandbox Code Playgroud)
换句话说,它会影响函数的名称,但就Python而言,两者都是函数,这意味着它们可以以相同的方式使用.请参阅下面的mgilson评论,了解有关酸洗的函数和lambda函数之间的重要区别.
Mar*_*cin 13
唯一的区别是(a)lambda的主体只能由一个表达式组成,其结果从创建的函数返回,(b)lambda表达式是一个表达式,它计算一个函数对象,而一个def语句没有值,并创建一个函数对象并将其绑定到一个名称.
在所有其他材料方面,它们会产生相同的对象 - 适用相同的范围和捕获规则.(非物质的区别是,lambda-created函数都有一个默认func_name的"<lambda>"这可能会影响在深奥例手术. -例如试图酸洗函数).
| 归档时间: |
|
| 查看次数: |
13250 次 |
| 最近记录: |