为什么给双下划线赋值会破坏ipython中单下划线的行为?
我一直在玩IPython中的,并注意到一些奇怪的行为,当在以前的输出中使用单下划线时,会产生意想不到的结果 在写这个问题之前,我不知道在IPython中实现的输出缓存系统,我想如果我想通过访问特殊的变量来使用之前的输出,我应该使用双下划线作为伪变量 审议下一届会议:为什么给双下划线赋值会破坏ipython中单下划线的行为?,python,ipython,Python,Ipython,我一直在玩IPython中的,并注意到一些奇怪的行为,当在以前的输出中使用单下划线时,会产生意想不到的结果 在写这个问题之前,我不知道在IPython中实现的输出缓存系统,我想如果我想通过访问特殊的变量来使用之前的输出,我应该使用双下划线作为伪变量 审议下一届会议: Python 3.6.7 (default, Oct 22 2018, 11:32:17) Type 'copyright', 'credits' or 'license' for more information IPython
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.3.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: 2*3
Out[1]: 6
In [2]: 4 + _ # expect 10, OK
Out[2]: 10
In [3]: __, something = 1, 2
In [4]: 3*3
Out[4]: 9
In [5]: 3 + _ # expect 3+9=12, but:
Out[5]: 13
正如您在上面看到的,在为uuu赋值之后,使用u不会给出预期的结果
在阅读了前面链接的参考资料后,我知道我可能不应该搞砸uu、uuu或uuu。分配其中一个会冻结所有其他的吗?
文档中没有提示这些问题。而且,我发现这是非常违反直觉的,因为常规python shell的行为不同。在常规shell中完成上述示例后,最终输出与预期一样
提前感谢您的反馈 IPython还有3个特定变量:u、u和uu, 每次你执行死刑时,他们都会四处走动;->\u->\ u->\ u->\ u->\ u->已放弃,最后一个结果->\u 如果其中一个变量被赋值;然后旋转停止
In [1]: 1
Out[1]: 1
In [2]: 2 # _:1, __:'', ___:''
Out[2]: 2
In [3]: 3 # _:2, __:1, ___:''
Out[3]: 3
In [4]: ___ ='something', # _:3, __:2, ___:1
In [5]: __ # still gonna be 2
Out[5]: 2
In [6]: __ # still gonna be 2 again
Out[6]: 2
In [7]: _ # still 3
Out[7]: 3
这值得讨论,但很难修改;很难弄清楚这是什么意思,以及用户是否修改了uuu、uuuu或uuuu
在上面的示例中,将某个值替换为1,因为1是1==True,所以IPython将不会检测到您已指定了一个下划线并继续四处移动 IPython还有3个特定变量:u、u和uu, 每次你执行死刑时,他们都会四处走动;->\u->\ u->\ u->\ u->\ u->已放弃,最后一个结果->\u 如果其中一个变量被赋值;然后旋转停止
In [1]: 1
Out[1]: 1
In [2]: 2 # _:1, __:'', ___:''
Out[2]: 2
In [3]: 3 # _:2, __:1, ___:''
Out[3]: 3
In [4]: ___ ='something', # _:3, __:2, ___:1
In [5]: __ # still gonna be 2
Out[5]: 2
In [6]: __ # still gonna be 2 again
Out[6]: 2
In [7]: _ # still 3
Out[7]: 3
这值得讨论,但很难修改;很难弄清楚这是什么意思,以及用户是否修改了uuu、uuuu或uuuu
在上面的示例中,将某个值替换为1,因为1是1==True,所以IPython将不会检测到您已指定了一个下划线并继续四处移动 注意,这取决于版本-它至少在IPython 5.8.0中起作用。注意,这取决于版本-它至少在IPython 5.8.0中起作用。使用其他编辑器,如IDLE或SUMBLIE,唯一的内置变量是神奇的对象,如uuuuu init_uuuuuu、uuuuu name_uuuuu和uuuu doc_u,使用其他编辑器,如IDLE或SUMBLIE,唯一的内置变量是像uuu init_uuuuuuu、uuuu name_uuuuu和uuuu doc这样的神奇对象__