我想让它尽可能通用 - 例如尽可能多地处理.
由于版本3不向后兼容版本2,我想确保使用正确的打印语句.
如果您有任何疑问,请随时告诉我,并根据可用的(例如图书馆)分享与动态逻辑有关的相关知识.
假设我有一个脚本只能在版本1.x,或2.x或3.x下运行.
或者需要库A或库B的脚本.
谢谢!
编辑:
现在......当谈到Python(不像.Net)时,一些像SciPy,Google App Engine这样的库会让你紧紧抓住特定的版本.在Linux,Mac Os上,您可以在命令行上切换不同的Python安装.这就是我想避免混淆的原因 - 我想记住哪个脚本适用于哪个版本的Python以及它需要哪些库.我宁愿让它以人类可读的方式失败.
该sys模块还包含版本信息(首次在2.0版中提供):
import sys
if sys.version_info[0] == 2:
print("You are using Python 2.x")
elif sys.version_info[0] == 3:
print("You are using Python 3.x")
Run Code Online (Sandbox Code Playgroud)
如果要在版本2和版本3之间混合语法,为了解决语法错误,您必须使用条件导入.
# just psuedocode
if version is x:
import lib_x # contains version x implementation
else:
import lib_y # contains version y compatible implementation
Run Code Online (Sandbox Code Playgroud)
不建议尝试保持python3和旧版本之间的兼容性.也就是说,这里有几种方法可以检测正在使用的python版本:
虽然不是特别人性化,但sys.hexversion它将适用于最广泛的python版本,因为它是在1.5.2版本中添加的:
import sys
if sys.hexversion == 0x20505f0:
print "It's version 2.5.5!"
Run Code Online (Sandbox Code Playgroud)
您应该能够从sys.version_info(在python 2.0中添加)获取版本信息:
import sys
if sys.version_info[0] == 2:
print "You are using version 2!"
else:
print "You are using version 1, because you would get SyntaxErrors if you were using 3!"
Run Code Online (Sandbox Code Playgroud)
或者你可以使用平台模块,虽然它是在python 2.3中引入的,并且在旧版本中不可用(假设你甚至关心它们):
try:
import platform
if platform.python_version().startswith('2'):
print "You're using python 2.x!"
except ImportError, e:
print "You're using something older than 2.3. Yuck."
Run Code Online (Sandbox Code Playgroud)