2016-12-23 2 views
5

Wenn Sie IPython ausführen, wenn Sie ein Semikolon auswerten, erhalten Sie einen Rückgabewert der leeren Zeichenfolge, wie unten gezeigt. Warum? Meine Theorie ist, dass IPython den Zeilenabschluss in der Anweisung entfernt, aber immer noch nicht erklärt, warum er eine Zeichenfolge zurückgibt.Warum gibt ein Semikolon in IPython eine leere Zeichenfolge zurück?

$ ipython 
Python 2.7.12 (default, Oct 11 2016, 05:24:00) 
Type "copyright", "credits" or "license" for more information. 

IPython 5.1.0 -- An enhanced Interactive Python. 
?   -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help  -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 

In [1]: ; 
Out[1]: '' 

Dies funktioniert auch in IPython für Python 3.

Edit: Es sollte klarer sein: das funktioniert nicht in der Standard-Python-Shell, nur in IPython.

+0

eindeutig nicht für Standard Python 3 –

+1

und lustigerweise genug: 'In [1]: ;;' -> 'Out [1]: ';'' und 'In [2]: ;;;' -> ' Out [2]: ';;' '?! Ich hatte gedacht, dass die Idee von ";" in ipython die "implizite" Ausgabe unterdrücken sollte. –

+1

In ipython können Sie das automatische Angeben der Argumente einer Funktion erzwingen, indem Sie oder verwenden. als erstes Zeichen einer Zeile. siehe [doc] (http://ipython.readthedocs.io/en/latest/interactive/reference.html#automatic-parentheses-and-quotes) – tihom

Antwort

4

IPython hat eine spezielle Handhabung für Semikolons am Anfang der Zeile. Zum Beispiel:

In [1]: ;ord A # autocall -- calls function "ord" on string "A" 
Out[1]: 65 

Es sieht aus wie wenn es einen Funktionsnamen nicht analysieren kann, erhalten Sie Buggy Verhalten:

In [4]: ;;; 
Out[4]: ';;' 

In [5]: ;?huh 
Out[5]: '?huh' 

In [6]: ;?huh? 
Object `huh` not found. 

In [7]: ;?huh 
Out[7]: '?huh;?huh' 

In [8]: 

(Die oben mit IPython ist 2.4.1 läuft Python 3.5.2.)

Also würde ich nicht versuchen, es zu interpretieren, wie "stripping out ein line terminator" oder versuchen, es zurück zu Python-Syntax zu beziehen.

+0

Cool! Ist die Semikolon-Syntax irgendwo dokumentiert? –

+1

@tihom wies auf einen Ort hin, an dem es dokumentiert ist. Ich habe es in der eingebetteten "% Quickref" von IPython im Abschnitt "Autocall" gefunden. –

+0

Niemals. Ich vermisse @ tihoms Kommentar, der mich hier zeigt: http://ipython.readthedocs.io/en/latest/interactive/reference.html#automatic-parentheses-and-quotes –

Verwandte Themen