在一个变量中将两个变量的函数写为函数

时间:2017-07-23 19:04:18

标签: python arguments function-prototypes argument-unpacking

假设我有以下2个变量的函数 -

def banana(x,y):
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

我想把它写成 -

def banana(x):

其中x是两个变量的向量;如果那可能吗?

感谢您的帮助!

6 个答案:

答案 0 :(得分:3)

在函数开头解压缩args:

def banana(args):
    x, y = args
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

或直接在定义行中:

def banana((x, y)):
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

答案 1 :(得分:2)

是的,这是可能的:

def _banana(x):
    return banana(*x)

答案 2 :(得分:2)

你可以写:

def banana(vector):
    x, y = vector
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

答案 3 :(得分:1)

可能类似

def banana(x):
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)

答案 4 :(得分:0)

是的,当然有可能。 您可以使用列表或元组。将两个变量放入列表或元组

x = [5, 7] # A list
x = (5, 7) # A tuple

然后你的功能应该是这样的:

def banana(x):
    x, y = x # Unpacking
    return exp(((-x**2/200))-0.5*(y+0.05*(x**2) - 100*0.05)**2)

https://docs.python.org/3.6/tutorial/datastructures.html

了解详情

答案 5 :(得分:-1)

你可以用列表写

def banana(x):
    return exp(((-x[0]**2/200))-0.5*(x[1]+0.05*(x[0]**2) - 100*0.05)**2)