python为lambda函数编写docstrings的最佳方法是什么?

Eri*_* H. 3 python lambda docstring

我通常使用带有""的多行文档字符串来评论我的函数,如下所述:https: //www.python.org/dev/peps/pep-0257/

def func1(x):
  """
  This function does ...
  """
  ...
Run Code Online (Sandbox Code Playgroud)

但是评论lambda函数的最佳方法是什么?我在犹豫之间犹豫:

# This function does ...
func2 = lambda x: ...
Run Code Online (Sandbox Code Playgroud)

要么 :

func2 = lambda x: ...
""" This function does ... """
Run Code Online (Sandbox Code Playgroud)

要不然 ?

Hal*_*Ali 7

tbh,即使将一个lambda赋给一个变量,对我来说也似乎是单声道的.如果需要名称,请将其定义为常规函数.lambda函数和常规函数之间的区别在于后者具有__name__属性和显式返回语句.

如果必须将文档字符串添加到lambda,请执行以下操作:

f = lambda x: x + 1
f.__doc__ = """adds 1 to input-arg"""

help(f) 
# outputs the following:
help(f)
Help on function <lambda> in module __main__:

<lambda> lambda x
    adds 1 to arg
Run Code Online (Sandbox Code Playgroud)

这样,文档实际上可以作为函数docstring用于解释器.

直接从pep-8引用

始终使用def语句而不是将lambda表达式直接绑定到标识符的赋值语句.

是:

def f(x): return 2*x
Run Code Online (Sandbox Code Playgroud)

没有:

f = lambda x: 2*x
Run Code Online (Sandbox Code Playgroud)

  • [PEP-8](https://www.python.org/dev/peps/pep-0008/#programming-recommendations)同意你的意见:"始终使用`def`语句而不是绑定lambda的赋值语句表达式直接表达式.[...]赋值语句的使用消除了lambda表达式在显式def语句中提供的唯一好处(即它可以嵌入到更大的表达式中)" (2认同)