我在python中有一组函数,它们得到相同的2个参数+其他参数。
def myMethodA (param1, param2, specificParm)
do code
def myMethodB (param1, param2, specificParm1 specificParam2)
do code
我想创建一个decorator,通过在调用函数之前按下参数,用前两个参数替换调用的需要:
@withParams()
def myMethodA (specificParam)
do code
但是如果我省略了这些参数,那么decorator也不能调用它,如果我离开它们,那么调用者也需要指定它们。
无论如何要解决这个问题?
我可以用args*做些什么,但是仍然有specificParam的命名参数吗?
另外,我如何在myMethodA中引用param1和param2
最佳答案
听起来你可能想要functools.partial
。它返回一个新函数,其中已指定了一些参数:
import functools
def withParams(func):
return functools.partial(func,1,2)
@withParams
def myMethodA (param1, param2, specificParam):
print(param1,param2,specificParam)
@withParams
def myMethodB (param1, param2, specificParam1, specificParam2):
print(param1,param2,specificParam1, specificParam2)
myMethodA(10)
myMethodB(12,13)
1 2 10
1 2 12 13
关于python - 如何使用装饰器将参数发送给python中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45403514/