当多次调用具有多个参数的函数时,python中减少代码重复的好方法是什么?

时间:2018-09-26 07:56:10

标签: python macros

我们在紧密相邻的多个位置使用了以下函数调用:

func(param1, param2, param3, param4, param5)

我想使用

funccall() 

在所有地方。

是否有宏的概念?给出所有自变量的部分引用(标记为正确的答案)是正确的,并且如果随后的所有调用都在同一范围内,则它可以工作。

如果情况是这样的话:

A():
func(p1,p2,p3,p4,p5) # 3 times

B():
func(p1,p2,p3,p4,p5) # 2 times

C():
func(p1,p2,p3,p4,p5) # 4 times

使用部分:

A():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 3 times

B():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 2 times

C():
funccall = partial(func,p1,p2,p3,p4,p5)
funccall() # 4 times

理想的(如果代码中遵循约定并且可读性不是问题)

macro funccall() = func(p1,p2,p3,p4,p5)

A():
funccall() # 3 times

B():
funccall() # 2 times

C():
funccall() # 4 times

2 个答案:

答案 0 :(得分:2)

此问题与this one

有关

作为MattH提供的答案,您可以使用functools.partial

from functools import partial
funccall = partial(func, 1, 2, 3, 4, 5)
funccall()

答案 1 :(得分:1)

设置默认参数,仅使用与默认参数不同的参数显式调用函数!

例如def func(param1=0, param2="abc", param3=0.3)来定义

result = func(param1=3)

(未经测试,但我认为没有理由不起作用!)