Ich habe eine Python-Funktion (Python 2.5) mit einer Definition wie:Python ruft Positions Argument
def Foo(a, b='Silly', c='Walks', d='Spam', e='Eggs', f='Ni', *addl):
Wo addl
eine beliebige Anzahl von Strings sein kann (-Dateinamen) etwas damit zu tun.
Mir geht es gut mit allen Standardeinstellungen, aber ich habe Dateinamen in addl
.
ich bin geneigt, etwas wie zu tun:
Foo('[email protected]', addl=('File1.txt', 'File2.txt'))
Aber das wird folgende Fehlermeldung:
TypeError: Foo() got an unexpected keyword argument 'addl'
Gibt es eine Syntax, wo ich kurz und bündigFoo
nur mit dem ersten aufrufen benötigter Parameter und meine (variable Anzahl von) zusätzlichen Strings? Oder bleibe ich redundant stecken alle Standardwerte, bevor ich in den addl
Argument Bereich brechen kann?
Aus Gründen des Arguments kann die Funktionsdefinition nicht geändert oder refaktoriert werden.
Einfach auspacken Tupel, sollte es funktionieren: Foo ('[email protected] '* ('File1.txt',' File2 .txt ')) – AndreyT
@AndreyT: Das funktioniert nicht. Es weist "File1.txt" zu "a" und "File2.txt" zu "b" zu. – zondo
Ja, hast du recht. Also, im Falle von 2.5 möglichen Lösung ist die Verwendung von Kwarts anstelle von b, c, d, e, f Parameter. – AndreyT