python 网络维护_为不同版本的Python维护不同版本的代码库的工作流

如果您的代码不是过度依赖于异常处理程序中的运行时性能,那么您甚至可以在没有为Py3单独设置分支的情况下逃脱。我设法为我所有的Py2.x版本保留了一个pyparsing版本,尽管我不得不坚持使用“最小公分母”方法,这意味着我必须放弃使用一些结构,比如生成器表达式,以及上下文管理器。我用dicts代替set,所有的生成器表达式都被包装成列表理解,所以它们仍然可以回到python2.3。我在代码的顶部有一个块,用于处理许多2vs3问题(由pyparsing用户Robert a Clark提供):_PY3K = sys.version_info[0] > 2

if _PY3K:

_MAX_INT = sys.maxsize

basestring = str

unichr = chr

unicode = str

_str2dict = set

alphas = string.ascii_lowercase + string.ascii_uppercase

else:

_MAX_INT = sys.maxint

range = xrange

def _str2dict(strg):

return dict( [(c,0) for c in strg] )

alphas = string.lowercase + string.uppercase

我遇到的最大困难是在Py3中引入的用于捕捉异常的不兼容语法,从

^{pr2}$

到except exceptionType as varname:

当然,如果不需要异常变量,可以写下:except exceptionType:

这对Py2或Py3有效。但如果您需要访问异常,您仍然可以使用跨版本兼容语法:except exceptionType:

exceptionvar = sys.exc_info()[1]

这有一个较小的运行时代价,这使得它在pyparsing的某些地方不可用,所以我仍然需要维护单独的Py2和Py3版本。对于源代码合并,我使用了实用程序WinMerge,我发现它非常适合保持源代码目录的同步。在

因此,即使我保留了两个版本的代码,这些统一技术中的一些帮助我将差异降低到绝对不兼容的最小值。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值