Skip to main content
 首页 » 编程设计

python之Python 中有单行闭包函数吗

2025年05月04日18findumars

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

def func(_lambda, *args): 
    return _lambda(*args) 

即

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

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

请您参考如下方法:

看看 functools.partial ( docs )。

从广义上讲,您看到的是这样的东西:

from functools import partial 
 
def func(*args): 
    # your logic here 
 
myfunc = partial(func, *args) 

如果需要,可以将额外的参数传递给 myfunc;来自 docs 的示例很好地证明了这一点:

>>> from functools import partial 
>>> basetwo = partial(int, base=2) 
>>> basetwo('10010') 
18 

对于您的情况而言,这些都不是必需的,因为将您的 fizzbuzz 逻辑从列表理解中移出并放入一个单独的函数中,您可以像这样使用它(在我看来,这更容易理解):

[fizzbuzz(x) for x in range(1, 101)] 

(虽然部分是袖手旁观的便利技巧。)