2016-12-23 11 views
5

セミコロンを評価する場合にIPythonを実行すると、以下のように空の文字列の戻り値が返されます。どうして?私の理論は、IPythonはステートメントの行終端文字を取り除いていますが、それでも文字列を返す理由を説明していないということです。なぜセミコロンはIPythonで空の文字列を返しますか?

$ 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]: '' 

また、これはPythonの3

編集のためにIPythonで動作します:申し訳ありませんが、明確にされている必要があります:これはのみIPythonで、標準のPythonシェルでは動作しません。

+0

標準のPython 3のために明らかに動作しません –

+1

とfunnily:In [1]:;; ' - >' Out [1]: ';' 'と' In [2]:;;; ' - ' Out [2]: ';;' '?!私はipythonの ';'という考えは、 '暗黙的な '出力を抑制することだと考えていました。 –

+1

ipythonでは、またはを使用して関数の引数を自動的に引用することができます。行の最初の文字として。この[doc](http://ipython.readthedocs.io/en/latest/interactive/reference.html#automatic-parentheses-and-quotes)を参照してください。 – tihom

答えて

4

IPythonは、行頭でセミコロンを特別に扱います。たとえば:

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]: 

(上記のPython 3.5.2実行しているIPython 2.4.1である:それは、関数名を解析できない場合のように見えます

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

、あなたはバグの動作を取得します。 )

私はそれを「行終端文字を取り除く」と解釈したり、それをPythonの構文に戻そうとはしません。

+0

クール!セミコロンの構文はどこかに書かれていますか? –

+1

@tihomは、文書化された場所を指摘しました。私は、 "Autocall"セクションのIPythonに組み込まれた '%quickref'に埋め込まれた形で見つかった。 –

+0

Nevermind。私は@ tihomのコメントが私をここで指摘していなかった:http://ipython.readthedocs.io/en/latest/interactive/reference.html#automatic-parentheses-and-quotes –

関連する問題