【问题标题】:input() acts weird with exclamation marks (!) in Spyder IDEinput() 在 Spyder IDE 中带有感叹号 (!) 的行为很奇怪
【发布时间】: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,您通常应该会看到&lt;built-in function input&gt;;这在 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


【解决方案1】:

这里是 Spyder 开发人员)这是一个错误。我们在 Python(not IPython)控制台中使用! 来运行一些不符合有效 Python 语法的特殊命令(例如,!ls 列出当前工作目录中的文件)。

有一个issue 为它打开。我们将尝试在下一个版本 (2.3.3) 中修复它。

【讨论】:

  • 这是旧 bug code.google.com/p/spyderlib/issues/detail?id=1568 的重复,它出现在 Spyder 的 2.x 和 3.x python 版本中。
  • 不管怎样,谢谢关注。您预计何时发布下一个版本?
  • Ups,我没注意到。我相应地更新了答案。我希望在一个半月或两个月内发布 2.3.3。但您可以同时使用 IPython 控制台。我真的在考虑将来弃用我们的 Python 控制台,因为维护我们自己的控制台是我们的大量工作。
猜你喜欢
  • 2013-06-22
  • 2011-03-30
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多