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

标签 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

最佳答案

此问题与 this one 相关

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

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

关于python - 当多次调用具有多个参数的函数时,Python中有什么好方法可以减少代码重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52512725/

相关文章:

c++ - #error 指令是否跨平台和跨编译器

c - 使用两个参数重载宏

python - 'DataFrame' 对象没有属性 'read_csv'

python - PIL 模块错误

C++ 预处理器/宏在函数定义后自动添加行

ios - XCode 预处理器宏 #if 仍然包含与符号定义为 0 相反的代码

c - 宏替换

python - Kivy 桌面中的热键

python - 如何在 python 中打印变量名?

python - ftplib.FTP 超时具有不一致的行为