2013-06-11 17 views
5

Ich wage in Python und ich hatte eine Frage bezüglich Sternchen. Ich weiß, dass sie für Argumente in Funktionsaufrufen verwendet werden, aber ich habe Code-Schnipsel gesehen, wie sie außerhalb von Funktionskarten (zum Beispiel sagen, in einem Tupel von 5 Noten, sie in Variablen wie das Auspacken:Sternchen außerhalb von Funktionsaufrufen

first, *middle, last = grades

Immer wenn ich versuche Sternchen in diesem Zusammenhang verwenden/Kontexte aus einer Argumente der Funktionsaufruf, erhalte ich eine ungültige Syntax in den Interpreter. Bin ich hier etwas fehlt?

Antwort

10

Python 3 erweitert Tupel mit Unterstützung Auspacken hinzugefügt für ein Platzhalter, siehe PEP 3132:

*start, tail = ... 
head, *middle, tail = ... 

Siehe assignment statements Referenzdokumentation:

Wenn die Zielliste ein Ziel mit einem Stern Präfix enthält, eine so genannte „Favorit“ Ziel: Das Objekt muss, da es mit mindestens so viele Punkte eine Sequenz sein, sind Ziele in der Zielliste minus eins. Die ersten Elemente der Sequenz werden von links nach rechts den Zielen vor dem markierten Ziel zugewiesen. Die endgültigen Elemente der Sequenz werden den Zielen nach dem markierten Ziel zugewiesen. Eine Liste der verbleibenden Elemente in der Sequenz wird dann dem markierten Ziel zugewiesen (die Liste kann leer sein).

Verwendung eines Asterix in der lef-Seite (Zielliste) eine Zuweisung ist ein Syntaxfehler in Python 2.

Verwandte Themen