传递多个参数以在多个元组集中起作用 - python

时间:2016-06-18 11:41:31

标签: python function functional-programming tuples

基本上我有一个函数,我需要在两个不同的时刻传递给一堆值(这里由于实际原因而跳过),因此,我认为需要将所有参数拆分为两个元组集,之后我会在d传递第一组然后第二个思考 - 错误地 - python会将函数的所有可用n个参数分配给使用元组传递的值,然后将剩余部分分配给第二个元组。事实并非如此:

def example_F_2(x, y, z, g):
    return x * y + z * g

e = (1,2)
r = (3,4)
print(example_F_2(e, r))

事实上:

Traceback (most recent call last):
  File "C:/Users/francesco/PycharmProjects/fund-analysis/test_sheet.py", line 7, in <module>
    print(example_F_2(e, r))
TypeError: example_F_2() missing 2 required positional arguments: 'z' and 'g'

我该怎么办?我猜这个页面的内容应该有效(https://docs.python.org/3.5/library/functools.html),但我自己无法做到这一点

2 个答案:

答案 0 :(得分:2)

一种非常简单的方法是连接元组,然后在将它们传递给函数时解压缩它们:

print(example_F_2(*(e+r)))

答案 1 :(得分:0)

也许你可以使用这样的东西:

def example_F_2(e=None, r=None):
    first_term = 0
    second_term = 0
    if e is not None:
        first_term = e[0] * e[1]
    if r is not None:
        second_term = r[0] * r[1]
    return first_term + second_term


e = (1, 2)
r = (3, 4)
print example_F_2(e, r)
> 14
print example_F_2(e=e)
> 2
print example_F_2(r=r)
> 12