2024-06-28 10:52:55 发布
网友
我一直在很好地利用这个函数,它通常在我需要的时候定义,因为它太小了:
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中是否有与此等效的内置函数
python3不再有apply函数(尽管python2有)
列表理解消除了使用函数的需要。直接使用函数体
[("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(docs)
functools.partial
大体上,你会看到这样的情况:
from functools import partial def func(*args): # your logic here myfunc = partial(func, *args)
如果需要的话,可以将其他参数传递给myfunc;来自docs的例子很好地说明了这一点:
myfunc
>>> from functools import partial >>> basetwo = partial(int, base=2) >>> basetwo('10010') 18
对于您的案例来说,这些都不是必需的,因为将fizzbuzz逻辑从列表中移到一个单独的函数中,可以这样使用它(在我看来,这更容易理解):
[fizzbuzz(x) for x in range(1, 101)]
(不过,这是一个很好的技巧。)
python3不再有apply函数(尽管python2有)
列表理解消除了使用函数的需要。直接使用函数体
这也更有效,因为不再重复调用用户定义的函数
看看
functools.partial
(docs)大体上,你会看到这样的情况:
如果需要的话,可以将其他参数传递给
myfunc
;来自docs的例子很好地说明了这一点:对于您的案例来说,这些都不是必需的,因为将fizzbuzz逻辑从列表中移到一个单独的函数中,可以这样使用它(在我看来,这更容易理解):
(不过,这是一个很好的技巧。)
相关问题 更多 >
编程相关推荐