0

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

def no(): return

在没有语法错误的情况下,我最接近的是

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

4 回答 4

3

您的显式版本返回None. 由于 lambda 函数仅包含一个表达式,因此等效代码为

no = lambda: None
于 2013-05-15T20:41:48.650 回答
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
>>>
于 2013-05-15T20:43:17.160 回答
2

相当于

def no():
    return

no = lambda: None
于 2013-05-15T20:41:40.210 回答
2

你正在寻找这个:

lambda: None

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

于 2013-05-15T20:42:02.850 回答