什么是pythonic:琐碎的lambda或无?

时间:2018-06-08 00:52:46

标签: python python-3.x coding-style

当函数接受函数参数(或类有函数槽)时,可以选择两种方法:

def foo(..., my_func=None, ...):
    ...
    if my_func:
        my_func(...)
    ...

def foo(..., my_func=(lambda ...: None), ...):
    ...
    my_func(...)
    ...

什么是Pythonic / clear / readable?

什么是更快 - 一个额外的布尔检查或一个简单的函数调用?

1 个答案:

答案 0 :(得分:1)

使用时:

>>> def bar():
...     print("Goodbye, World!")
...

我觉得这很可读:

>>> def foo(my_func = lambda : None):
...     my_func()
...
>>> foo()
>>> foo(bar)
Goodbye, World!

我发现这毫无意义的烦恼

>>> def baz(my_func = None):
...     if my_func is not None:
...         my_func()
...
>>> baz()
>>> baz(bar)
Goodbye, World!

尽量保持无生命的检查。如果你想让它做得好的话,请使用无:吹拂你的脸。不要问它安静。如果你使用它会以某种方式产生烦人的噪音。

  

什么是更快 - 一个额外的布尔检查或一个简单的函数调用?

为什么,以上帝的名义,你在乎吗?

为了记录,我觉得这个可读但是过于宽容:

>>> def buz(my_func = lambda **k:None):
...     my_func()
...
>>> buz(bar)
Goodbye, World!