首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我如何操作函数来接受新的参数?

我如何操作函数来接受新的参数?
EN

Stack Overflow用户
提问于 2019-06-19 07:57:45
回答 2查看 169关注 0票数 0

我想知道如何在不修改原始公式的情况下在Python中操作一个函数来接受新的参数。

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

原始函数:

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

New函数,接受一个新参数"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。

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

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-19 08:07:51

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

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

票数 1
EN

Stack Overflow用户

发布于 2019-06-19 08:40:42

除了busybear所说的之外,您还可以交换参数

def addArg(fun):
    def wrapArg(x, y):
        result = fun(x) * 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

或者仅使用可选参数

def square(x, y = None):
    sq = x*x
    if y:
        sq *= y
    return sq
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56658452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档