代码之家  ›  专栏  ›  技术社区  ›  sds Niraj Rajbhandari

还有什么更像蟒蛇:小羊羔还是没有?

  •  2
  • sds Niraj Rajbhandari  · 技术社区  · 6 年前

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

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

    什么东西更具Pythonic/清晰/可读性?

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   candied_orange Elliott Frisch    6 年前

    使用时:

    >>> 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!