Warum wird ,, b = 1,2,3 in IPython als (', b', '=', '1,2,3') geparst?

8

Ich habe bemerkt, dass IPython ein sehr seltsames Parsing hat, das sich für eine Syntax verhält, die kein legales Python ist.

%Vor%

Es gibt etwas Ähnliches mit Semikolons, aber es teilt sich nicht in ein Tupel.

%Vor%

Obwohl es so aussieht, als ob ; bedeutet, dass der Rest der Zeile als Literal-String behandelt wird, ist dies nicht immer der Fall:

%Vor%

Warum macht IPython das? Ist das dokumentiert oder konfigurierbar?

    
Wilfred Hughes 24.02.2015, 16:19
quelle

1 Antwort

7

Es ist eine bequeme Methode, um das Zitat zu erzwingen, siehe die Dokumentation: Ссылка

Aus der Dokumentation:

  

Sie können das automatische Angeben der Argumente einer Funktion erzwingen, indem Sie   oder ; als erstes Zeichen einer Zeile. Zum Beispiel:

%Vor%
  

Wenn   Wenn Sie ';' verwenden, wird das gesamte Argument als einzelne Zeichenfolge angegeben, während ','   teilt sich auf Whitespace:

%Vor%
  

Beachten Sie, dass   das "," oder ";" MUSS das erste Zeichen auf der Linie sein! Das wird nicht   Arbeit:

%Vor%

Zum Beispiel gibt nur ; eine leere Zeichenfolge aus:

%Vor%

Genau wie ein Komma , :

%Vor%

Ich kann nirgends sehen, dass Sie dies überschreiben können, ich könnte mich irren, aber es sieht aus wie etwas, das fest codiert ist.

BEARBEITEN

OK Ich habe einen Post Post darüber gefunden, Sie können ihn drehen aus durch Hinzufügen (oder Erstellen, falls es nicht existiert) nach .ipython/profile_default/static/custom/custom.js , dies ist ungetestet:

%Vor%

In Bezug auf Ihren letzten Punkt, warum ,,b = 1,2,3 anders behandelt wird, sieht es so aus, als ob der Leerraum eine Art Pause einführt, die daraus ein Tupel macht:

%Vor%

Vergleiche keine Leerzeichen:

%Vor%     
EdChum 24.02.2015 16:27
quelle

Tags und Links