python技巧31[移植python2.x到3.x]

我们都知道python从2.x升级到3.x的过程中有一些不兼容的改动,但是有时还我们不得不将2.x的程序升级到3.x。

主要不兼容如下图:

移植过程:

1) 确保存在的代码有足够的测试覆盖。从2.x到3.x的升级工作量并不是很大,但是包含了很多的微小的不兼容,必须通过测试来确保升级后的程序仍然保持原有的功能。完全的测试覆盖不是被建议的,但是确实是需要的。

2) 用python 2.6 的 -3 命令行选项来运行程序,从而发现和去除明显的不兼容问题。

3) 使用2to3转化工具来自动地将程序转化为3.x版本,很多的不兼容问题会在转化的过程中被fix,同时一些需要手动升级的不兼容会被指出。
4) 使用python 3.x来运行新版本的程序,然后fix一些错误。同时也可能需要对测试代码进行相应的fix。直到所有的代码和测试代码通过。

参考:

The Quick Python Book

Python essential 4

很详细的python2到Python3的差别:(来自dive into python3的使用2to3将代码移植到Python 3)
http://woodpecker.org.cn/diveintopython3/porting-code-to-python-3-with-2to3.html

python技巧31[移植python2.x到3.x]

时间: 2024-09-30 06:11:26

python技巧31[移植python2.x到3.x]的相关文章

python技巧31[python中使用enum][转]

以下几种方法来模拟enum:(感觉方法一简单实用) # way1class Directions:    up = 0    down = 1    left = 2    right =3    print Directions.down # way2dirUp, dirDown, dirLeft, dirRight = range(4) print dirDown # way3import collectionsdircoll=collections.namedtuple('directio

移植Python2到TQ2440

环境 Python:2.7.13 开发板: TQ2440 工具链: arm-none-linux-gnueabi-gcc 4.8.3 概述 前面已经把Python3移植到TQ2440上面的,现在我们移植Python2,基本跟Python3移植步骤类似. 正文 一.工具链 参考 http://www.cnblogs.com/pengdonglin137/p/6740164.html#_lab2_2_0 二.配置 下面是配置脚本mk1_conf.sh: 1 #!/bin/bash 2 3 /home

python基础31[python IDE之Eclipse+PyDev]

一 入门IDE作为python的初学者,在语法和类库学习阶段,我们可以使用以下简单使用的IDE:1) Python SDK 自带的IDEL(Python GUI)2) Komodo-Edit3) NotePad++ 二 终极IDE 之 Eclipse+PyDev1 特点1)开源免费2)代码完成和调试3)重构refactor,项目浏览explorer和类库browser4)目前最新版支持python2.1~3.0,仍不支持最新的3.1 2 下载 1)Java JDK(Eclipse运行需要)2)P

python实例31[列出目录下所有的文件到txt]

代码: (使用os.listdir) import os def ListFilesToTxt(dir,file,wildcard,recursion):    exts = wildcard.split(" ")    files = os.listdir(dir)    for name in files:        fullname=os.path.join(dir,name)        if(os.path.isdir(fullname) & recursion

python技巧

列表解析 语法:[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr] 如果是有类的情况下,可以使用 class Person(object): 9     def __init__(self, name, age = 0): 10         self.name = name 11         self.age = age 12     def __repr__(self): 13    

Python实例31[批量对目录下文件重命名]

经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Unix Geeks[www.TopSage.com].mobi修改后:Mac OS X for Unix Geeks.mobi python代码如下 import osimport re def rename_dir(dir,regex,f):  if not os.path.isdir(dir) or

python实例31[生成随即的密码]

代码: import randomimport stringimport time # strong.high = 3  #random for the whole passwd#storng.middle = 2  # include one special sign#strong.ow = 1  # just include characters or digits def mkpassByRandom(size=8, strong = 2):    chars = []    chars.

python基础31[常用模块介绍]

python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能. * pickle: pickle模块被用来序列化python的对象到bytes流,从

python环境搭建(python2和python3共存)

安装两个版本的意义 验证自己代码对版本的兼容性 网上下载的某些源码只能在python2或者python3中运行 安装过程记录 1.去python官网下载python的安装包, 下载完成后如下图所示 2.开始安装 这一步并没有好说的,选择自己安装的路径.这里推荐选择C盘或者D盘的根目录便于查找 注意一点是其中有一个选项是ADD TO PATH,请先不要勾选 3.配置环境变量 配置环境变量的意义在哪里呢?举个例子,比如你要打开QQ,从本质上来说你要到QQ的安装目录去运行,但是平时我们在桌面都有个快捷