【发布时间】:2015-01-30 14:28:36
【问题描述】:
input() 函数在带有 WinPython 3.3.5 的 Spyder IDE 中的某些输入上返回奇怪的值:
>>>input('say:')
say:hello
hello
>>>input('say:')
say:hello!
hello!
>>>input('say:')
say:!
'evalsc(r"!")'
>>>input('say:')
say:!123
'evalsc(r"!123")'
>>>s = input('say:')
say:!
>>>type(s)
<class 'str'>
>>>repr(s)
'\'evalsc(r"!")\''
为什么input()会用这种奇怪的方式处理前导感叹号?
有趣的是,如果我从命令行运行相同的 python,一切正常。 但是,在 Spyder IDE 中,它让我很傻。
【问题讨论】:
-
也许这个 IDE 覆盖了
input()?如果您只输入input,您通常应该会看到<built-in function input>;这在 IDE shell 中有什么不同吗?也可以查看__builtins__.input == input;这应该是True。 -
我相信 Spyder IDE 使用 IPython 控制台,其中以
!开头的行具有特殊含义——在 shell 中执行该行的其余部分。 -
不,
input == __builtins__.input- 这是我第一次检查 :) 问题更深。在独立的 IPython 控制台中,它的工作原理与独立的 Python 控制台一样。 -
我在 Spyder 的 bugtracker 中发现了这个问题:code.google.com/p/spyderlib/issues/detail?id=1568 - 并在那里发表了评论。看起来像 Spyder IDE 中的错误。
标签: python python-3.x input spyder