我注意到IPython在语法上有一些非常奇怪的解析行为,这不是合法的Python。你知道吗
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
为什么伊普顿要这么做?这是文件化的还是可配置的?你知道吗
这是一种方便的强制引用方法,请参见文档:https://ipython.readthedocs.io/en/stable/interactive/reference.html#automatic-parentheses-and-quotes
从文档中:
例如,
;
只输出一个空字符串:就像逗号一样
,
:我看不到任何地方允许你覆盖这个,我可能是错的,但它看起来像是硬编码的东西。你知道吗
编辑
好的,我发现了一篇mail关于这个的帖子,你可以通过添加(或者如果它不存在的话创建)以下内容来关闭它
.ipython/profile_default/static/custom/custom.js
,这是未测试的:关于为什么
,,b = 1,2,3
被区别对待的最后一点,看起来空格引入了某种中断,然后将其转换为元组:与无空格比较:
相关问题 更多 >
编程相关推荐