Warum kann ich keinen markierten Ausdruck verwenden?

8

Mein Code

%Vor%

Meine Frage, warum?

In einem ernsteren Tonfall: Ich hätte gerne eine Antwort oder eine Referenz, die alle Details eines markierten Ausdrucks enthält, da ich manchmal von seinen Verhaltensweisen überrascht bin ...

>

Nachtrag

Um einige der aufschlussreichen Kommentare zu reflektieren, die unmittelbar gefolgt von meiner Frage füge ich den folgenden Code hinzu

%Vor%

(Ich habe den (, a) -Teil ausprobiert, bevor ich die ursprüngliche Frage gepostet habe, aber ich habe es weggelassen, weil der Fehler nicht mit der Hauptrolle verbunden war.)

Es gibt eine Syntax in Python ≥ 3.5, die "einfach funktioniert", aber trotzdem hätte ich gerne etwas Verständnis.

    
gboffi 18.11.2016, 11:34
quelle

2 Antworten

9

Es liegt daran:

%Vor%

Ist nur ein Wert in Klammern. Es ist kein neues Tupel-Objekt. Also dein Ausdruck:

%Vor%

wird übersetzt in:

%Vor%

was im Hinblick auf die Python-Syntax offensichtlich falsch ist.

Um ein neues Tupel mit einem Ausdruck als Initialisierer zu erstellen, müssen Sie nach ihm eine ' , ' hinzufügen:

%Vor%

Wenn ich Ihnen etwas vorschlagen kann, können Sie auch Formatierungsausdrücke im neuen Stil verwenden. Sie sind großartig!

%Vor%

Sie können mehr über sie in denen lesen t w o Absätze der Python-Dokumentation, auch gibt es diese großartige Website. Die obige Zeile verwendet den unten beschriebenen Mechanismus zum Entpacken von Argumenten.

Markierte Ausdrücke

Es gibt viel mehr Verwendungszwecke für den markierten Ausdruck als nur eine neue Liste / ein neues Tupel / Wörterbuch zu erstellen. Die meisten davon sind in dieser PEP beschrieben und dieser

Alle von ihnen kommen auf zwei Arten:

RValue entpacken:

%Vor%

Iterable / dictionary object initialization (Beachten Sie, dass Sie Wörterbücher auch in Listen entpacken können!) :

%Vor%

Natürlich ist die am häufigsten verwendete Verwendung das Entpacken von Argumenten:

%Vor%

was würde das bedeuten:

%Vor%

Dieses Thema wurde bereits in einer anderen Frage in großem Umfang behandelt.

    
Błażej Michalik 18.11.2016, 11:43
quelle
3
  

Meine Frage, warum?

Weil Ihre Python-Syntax das nicht erlaubt. Es ist so definiert, also gibt es kein echtes "Warum".

auch, es ist unnötig.

%Vor%

würde funktionieren.

Sie müssten also Ihre Erweiterung in ein Tupel umwandeln - und der richtige Weg wäre, wie Lafexlos es betont,

%Vor%     
Marcus Müller 18.11.2016 11:41
quelle

Tags und Links