当前位置:  开发笔记 > 编程语言 > 正文

向后兼容的输入调用Python

如何解决《向后兼容的输入调用Python》经验,为你挑选了2个好方法。

我想知道是否有人建议编写一个向后兼容的input()调用来检索文件路径?

在Python 2.x中,raw_input适用于像/ path/to/file这样的输入.在这种情况下,使用输入正常工作3.x,但由于eval行为而在2.x中抱怨.

一个解决方案是检查的Python和版本,基于版本,既映射inputraw_input到一个新的功能:

if sys.version_info[0] >= 3:
    get_input = input
else:
    get_input = raw_input

我确信有更好的方法可以做到这一点.有人有什么建议吗?



1> Sven Marnach..:

由于Python 2.x版本input()本质上是无用的,您只需通过raw_input以下方式覆盖它:

try:
    input = raw_input
except NameError:
    pass

一般来说,我不会试图瞄准兼容Python 2.x和3.x的代码,而是以一种在2.x上工作的方式编写代码,并且你得到一个工作的3.x版本使用2to3脚本.



2> TMWP..:

现在,许多Python教育和培训课程都教授此代码.

通常一起教:

from __future__ import print_function
if hasattr(__builtins__, 'raw_input'):
    input = raw_input

第一行:将Python 3.x print()函数导入Python 2.7,因此print()在两个版本的Python下表现相同.如果由于旧print "some content"电话而导致代码中断,您可以将此行关闭.

第二行和第三行:设置Python 2.7 raw_input(),input()因此input()可以在两个版本的Python下使用而不会出现问题.如果这是您希望包含在代码中的唯一兼容性修补程序,则可以单独使用它.

from __future__Python.org网站上有更多可用于其他语言兼容性问题的导入.还有一个名为"six"的库,在处理其他问题时可以查找兼容性解决方案.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有