python2.xyupython3.x区别总结

合集下载

python2x与python3x区别

python2x与python3x区别

python2x与python3x区别python2.x 与 python3.x 的区别:1. python2.x 的源码编码不规范,源码重复较多;python3.x 的源码编码规范,清晰、优美、简单2. python2.x的默认字符集编码为ASCII,⽽python3.x 默认字符编码为UTF-8;因此表现就是python2默认是不⽀持中⽂字符的,除⾮源⽂件⾸⾏显⽰指定字符编码# -*- coding: utf-8 -*-( # -*- encoding:utf-8 -*-)不能在嵌套函数中将⼀个变量声明为⾮局部变量。

int(整型):在32位机器上,整数的位数为32位; 在64位机器上,整数的位数为64位;从python2.2起,如果整数发⽣溢出,Python会⾃动将整数转换为长整数,所以不加字母L也不会导致严重结果了。

3. python3.x : print语句没有了,变成了print()函数,⽽python2.6 和 python2.7部分地⽀持print()这种形式的语法不再有long(长整型)了,全都是int4. True 和 False的改变python2.x 中 True 和 False 是两个全局变量,因此可以进⾏赋值python3.x 中 True 和 False 变成了两个关键字,指向了固定的对象,不能再疲重新赋值。

5. nonlocal关键字Python2中要想在嵌套函数中将⼀个变量声明为⾮局部变量简直就是异想天开的事情,然⽽在Python3中这是稀松平常的事情。

Python3中加⼊了nonlocal关键字,可以在嵌套函数中给变量前⾯添加关键字nonlocal,就可以在嵌套函数之外使⽤嵌套函数中的变量。

python2.x和python3.x的版本区别

python2.x和python3.x的版本区别

python2.x和python3.x的版本区别 Python 3.x 版本相对于Python的早期版本,是⼀个较⼤的升级;许多针对早期Python版本设计的程式都⽆法在Python 3.0上正常执⾏。

Python 3.0 的变化主要体现在以下⼏个⽅⾯:1. print()函数 Python 2 中的print语句没有了,取⽽代之的是print()函数在Python2.6和Python2.7中,这三种形式是等价的print"fish"print ("fish") # print后⾯有个空格print("fish") # print()不能带任何其他参数2. Unicode python 2 默认⽀持ASCII编码,是不⽀持中⽂的;⽽Python 3 中默认是utf-8编码,可以识别中⽂;Python 2.x中:>>> str = "我爱北京天安门">>> str'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'>>> str = u"我爱北京天安门">>> stru'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'Python 3.x中:>>> str = "啊哈哈哈">>> str'啊哈哈哈'3. 异常 python 3 中捕获异常的语法由 except Exception,e 改成 except Exception as e 在2.x时代,所有类型的对象都可以直接被抛出;但在3.x时代,只有继承⾃BaseException的对象才可以被抛出,⽽且会让异常变得更为专⼀,只有在错误发⽣的情况才能⽤异常捕获语句来处理。

2.x与3.x差异、条件语句、数据类型、其他

2.x与3.x差异、条件语句、数据类型、其他

2.x与3.x差异、条件语句、数据类型、其他⼀、输⼊(raw_input)=====》python2.x版本1#!/usr/bin/env python2# -*- coding: utf-8 -*-34# 将⽤户输⼊的内容赋值给 name 变量5 name = raw_input("请输⼊⽤户名:")67# 打印输⼊的内容8print name输⼊密码时,如果想要不可见,需要利⽤getpass 模块中的 getpass⽅法,即:1#!/usr/bin/env python2# -*- coding: utf-8 -*-34import getpass56# 将⽤户输⼊的内容赋值给 name 变量7 pwd = getpass.getpass("请输⼊密码:")89# 打印输⼊的内容10print pwd⼆、流程控制和缩进(if语句 while循环)Python语⾔中严格区分缩进的⼤⼩,缩进不正确会报错。

