如何编写兼容Python 2.7与Python 3+的字符串输入单行代码?
兼容Python 2.7和3+的单行输入解决方案
嘿,这个问题我在维护跨版本Python脚本时也碰到过,刚好有几个简洁的单行写法能完美解决你的需求,给你分享两个最实用的:
方法1:版本判断映射(直观易读,推荐)
先导入sys模块(用分号把导入和代码合并成一行),通过主版本号选择对应的输入函数:
import sys; name = raw_input("Enter your name: ") if sys.version_info[0] == 2 else input("Enter your name: ")
sys.version_info[0]会返回Python的主版本号(2对应Python2,3对应Python3),三元表达式会自动匹配当前环境的正确输入方法。
方法2:EAFP风格的单行写法
遵循Python「请求原谅优于请求许可」的设计原则,先尝试调用Python2的raw_input,如果当前环境不存在该函数(即Python3),则切换到input:
name = raw_input("Enter your name: ") if 'raw_input' in dir(__builtins__) else input("Enter your name: ")
这种写法不需要导入额外模块,直接检查内置函数中是否存在raw_input,同样能实现跨版本兼容。
补充说明:如果你的脚本需要处理特殊编码的输入,可能还要对结果做编码转换,但普通文本输入场景下,上面的代码已经完全够用啦。
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

