有没有办法接受'%'作为输入的一部分,在python 2.6和& 3.0?

时间:2010-06-17 03:14:18

标签: python python-2.6

在2.6中,如果我需要接受允许百分号的输入(例如“foo%bar”),我使用raw_input()按预期工作。

在3.0中,input()完成相同的操作(使用raw_input()离开了建筑物。)

作为练习,我希望我能有一个可以兼容2.6和3.0的向后兼容版本。

当我在2.6中使用input()并输入“foo%bar”时,会返回以下错误:

  File "<string>", line 1, in <module>
NameError: name "foo" is not defined

......这是预期的。

无论如何要完成接受包含在2.6和3.0中都有效的百分号的输入?

THX。

2 个答案:

答案 0 :(得分:2)

您可以使用sys.version_info来检测正在运行的Python版本。

import sys
if sys.version_info[0] == 2:
    input = raw_input
# Now you can use
input()

或者,如果您不想覆盖Python 2.X的内置input函数,则可以编写

import sys
if sys.version_info[0] == 2:
    my_input = raw_input
else:
    my_input = input
# Now you can use
my_input()

虽然在我的第一个代码示例中,原始内置input始终可用__builtins__.input

答案 1 :(得分:2)

虽然不是一个优雅(而且相当难看)的解决方案,但我会做这样的事情:

try:
    input = raw_input
except:
    pass