1#!/usr/bin/env python2# -*- coding: encoding -*-34# 提⽰输⼊⽤户名和密码56# 验证⽤户名和密码7# 如果错误,则输出⽤户名或密码错误8# 如果成功,则输出欢迎,XXX!91011import getpass121314 name = raw_input('请输⼊⽤户名:')15 pwd = getpass.getpass('请输⼊密码:')1617if name == "zhao"and pwd == "cmd":18print"欢迎,zhao!"19else:20print"⽤户名和密码错误"1.单个if判断语句if条件: 代码块else: 代码块2.多个if判断语句1if条件:23 代码块45elif条件:67 代码块89elif条件:1011 代码块1213else:1415 代码块while循环1、基本循环1while条件:23# 循环体45# 如果条件为真,那么循环体则执⾏6# 如果条件为假,那么循环体不执⾏2、breakbreak⽤于退出所有循环1while True:2print"123"3break4print"456"3、continuecontinue⽤于退出当前循环,继续下⼀次循环1while True:2print"123"3continue4print"456"#例如,当为真,则打印yes,是个⽆限循环语句while True:print('yes')#也可以通过break,或continue关键字去控制语句的输出,如下count = 0while True:if count >2:break #当条件满⾜时,则使⽤break中断语句的执⾏count +=1 #每⼀次循环,都在count基础上加1for循环#for循环与while循环,for循环是可以预知循环次数的,不需要⼈为⼤中断,也能⾃⼰结束,⽽while是需要⼀个结束条件的。

Python入门基础知识点(基础语法介绍)

Python入门基础知识点(基础语法介绍)

Python⼊门基础知识点(基础语法介绍)计算机基础知识介绍计算机核⼼部件分为CPU,内存,硬盘,操作系统1.CPU:中央处理器,相当于⼈⼤脑2.内存:临时存储数据。

现在通常分为 8g和16g(不能替代硬盘的原因:1,成本⾼ 2,断电即消失)3.硬盘:长期存储⼤量的数据。

1T 512G等等,通常存储⽂件视频等等4.操作系统:管理,协调,计算机硬件与计算机软件之间的'桥梁'Python2X和Python3X区别python2x:源码重复,混乱,冗余,源码不规范python3x: 源码整合,优美,清晰,简单编程语⾔分为编译型和解释性编译型:⼀次性将你的所有的代码转化成010101010 代表语⾔:C C++ 优点:执⾏效率⾼。

0.001s 缺点:开发效率低。

解释型:逐⾏解释逐⾏运⾏。

代表语⾔: python 优点:可以跨平台。

开发效率⾼。

缺点:执⾏效率低。

0.01sPython的优缺点先看优点1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但⼊门容易,⽽且将来深⼊下去,可以编写那些⾮常⾮常复杂的程序。

2. 开发效率⾮常⾼,Python有⾮常强⼤的第三⽅库,基本上你想通过计算机实现任何功能,Python官⽅库⾥都有相应的模块进⾏⽀持,直接下载调⽤后,在基础库的基础上再进⾏开发,⼤⼤降低开发周期,避免重复造轮⼦。

3. ⾼级语⾔————当你⽤Python语⾔编写程序的时候,你⽆需考虑诸如如何管理你的程序使⽤的内存⼀类的底层细节4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够⼯作在不同平台上)。

如果你⼩⼼地避免使⽤依赖于系统的特性,那么你的所有Python程序⽆需修改就⼏乎可以在市场上所有的系统平台上运⾏5. 可扩展性————如果你需要你的⼀段关键代码运⾏得更快或者希望某些算法不公开,你可以把你的部分程序⽤C或C++编写,然后在你的Python程序中使⽤它们。

python2.x与python3.x的区别

python2.x与python3.x的区别

