0 arity的python lambda函数

时间:2013-05-15 20:38:14

标签: python function lambda

是否可以使用Python的lambda表示法编写以下内容?

def no(): return

没有sytax错误的最接近的是

no = lambda _: no

具有以下属性:

>>> no
<function <lambda> at 0x101e69f80>
>>> no(4)
<function <lambda> at 0x101e69f80>
>>> no(no(4))
<function <lambda> at 0x101e69f80>

>>> no == no(no)
True
>>> no == no(4)
True
no == no(no(4))
True
>>> no == 4
no == 4
False

4 个答案:

答案 0 :(得分:3)

您的显式版本会返回None。由于lambda函数仅由表达式组成,因此等效代码为

no = lambda: None

答案 1 :(得分:3)

>>> def no1():return
...
>>> no = lambda : None
>>> import dis
>>> dis.dis(no)
  1           0 LOAD_GLOBAL              0 (None)
              3 RETURN_VALUE
>>> dis.dis(no1)
  1           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE
>>>

答案 2 :(得分:2)

相当于

def no():
    return

no = lambda: None

答案 3 :(得分:2)

您正在寻找:

lambda: None

它是等价的,因为一个空return的函数,或仅仅通过耗尽函数文本而退出的函数返回None