1. 苏葳的备忘录首页
  2. 编程

Python获取当前版本的函数

python 版本Python2.x和3.x的区别之大,几乎可以作为一个变种语言存在。在实际开发中,Python的版本选择是很让人纠结的一个问题。3.x在设计上更现代,更规范,提供了一些崭新的特点。但从应用角度,原来2.x留下的大量软件包却又难以割舍。并且经测试,2.x版本的性能仍比3.x有明显优势。看来当前Python 3.x版本仍有很大优化的潜力。由于语言的演进,在2.x中,不同版本也会有些区别,那么对语言版本的判断也是非常有用的。

import sys
def getVer(): #get the python version
    tmpver=sys.version_info
    return '%d%d%d'%(tmpver[0],tmpver[1],tmpver[2])

可取得当前python的版本,按主,次,微三个版本分量组合,返回类型为’273’之类的串,而’273′>’2699’,即python 2.7.3版本高于2.6.99版本。但是,需注意的是:若以后出了2.11.4版本,如何与2.1.14版本区分呢?所以如此将三个分量简单连接的方式比较,也是有问题的。

获得版本号,可以用于一些牵涉版本兼容性的判断。比如:

o=urlparse(urlstr)

netaddr=o.scheme+’://’+o.netloc+’/’ #此句在2.7.3中可用,而在2.4.3中就不被支持。

而若用o[0]和o[1]分别替换o.scheme和o.netloc,可实现两个版本的兼容。因此从旧版程序升级至新python环境一般没什么问题。有时候python新版会增加一些新功能,也可以判断版本来处理:

if getVer()>'260':
     u = urllib2.urlopen(req,timeout=60) #2.7.3 有timeout参数
else:
     sockeet.setdefaulttimeout(60)
     u = urllib2.urlopen(req)  #2.6以下无timeout参数,import进socket库设置全局timeout值。

 

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/582.html

发表评论

邮箱地址不会被公开。 必填项已用*标注