我注意到IPython有一些非常奇怪的解析行爲,而不是合法的Python語法。爲什麼在IPython中將b = 1,2,3解析爲(',b','=','1,2,3')?
In [1]: ,,b = 1,2,3
Out[1]: (',b', '=', '1,2,3')
有一些類似的分號發生,但它不分裂成一個元組。
In [4]: ;;foo = 1;2;3
Out[4]: ';foo = 1;2;3'
雖然它看起來像;
意味着該行的其餘部分將被視爲文字字符串,這並非總是如此:
In [5]: ,foo
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-f2137ad20ab5> in <module>()
----> 1 foo("")
NameError: name 'foo' is not defined
In [6]: ;foo
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-6-f2137ad20ab5> in <module>()
----> 1 foo("")
NameError: name 'foo' is not defined
爲什麼IPython中做到這一點?這是記錄還是可配置的?
我認爲JS是唯一的瀏覽器(我將非常驚訝,如果IPython的是在命令行中運行的JavaScript代碼)。 – nneonneo 2015-02-24 16:59:36
@nneonneo這是真的,我會嘗試挖掘一個終端IPython – EdChum 2015-02-24 17:01:03
謝謝,這解釋了',foo'和'; foo',但我不明白爲什麼',b'被視爲不同的和不作爲函數調用。 – 2015-02-24 17:05:47