Python将带有arguments的函数保存到变量,而不调用函数



将函数保存到这样的变量中很容易

pr = print
pr(5)  # 5 

但如果这可以在没有调用的情况下保存带有参数的函数,比如

some_var = defer print(5)  # No call! 
some_var()  # 5

我尝试使用lambda,但它导致语法错误`l=lambda 5:

为什么我需要它?例如不重复多个";如果";分支:

示例:

def foo()
l1 = lambda: 1
l2 = lambda: 2
if 1:
func = l1
elif 2:
func = l2
else:
func = some_outer_func, some_inner_func  
return func  # To use "func" need additional "if" branches for type and length of a returned value

functools.partial接受一个包含多个参数的函数,并返回一个包含较少参数的函数;保存";

from functools import partial
print_five = partial(print, 5)
print_five()  # 5

它也适用于关键字参数

def foo(a, b=False):
print(a, b)
bar = partial(foo, b=True)
foo(1)  # 1 False
bar(1)  # 1 True

lambda的方式:

pr = lambda: print(5)
pr()

最新更新