Python中是否有一个单行闭包函数?

Python中是否有一个单行闭包函数?,python,Python,我一直在很好地利用这个函数,它通常定义我需要的任何时间,因为它太小了: def func(_lambda, *args): return _lambda(*args) i、 e Python中是否有与此等效的内置函数?Python 3不再有应用函数,尽管Python 2有应用函数 列表理解消除了使用该函数的需要。直接使用函数体即可 [("fizbuz" if x%5 == 0 else "fiz") if x%3 == 0 else ("buz" if x%5 == 0 else

我一直在很好地利用这个函数,它通常定义我需要的任何时间,因为它太小了:

def func(_lambda, *args):
    return _lambda(*args)
i、 e


Python中是否有与此等效的内置函数?

Python 3不再有应用函数,尽管Python 2有应用函数

列表理解消除了使用该函数的需要。直接使用函数体即可

[("fizbuz" if x%5 == 0 else "fiz") 
 if x%3 == 0
 else ("buz" if x%5 == 0 else x)
   for x in list(range(1,101))]

这也更有效,因为您不再重复调用用户定义的函数。

Python 3不再具有应用函数,尽管Python 2已经具有应用函数

列表理解消除了使用该函数的需要。直接使用函数体即可

[("fizbuz" if x%5 == 0 else "fiz") 
 if x%3 == 0
 else ("buz" if x%5 == 0 else x)
   for x in list(range(1,101))]
这也更有效,因为您不再重复调用用户定义的函数。

查看functools.partial

大体上,你会看到这样的情况:

from functools import partial

def func(*args):
    # your logic here

myfunc = partial(func, *args)
如果需要,可以将其他参数传递给myfunc;来自的示例很好地说明了这一点:

>>> from functools import partial
>>> basetwo = partial(int, base=2)
>>> basetwo('10010')
18
对于您的案例来说,这些都不是必需的,因为将您的fizzbuzz逻辑从列表理解中移到一个单独的函数中可以让您像这样使用它,在我看来,这更容易遵循:

[fizzbuzz(x) for x in range(1, 101)]
不过,partial是一个方便的技巧。

看看functools.partial

大体上,你会看到这样的情况:

from functools import partial

def func(*args):
    # your logic here

myfunc = partial(func, *args)
如果需要,可以将其他参数传递给myfunc;来自的示例很好地说明了这一点:

>>> from functools import partial
>>> basetwo = partial(int, base=2)
>>> basetwo('10010')
18
对于您的案例来说,这些都不是必需的,因为将您的fizzbuzz逻辑从列表理解中移到一个单独的函数中可以让您像这样使用它,在我看来,这更容易遵循:

[fizzbuzz(x) for x in range(1, 101)]
不过,这个部分是一个方便的技巧。

有一个,曾经:apply在Python 2.3中被弃用,从Python 3中删除。有一个,曾经:apply在Python 2.3中被弃用,从Python 3中删除。