首页 > 解决方案 > 如何操作函数以获取新参数?

问题描述

我想知道如何在不修改原始公式的情况下操纵函数以在 Python 中获取新参数。

例如,我将如何使用平方函数并使用平方函数作为模型制作另一个函数,例如乘方:

原始功能:

def square(x):
 result = (x*x)
 return(result)

新函数,接受一个新参数“y”:

def multSquare(x,y):
 result = y*square(x)
 return(result)

我尝试使用装饰器,但似乎无法正常工作

def addArg(tarFun):
 def wrapArg(y, *args, **kwargs):
  result=tarFun(*args, **kwargs) * y
  return result
 return wrapArg

def square(x):
 result = (x*x)
 return(result)

multSquare = addArg(square)

print(square(2)) # This should be 4
print(multSquare(2,3)) # This should be 12

这不起作用,因为我不知道如何注入 y。

最后,我想创建一个函数,它接受原始函数的所有参数加上一个参数。

谢谢大家!

标签: pythonpython-3.x

解决方案


如果您注意参数的顺序,发生的情况是您将 3 平方并乘以 2。这是因为您的函数wrapArg使用第一个参数 ( 2) 作为要相乘的数字,第二个 ( 3) 作为你正在平方的数字。

multSquare(3, 2)会给出你想要的结果。


推荐阅读