python2和python3的区别,python3和Python2的区别
python2和python3的区别,python3和Python2的区别详细介绍
本文目录一览: Python 2 和 Python 3 有哪些主要区别
1. 比较大的区别在于字符串的编码。
2. print 一个是函数一个是语句。
3. 整数除法,python2 中5/2 =2,python3 中 5/2=2.5.
4. 库上面2可能更全一些,但是现在主流库基本都支持3了,这方面3没有太多劣势。
5. 据说3会略微慢一些。
python2和3的区别
python3相比python2,效率上会低一些,因为python3代码更加规范,代码量稍微会大一些,但是低的不明显;python3版本,默认使用utf-8编码,eg:姓名=''xiaoming'',变量设置成功不会报python2版本默认使用Unicode编码,eg:姓名=''xiaoming'',程序会报错;3.1不等于,python3上面表示1!=2,python2上面可以使用1!=2,也可以使用12。Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
Python 2 和 Python 3 有哪些主要区别
智游教育为你解答,希望可以帮助到你
python有两个主要的版本,python2 和 python3
,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。
1.性能
py3.0运行 pystone
benchmark的速度比py2.5慢30%。guido认为py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。
py3.1性能比py2.5慢15%,还有很大的提升空间。
2.编码
py3.x源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>> 中国 = 'china'
>>>print(中国)
china
3. 语法
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有true,false,none
4)整型除法返回浮点数,要得到整型结果,请使用//
5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
6)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
python3和Python2的区别
以下是他们之间的区别:
1、python2默认是使用ASCII编码,所以说他们的编码默认是不支持中文的。
python3默认是使用UTF-8的编码,所以他们默认是支持中文的。
2、python2是不支持中文编码的,而且python2
的变量命名只能用英文。
python3是支持中文的,而且python3的变量命名是能够使用中文的。
“python2”和“python3”有什么区别?
简单的说,2是旧3是新,3是2的升级版,3完全高于2,2是时代的眼泪3是现在和未来,2逐渐被淘汰3用的人越来越多。
之前两个版本共存只是因为诸多package的更新换代并没有跟上,但是到了现在只要还有活人维护的package基本都兼容3了,然而新建的package却越来越多不兼容2。使用2的意义基本没有了,日常用3大不了留一个2备用就行。
拓展回答:
Python, 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3] 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。
需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。
Python 2 和 Python 3 有哪些主要区别
主要修改最多的是print的区别,python2x是语句,python3x是函数。
其他的函数和标准库,用到的时候做相应修改就是了。这个讲的比较细,比很多书上都讲的细,请参考。
http://m.blog.csdn.net/article/details?id=21535901
1. print不再是语句,而是函数,比如原来是 print 'abc' 现在是 print('abc')
但是 python2.6+ 可以使用 from __future__ import print_function 来实现相同功能
2. 在Python 3中,没有旧式类,只有新式类,也就是说不用再像这样 class Foobar(object): pass 显式地子类化object
但是最好还是加上. 主要区别在于 old-style 是 classtype 类型而 new-style 是 type类型
3. 原来1/2(两个整数相除)结果是0,现在是0.5了
python 2.2+ 以上都可以使用 from __future__ import division 实现改特性, 同时注意 // 取代了之前的 / 运算
4. 新的字符串格式化方法format取代%
错误, 从 python2.6+ 开始已经在str和unicode中有该方法, 同时 python3依然支持 % 算符
5 xrange重命名为range
同时更改的还有一系列内置函数及方法, 都返回迭代器对象, 而不是列表或者 元组, 比如 filter, map, dict.items 等
6. !=取代 < >
python2 也很少有人用 < > 所以不算什么修改
7. long重命名为int
不完全对, python3 彻底废弃了 long+int 双整数实现的方法, 统一为 int , 支持高精度整数运算.
8. except Exception, e变成except (Exception) as e
只有 python2.5 及以下版本不支持该语法. python2.6 是支持的. 不算新东西
9. exec变成函数
类似 print() 的变化, 之前是语句.
python2和3的区别大吗?
python2和python3分别是python的两个版本,python3作为一个升级版,许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行的。区别:
1、Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'
Python3 使用 print 必须要以小括号包括打印内容,比如 print('hi')
2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存
3、python2中使用ascii编码,python3中使用utf-8编码
4、python2中unicode表示字符串序列,str表示字节序列
python3中str表示字符串序列,byte表示字节序列
5、python2中为正常显示中文,引入coding声明,python3中不需要
6、python2中是raw_input()函数,python3中是input()函数
极光爬虫,数据采集服务服务提供商,为您提供更快,更可靠的服务。
1、Python2之前是非常受欢迎的,现在很多软件公司依然使用的是Python2,不过由于越来越多的公司开始从Python2迁移到3,因此初学者可以避免花费更多的时间学习过去的版本了。
2、Python2和Python3之间有一些是无法互相兼容的,现在很多开发人员都在使用Python3开发库,许多老的基于Python2的开发包依然是无法兼容的,想要将Python2库移植到Python3上,对于初学者来说还是比较困难的事情。
3、Python3有更好的Unicode编码支持在Python3的语法之中,默认文化字符串就是Unicode,而Python2默认的存储为ASCII,而且Unicode比ASCII更加通用,可以提供更多的选择。
4、Python3版本改进了整数除法的问题,在Python2中如果你在小数点后面写任何一个数字,计算会自动四舍五入的。而使用Python3的情况下是不需要担心这种情况发生的。
5、两个版本之间有不同的打印语句声明语法,是语法差异,不影响Python的功能。
Python2和Python3之间有什么区别
本篇文章给大家介绍Python2和Python3之间有什么区别,让大家可以对Python版本有所了解。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。我们如果不熟悉Python,可能会对Python可用的不同版本感到困惑。对于应该使用哪个版本的Python的这个问题目前是没有明确答案的,这决定取决于你想要达到的目标。虽然Python 3是该语言的最新一代,是该语言的未来,但还是有许多程序员仍然使用Python 2.7,这个2010年发布的Python 2的最终更新版本。这是因为一些较旧的库和软件包仅适用于Python 2。为什么有不同版本的Python?随着开发人员扩展语言的功能,并消除给开发人员带来问题的怪癖,编程语言不断演进。Python 3是在2008年引入的,其目的是使Python更易于使用,并改变它处理字符串的方式,以符合当今对语言的要求。刚学会用Python 2编程的程序员有时发现很难适应新的变化,但是新手经常发现新版本的语言更有意义。Python 3.0与以前的Python版本有着本质的不同,因为它是第一个与旧版本不兼容的Python版本。程序员通常不需要担心小的更新(例如,从2.6到2.7),因为他们通常只改变Python的内部工作,而不需要程序员改变他们的语法。Python 2.7(Python 2的最终版本)和Python 3.0之间的变化要重大得多了,这使得在Python 2.7中工作的代码可能需要以不同的方式编写才能在Python 3.0中工作。Python 2和Python 3之间的主要区别是什么?1、输出--print在Python 2中,“print”被视为语句而不是函数。尽管你可以,但你无需将要输出的文本包装在括号中。这可能令人困惑,因为Python中的大多数其他操作都使用需要将参数放在括号内的函数。如果将括号放在要输出的以逗号分隔的项目列表周围,也会导致意外结果。在Python 3中,就明确的将“print”视为一个函数,这意味着你必须以标准方式将需要输出的项目传递给括号中的函数,否则你将收到语法错误。一些Python 2程序员发现这种变化很烦人,但它可以帮助防止错误的发生。例:print 'Hello, Geeks' # Python 3.x 不支持print('Hope You like these facts')输出:Python 2.x的输出:Python 3.x的输出:因为print 'Hello, Geeks'在Python 3.x 不支持,所以出错:2、整数除法:Python 2将小数点后面没有任何数字的数字视为整数,这可能会导致在除法期间出现意外结果。例如,如果在Python 2代码中输入表达式:3/2,则评估结果将为1,而不是你所期望的1.5。这是因为Python 2会假设你希望除法的结果为整数,因此它将计算向下舍入到最接近的整数。为了获得结果1.5,你必须编写3.0 / 2.0来告诉Python,你希望它返回一个浮点数,即在结果中包含小数点后面的数字。Python 3则会默认将3/2评估为1.5,这对于新程序员来说有更直观的感受。3、列表理解循环变量:在以前的Python 2.x版本中,给出在列表推导中迭代的变量与全局变量相同的名称可能导致全局变量的值被更改, 这通常不是你想要的。在Python 3中已经修复了这个烦人的错误。因此,你可以使用在列表理解中已经用于控制变量的变量名,而不必担心它泄露并扰乱其余代码中变量的值。4、Unicode字符串:默认情况下,Python 3是将字符串存储为Unicode,而如果Python 2要将字符串存储为Unicode,则要求使用“u”标记字符串。Unicode字符串比ASCII字符串更通用,它们都是Python 2的默认字符串,因为它们可以存储来自外语的字母以及表情符号和标准的罗马字母和数字。如果要确保Python 3代码与Python 2兼容,你仍然可以使用“u”来标记Unicode字符串。5、错误处理:Python 2和Python 3两个版本的错误处理有一个小的变化。在python 3.x中,'as'关键字是必需的。例:try: trying_to_check_error except NameError, err: print err, 'Error Caused' # 不能在Python 3中工作运行:Python 2.x中输出:Python 3.x 中运行,报错:try: trying_to_check_error except NameError as err: # 'as' 是 Python 3.x 必需的存在的关键字 print (err, 'Error Caused')运行:Python 2.x中输出:Python 3中输出:6、xrange:Python 3.x中不存在Python 2.x的xrange()。在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],而xrange返回一个xrange对象,即xrange(3)返回iterator对象,它与Java迭代器类似,并在需要时生成数字。如果我们需要多次迭代相同的序列,我们更喜欢range(),因为range提供了一个静态列表。xrange()每次重建序列。xrange()不支持切片和其他列表方法。xrange()的优点是,当任务迭代大范围时,它可以节省内存。在Python 3.x中,范围函数现在执行xrange在Python 2.x中的功能,因此为了保持代码的可移植性,我们可能希望坚持使用范围。所以Python 3.x的范围函数是来自Python 2.x的xrange。例:for x in xrange(1, 5): print(x), for x in range(1, 5): print(x),运行:Python 2.x中输出:Python 3中运行,报错:选择哪种版本归结为你需要的是什么库Python 2已经存在更长时间,这可能是一个优势,并不是所有可用于Python 2的库都已移植到Python 3.另一方面,一些开发人员正在为Python 3创建可能与Python 2不兼容的库。对于很多人来说,决定使用Python 2还是Python 3取决于他们想要使用哪些库。当然,如果你正在学习Python来处理现有的Python应用程序,那么学会使用编写软件的Python版本是有意义的。许多人认为Python 3是Python 2的改进版本,因为一些更新消除了程序员常见的错误(参见上面的打印示例)。如上所述,一些更改使Python 3更易于初学者理解。因此,不需要使用任何特定库的新程序员可能会考虑学习Python 3,因为在未来几年可能会逐渐转向新语言,因为Python 2的更新停止并支持旧版本该语言版本减少。用法统计显示使用Python 3的程序员数量已逐渐增加。除非有明确的理由选择一个版本的Python而不是另一个版本,例如需要处理用Python 2编写的现有代码,否则不值得担心这个决定。大多数语法在每种语言版本中都是相同的。如果你需要从Python 2切换到Python 3,反之亦然,那么熟悉打印语句/函数的更改以及Python处理整数除法的方式之间的差异不应花费太长时间。总结:
python3和Python2的区别
在python3把python2中好多原本是函数的变成了类,比如open,input,还有就是2中的输入函数有两个,而3中统一为input,输出在2中是语句,但是3中变成了函数,操作起来更为方便,运算呢,就是把除法和取余额额符号互换了,还有其他很多区别,比如很多类对象没有了,但一般能用到的就是我提到的这些。
程的话最重要的是编程思想,Python3和Python2,它的思想基本是共通的,只是少量的语法差异。而编程中,语法只是细枝末节的东西。无论你学2还是3,都没有区别。会Python的人,一般2和3都会。当你学会了3,只要稍微花上一点时间学习2的语法,那么两门语音你都会了!
1.print函数:print不再是语句,而是函数(Python3中print为一个函数,必须用括号括起来;Python2中print为class)。比如原来是 print 'abc' 现在是 print('abc')
Python 2 的 print 声明已经被 print() 函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。
2.在Python 3中,没有旧式类,只有新式类,也就是说不用再像这样 class Foobar(object): pass 显式地子类化object
但是最好还是加上. 主要区别在于 old-style 是 classtype 类型而 new-style 是 type类型
3.新的字符串格式化方法format取代%
错误, 从 python2.6+ 开始已经在str和unicode中有该方法, 同时 python3依然支持 % 算符
4. xrange重命名为range
同时更改的还有一系列内置函数及方法, 都返回迭代器对象, 而不是列表或者 元组, 比如 filter, map, dict.items 等
5.long重命名为int
不完全对, python3 彻底废弃了 long+int 双整数实现的方法, 统一为 int , 支持高精度整数运算.
6.exec变成函数
类似print() 的变化, 之前是语句.
7.通过input()解析用户的输入:(Python3中input得到的为str;Python2的input的到的为int型,Python2的raw_input得到的为str类型)统一一下:Python3中用input,Python2中用row_input,都输入为str
幸运的是,在 Python 3 中已经解决了把用户的输入存储为一个 str 对象的问题。为了避免在 Python 2 中的读取非字符串类型的危险行为,我们不得不使用 raw_input() 代替。
8.整除:(没有太大影响)(Python3中/表示真除,%表示取余,//表示地板除(结果取整);Python2中/表示根据除数被除数小数点位得到结果,//同样表示地板除)统一一下:Python3中/表示真除,%表示取余,//结果取整;Python2中带上小数点/表示真除,%表示取余,//结果取整
9.xrange模块:
在Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中xrange() 会抛出命名异常)。
在Python 2 中 xrange() 创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。
这个表现十分像生成器(比如。“惰性求值”)。但是这个 xrange-iterable 是无穷的,意味着你可以无限遍历。
由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange() 函数 比 range() 更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。
简单补充下
主要是类库的变化, 组织结构变了些. 但功能没变. urlparse - > urllib.parse 这样的变化
最核心的变化它没有说, 对 bytes 和 原生 UNICODE 字符串的支持, 删除了 unicode 对象, str 为原生 unicode 字符串, bytes 替代了之前的 str 这个是最核心的