python2.x与python3.x的区别python2:print语句,语句就意味着可以直接跟要打印的东西,如果后⾯接的是⼀个元组对象,直接打印python3:print函数,函数就以为这必须要加上括号才能调⽤,如果接元组对象,可以接收多个位置参数,并可以打印1、表达式在 Python 2 中为获得计算表达式,你会键⼊:X = raw_input ("enter some values)但在 Python 3 中,你会键⼊:X = input ("enter some values")因此,⽆论我们输⼊什么,值都会分配给 2 和 3 中的变量 x。

当在 Python 2 中输⼊ 2*6 时,结果将是 12,这是评估值。

但是,当在 Python 3 中运⾏相同的程序时,结果是字符串值。

在这种情况下,它看起来像字符串格式的 2*6。

那么,我们如何获得评估表达式呢?现在,我们必须使⽤⼀个名为 eval 的表达式或函数。

当您在输⼊之前编写 eval 时,它会将表达式转换为计算值。

x= eval(input("enter some values")) = 12具体表达式⽰例:在 Python 2 中:1name =input("What is your name? ")print("Hello, %s."%name)然后输出:在 Python 3 中:1name =input("What is your name? ")print("Hello, %s."%name)然后输出:我们可以清楚地看到,他们之间的差异很⼩。

2、Print 选项在 Python 2 中,print 是⼀个不需要括号的语句。

在 Python 3 中,print 是⼀个函数,值需要⽤括号括起来。

Python 2输⼊:print "hello world"会输出:Python 3输⼊:1 != 1.0print (False)会输出:3、Unequal 操作当我们在 Python 2 中使⽤ Unequal 运算符时,我们需要使⽤⼤于 > 或⼩于 < 符号。

常用python版本

常用python版本

常用Python版本引言Python是一种简单易学、功能强大的编程语言,由于其开源免费、可移植性强等特点,逐渐成为最受欢迎的编程语言之一。

截至目前,Python已经发布了多个版本,针对不同的需求和发展方向,衍生出了许多分支版本。

本文将介绍一些常用的Python版本,并详细探讨它们的特点和适用场景。

一、Python 2.x系列Python 2.x系列是Python编程语言的早期版本,最后一个版本为2.7,发布于2010年。

在发布Python 3之前,Python 2.x系列是最广泛使用的Python版本。

然而,由于一些设计和功能上的限制,以及与Python 3的不兼容性,Python 2.x 系列逐渐不再维护和支持。

1. Python2.7Python 2.7是Python 2.x系列的最后一个版本,也是很多项目目前仍在使用的版本之一。

Python 2.7包含了许多有用的库和工具,并且有相对完善的文档和社区支持。

然而,需要注意的是,Python 2.7不再积极开发和维护,也不再接收新的特性更新,因此在新项目中选择Python 2.7可能会有一些限制。

二、Python 3.x系列Python 3.x系列是Python编程语言的最新版本,目前最新的稳定版本为3.9。

Python 3通过对语言的改进和优化,解决了Python 2.x系列中的一些问题,并引入了一些新的特性和语法。

然而,由于与Python 2.x系列的不兼容性,一些现有的Python代码需要进行适当的修改才能在Python 3中运行。

1. Python 3.9Python 3.9是Python 3.x系列的最新版本,于2020年发布。

Python 3.9引入了一些新的语法和特性,提供了更好的性能和可用性,同时修复了一些bug。

Python 3.9是目前最新的稳定版本,推荐在新项目中使用。

2. 版本兼容性问题由于Python 3.x系列与Python 2.x系列的不兼容性,迁移现有代码到Python 3可能存在一些挑战。

Python2和Python3版本及其差异、初学pytho选择版本

Python2和Python3版本及其差异、初学pytho选择版本

Python2和Python3版本及其差异、初学pytho选择版本⼤版本上分为python2和python3Python2:是Python⾥⾯⼀个⾮常重要的版本,最早的版本是从2001的时候开始的,特别是从2006年开始py2.5的发布,python的功能逐渐强⼤起来,慢慢开始稳定下来,并且差不多1-2年左右递增⼀个版本,在08年左右开始慢慢的⽕起来了。

Python2的最后⼀个⼦版本是Python2.7。

此后没有再发布新版本,只是发布⼀些维护补丁,做⼀些新硬件和操作系统兼容的相关维护⼯作,以及修改⼀些bug。

到2020年,Python官⽅将停⽌对Python2的维护,不会再有新的功能加⼊,所有⽼代码都会超过保质期。

那么Python3为什么会出现呢?其实是为了解决Python2⾥⾯⼀些历史问题和缺陷:第⼀个是字符串的问题:Python 2 中⽂本和⼆进制数据是⼀个烂摊⼦,Python中的str 既可以代表⼆进制数据,⼜可以说是⽂本数据,是有⼆义性。

⽂字既能代表⽂本数据⼜能代表⼆进制数据这很⿇烦,这违背了语⾔的初衷,所以很容易出现bug。

并且此类错误发⽣的时候,我们很难意识到,《Python之禅》⾥讲“应该有⼀个“应该有⼀个––最好只有⼀个显⽽易见的⽅式去实现”。

⽂字既能代表⽂本数据⼜能代表⼆进制数据这很⿇烦。

⼀旦对象脱离你的控制,你将⽆从知晓。

⽐如,如果你从⽹络上读到⼀些东西,你得⼩⼼判别这个 str 是代表⼆进制数据还是⽂本数据。

或者你的代码⾥有⼀个bug,它是⽤来将 str 变换成⽂本信息––或者完全别的东西––但你搞砸了,不⼩⼼跳过了这⼀步。

由于 str 潜在的代表两种类型,此类错误发⽣的时候,我们很难意识到。

举个例⼦:如果你是 Python 3 的⽤户,你会说它是⼀个按照 “a”、”b”、”c”、”d”顺序包含四个字母的字符串。

如果你是 Python 2 的⽤户,你也会说同样的话。

你同样也可能会说它是代表 97、98、99、100 的数组。

《Python快速编程入门》——课后题答案

《Python快速编程入门》——课后题答案

《Python快速编程入门》——课后题答案简答题。

1.Python具有的特点如下:简单易学开源高级语言可移植性解释性面向对象可扩展性丰富的库规范的代码2.Python可以应用在下列领域:web应用开发操作系统管理、服务器运维的自动化脚本?科学计算桌面软件服务器软件(网络软件)游戏构思实现,产品早期原型和迭代3.Python2.x和Python3.x的区别如下:(1)在python2.x 中,输出数据使用的是print语句。

但是在python3.x中,print语句没有了,取而代之的是print()函数(2)python2有ASCIIStr()类型,unicode()是单独的,不是byte类型。

在python3.x版本的源代码中,默认使用的是UTF-8编码,从而可以很好的支持中文字符。

(3)在python2.x中,使用运算符/进行除法运算,整数相除的结果是一个整数,浮点数除法会保留小数点的部分得到一个浮点数的结果。

在python3.x中使用运算符/进行除法,整数之间的相除,结果也会是浮点数。

(4)相比python2.x版本,python3.x版本在异常方面有很多改变:在python2.x版本,所有类型的对象都是直接被抛出的,但是,在python3.x版本中,只有继承自BaseException的对象才可以被抛出。

在python2.x版本中,捕获异常的语法是exceptexc,var。

在python3.x版本中,引入了as关键字,捕获异常的语法变更为exceptexcasvar。

在python2.x版本中,处理异常使用raiseException(args)。

在python3.x版本中,处理异常使用raiseException,args。

python3.x取消了异常类的序列行为和.message属性。

(5)在Python3.x中,表示八进制字面量的方式只有一种,并且必须写0o1000这样的方式,原来01000的方式不能使用了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Search标题文字蟒蛇Python2orPython3Python2orPython3首页最近更新查找网页帮助目录Python2orPython3页不变页面信息附件用户登录我应该使用Python 2或Python 3进行开发活动吗?内容我应该使用Python 2或Python 3进行开发活动吗?有什么区别?我应该使用哪个版本?但是我不想避免2.x?这是一个有很多错误的古老语言,它花了一个主要版本来让他们出来。

我想使用Python 3,但是我只想使用这个Python 2.x的这个小型库。

我真的需要恢复使用Python 2或放弃使用该库吗?我决定在3.x中写一些东西,但是现在有人想要使用只有2.x的东西。

我该怎么办?在通用代码库中支持Python 2和Python 3可能有助于在Python 2和Python 3之间进行选择的其他资源脚注有什么区别?简短版本:Python 2.x是旧版,Python 3.x是该语言的现在和未来Python 3.0于2008年发布。

最终的2.x版本2.7版本在2010年年中发布,并声明对这一生命周期版本进行了扩展支持。

之后,2.x分支机构将看不到新的主要版本。

3.x正在积极发展,已经有超过五年的稳定版本,包括2012年的3.3版,2014年的3.4个,2015年的3.5个,2016年的3.6个。

这意味着例如所有最近的标准库改进仅在Python 3.x中可用。

Guido van Rossum(Python语言的原始创建者)决定正确地清理Python 2.x,而不用考虑向后兼容性,而不是2.x范围内的新版本。

最大的改进是更好的Unicode支持(默认情况下,所有文本字符串都是Unicode)以及saner字节/ Unicode分隔。

此外,核心语言的几个方面(例如打印和执行语句,使用分区的整数)已被调整为使新手更容易学习,并与其他语言更加一致,而旧的拼图已被删除(例如,所有类现在都是新样式的,“range()”返回一个高效的内存可迭代,而不是像2.x中的列表)。

在什么新的Python 3.0文档提供的主要语言的变化,并与现有的Python 2.x的代码不兼容的可能的来源一个很好的概述。

Nick Coghlan(CPython核心开发人员之一)也创建了一个相对较广泛的关于转换的FAQ。

然而,更广泛的Python生态系统多年来已经积累了大量优质的软件。

3.x中的反向兼容性的缺点是,其中一些软件(特别是公司内部的软件)仍然不能在3.x上运行。

我应该使用哪个版本?您应该使用哪个版本主要取决于您想要完成的任务。

如果您可以使用Python 3.x完成所需的任务,那么很棒!有一些小的缺点,如非常略差库支持1,事实上,目前一些Linux发行版和Mac电脑仍然使用2.X的默认(尽管Python 3个中附带了很多的),但作为一个Python语言3 .x肯定准备好了。

只要Python 3.x安装在用户的计算机上(这应该是简单的,因为很多阅读这个人的人只能为自己或他们控制的环境开发某些东西),而你正在写的东西,你不知道需要Python 2.x模块,这是一个很好的选择。

此外,大多数Linux发行版都已经安装了Python 3.x,并且它们都可用于最终用户。

有些正在淘汰Python 2作为预装的默认值。

2特别是,向新程序员介绍Python的教师应该首先考虑教Python 3,然后再引入Python 2中的差异(如果需要的话),因为Python 3 消除了许多怪癖,这些怪癖可能会使开始的程序员试图学习Python 2。

但是,有一些关键问题可能需要您使用Python 2而不是Python 3。

首先,如果您部署到您无法控制的环境中,那么可能会强加一个特定版本,而不是允许您从可用版本中自由选择。

其次,如果要使用尚未具有与Python 3兼容的发布版本的特定第三方软件包或实用程序,并且移植该软件包是一项非常重要的任务,您可以选择按顺序使用Python 2以保留对该包的访问。

Python 3已经广泛地支持创建GUI应用程序,Tkinter在标准库中。

Python 3已经被PyQt支持,几乎从Python 3发行的那一天开始,PySide在2011年添加了Python 3支持。

可以使用支持Python 3的PyGObject创建GTK + GUI ,并且是PyGtk的后继。

许多其他主要软件包已被移植到Python 3,包括:NumPy和SciPy(用于数字处理和科学计算)Django,Flask,CherryPy和Pyramid(网站)PIL(图像处理模块)被其叉式枕头取代,它支持Python 3。

cx_Freeze(用于包装应用程序及其依赖项)py2exe(为Windows用户打包应用程序)OpenCV 3(一个开源计算机视觉和机器学习库)现在支持版本3.0和更高版本的Python 3。

请求(一个人类的HTTP库)lxml(一个功能强大的Pythonic XML处理库,将libxml2 / libxslt与ElementTree API 相结合)BeautifulSoup4(用于解析HTML和XML的屏幕抓取库)用于交互式计算的IPython / Jupyter项目完全支持Python 3。

和许多,更多!如果你想使用Python 3.x,但是由于依赖性而害怕,可能值得先做一些研究。

这是一个正在进行的工作,这个wiki页面可能已经过时了。

此外,由Python 2.6+和Python 3.3+支持的大型常用子集,许多现代Python代码应该在Python 3上大部分未经修改,尤其是与Web和GUI框架互操作的代码,强制应用程序正确区分二进制数据和文本(可能需要来自六个兼容性模块的一些帮助来处理名称更改。

尽管官方python文档和教程已经完全更新为Python 3,但仍然有很多文档(包括示例)在Web上和使用Python 2的参考书籍,尽管更多的是一直在更新。

这可能需要一些调整,以使事情与Python 3的工作。

有些人只是不想使用Python 3.x,这是它们的特权。

但是,他们在少数。

值得注意的是,如果您希望使用Python的替代实现,例如IronPython,Jython或Pyston(或Python平台或编译器实现的较长列表之一),Python 3的支持仍然相对较少。

如果您有兴趣选择此类实现,以便与其他系统集成或执行性能,可能会影响您。

但是我不想避免2.x?这是一个有很多错误的古老语言,它花了一个主要版本来让他们出来。

嗯,不完全3.0和3.1中的一些较少破坏性的改进分别已经反映到2.6和2.7。

有关回迁功能的详细信息,请参阅在Python 2.6的新增功能和什么新的Python 2.7。

一个非穷尽的功能列表,仅在3.x版本中可用,不会被转载到2.x系列:字符串默认为Unicode干净的Unicode /字节分离异常链接函数注释关键字参数的语法扩展元组拆包非局部变量声明此外,语言演进不仅限于核心语法或语义变化。

它还关注标准库,在3.x中进行了许多改进,不会直接转发到Python 2.请参见Python 3中的新增功能。

然而,许多标准库的改进也可通过PyPI获得。

也就是说,写得很好的2.x代码可能很像3.x代码。

这可能意味着许多事情,包括使用新式类,不使用古老的不推荐的奥术咒语打印,使用可用的惰性迭代器等。

一个实际的例子:良好的2.x代码通常将使用xrange而不是范围; xrange是Python 3.x范围实现的起点(尽管Python 3中的范围更好,因为它可以处理大于sys.maxint的值)。

应该注意的是xrange()不包括在Python 3中。

最重要的是,建议您专注于编写好的代码,以便2.x与3.x不再是一个问题。

包括编写完整的单元测试套件,并获得Unicode权限。

(Python 3.x相对于Unicode而言比Unicode少得多2.x认为这是一件好事,虽然它使一些软件包变得非常烦人。

)我想使用Python 3,但是我只想使用这个Python 2.x的这个小型库。

我真的需要恢复使用Python 2或放弃使用该库吗?假设您找不到已经支持Python 3的替代软件包,您仍然可以考虑几个选项:将库导入3.x. (“移植”意味着您使库工作在3.x.)如果事实证明是非常困难的,并且所有其他的依赖项确实存在于2.x中,那么请考虑从2.x 开始。

正如已经在其他地方所解释的那样,一旦每个依赖关系被成功移植,好的2.x代码通常会使切换变得无痛。

确定功能是否真的那么重要。

也许你可以放弃它?理想的情况是您尝试将库移植到3.x. 通常你会发现有人已经在这个工作了。

即使情况并非如此,现有的项目成员通常也会欣赏这些帮助,特别是随着移植常常在原始软件中发现错误,提高原始和3.x端口的质量。

移植并不总是容易的,但通常比从头开始编写自己的东西更容易。

在这个Python 2移植指南中解释了你应该怎么做移植。

基本思想是使用2.x版本的库,并检查在Python 2中使用-3命令行开关时,所有单元测试是否仍然通过,如果测试失败或发出警告,请修改源并重试(这可能需要降低与旧版本的Python版本的兼容性)。

一旦使用-3开关代码运行时没有警告,那么尝试使用Python 3运行它。

最好的情况是当这个“工作”- 使用现代Python 2成语编写的代码与Python 3源代码兼容时,在这一点上,“港口”可能已经完成。

如果Python 3中的测试仍然失败,那么标准库的2to3实用程序通常可以自动创建一个将在Python 3下运行的版本。

或者,Armin Ronacher的python-modernize实用程序代替Python 2.6+和3.2+或3.3+(取决于所使用的命令行选项)。

(如果使用后者,检查测试仍然通过Python 2是很重要的!)任何一种方法使得可以从单个2.x代码库并行支持2.x和3.x。

这比试图并行维护独立的2.x 和3.x分支要容易得多(只是问Python核心开发人员关于那个呢- 他们已经停止了这么多年了)。

如果自动转换或现代化后测试仍然失败,则代码可能会受到Python 2和3之间的语义变化的影响,转换器无法自动处理,也不会被-3开关检测到。

这样的问题应该是罕见的,但可能仍然存在- 如果遇到一个问题,那么值得提交一个针对CPython的错误请求一个新的-3警告。

如果涉及到C扩展模块,并且该项目没有使用Cython,cffi或SWIG等包装器生成器自动处理Python 2和3之间的差异,那么移植情况可能会更复杂,但即使这样,它仍然可能是比创建自己的等效包更容易。

该延长移植指南介绍了一些关键的差异。

相关文档
最新文档