我注意到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