2016-06-18 12 views
0

im Wesentlichen habe ich eine Funktion, die ich zu einer Reihe von Werten in zwei verschiedenen Momenten übergeben muss (hier aus praktischen Gründen übersprungen), daher dachte ich, müssen alle teilen Parameter in zwei Tupel-Sets, nach denen ich die erste Menge übergeben würde und dann die zweite - irrtümlicherweise -, dass Python alle verfügbaren n Parameter der Funktion den Werten zuweisen würde, die mit dem Tupel übergeben wurden und dann der Rest mit dem zweiten Tupel. Das ist nicht der Fall:übergeben mehrere Parameter in mehreren Tupel-Sets zu funktionieren - Python

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)) 

in der Tat:

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' 

was kann ich tun? Ich vermute, etwas von dieser Seite funktionieren sollte (https://docs.python.org/3.5/library/functools.html), aber ich habe es nicht gelungen, es selbst zu tun

Antwort

2

Eine sehr einfache Art und Weise ist die Tupel verketten und entpacken Sie sie dann, wie Sie sie an Ihre Funktion übergeben:

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

und dort, dass ich dachte, ich war in Python mit all meiner Phantasie Funktionen immer besser. Lieber zurück zu den Grundlagen. Danke für deine schnelle Antwort! – Asher11

0

Vielleicht können Sie etwas wie folgt verwenden:

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 
Verwandte Themen