python2.xyupython3.x区别总结
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的版本区别 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差异、条件语句、数据类型、其他⼀、输⼊(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⼊门基础知识点(基础语法介绍)计算机基础知识介绍计算机核⼼部件分为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: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 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和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快速编程入门》——课后题答案简答题。
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的方式不能使用了。
常用python版本
常用python版本
Python是一种高级编程语言,被广泛使用于机器学习、数据科学、网络编程、Web开发等领域。
在Python的发展历程中,有许多不同的
版本,每个版本都有其特点和用途。
常用的Python版本包括Python 2.x和Python 3.x系列。
Python 2.x系列是在2000年推出的,目前最新版本是Python 2.7。
它是一个成熟的、广泛使用的版本,有许多的第三方库和框架可供使用。
然而,Python 2.x已经进入了维护阶段,不再支持新的功能和改进。
Python 2.x存在一些与Python 3.x不兼容的语法和特性,这意味着移植代码需要投入大量的时间和精力。
Python 3.x系列是在2008年推出的,目前最新版本是Python 3.10。
它是Python的未来,采用了许多新的语法和工具,提供了更好的性
能和安全性。
与Python 2.x不同的是,Python 3.x系列引入了许多破坏式改变,但它对Python的未来发展是至关重要的。
故,Python 3.x是目前应用更为广泛,且未来性更好的版本,建议在
新项目中选用。
但在一些历史悠久的项目中,可能需要采用Python 2.x版本,因为这些项目的代码是基于Python 2.x编写的,并且难以
迁移。
总之,在选择Python版本时,需要考虑项目的特性、已有代码的兼容性和未来方向等因素。
建议开发者们积极学习Python的新特性,使用最新版本的Python来推动项目的发展。
Python3_x和Python2_x的区别
最近在学习使用Python3.2, 因为目前大多数资料和书籍都是基于Python 2.x的,所以在学习的过程中会碰到一些问题,特此记录,方便查找不同,并分享给其他需要的朋友。
1.性能Py3.0运行pystone benchmark的速度比Py2.5慢30%。
Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。
Py3.1性能比Py2.5慢15%,还有很大的提升空间。
2.编码Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:>>> 中国= 'china'>>>print(中国)china3. 语法1)去除了<>,全部改用!=2)去除``,全部改用repr()3)关键词加入as 和with,还有True,False,None4)整型除法返回浮点数,要得到整型结果,请使用//5)加入nonlocal语句。
使用noclocal x可以直接指派外围(非全局)变量6)去除print语句,加入print()函数实现相同的功能。
同样的还有exec语句,已经改为exec()函数例如:2.X: print "The answer is", 2*23.X: print("The answer is", 2*2)2.X: print x, # 使用逗号结尾禁止换行3.X: print(x, end=" ") # 使用空格代替换行2.X: print # 输出新行3.X: print() # 输出新行2.X: print >>sys.stderr, "fatal error"3.X: print("fatal error", file=sys.stderr)2.X: print (x, y) # 输出repr((x, y))3.X: print((x, y)) # 不同于print(x, y)!7)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的bool值8)输入函数改变了,删除了raw_input,用input代替:2.X:guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法3.X:guess = int(input('Enter an integer : '))9)去除元组参数解包。
python3.x 对 python2.x 语法变动
一、 print 从语句变为函数
原: print 1, 2+3
改为: print ( 1, 2+3 )
二、range 与 xrange
# -------------------------------
b = s.encode("gbk")
f.write( b )
f.close()
input("?")
读取该文件的例子:
#coding=gbk
f = open("c:\\1234.txt", "rb")
f.seek(0,2) #定位至文件尾
# 要 python 3.0 中 必须写作 print ( s )
# ------------------------------
f.close()
input("?")
运行后应显示:
张三李四abcd1234
(四) bytes序列,一但形成,其内容是不可变的
例:
s="ABCD"
也可以写作
c = bytearray( "你好", "gbk")
(五) 字节数组转化为字符串
c = bytearray( 4 )
c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68
s = c.decode( "gbk" )
print ( s )
python的各版本的不同
python的各版本的不同Python的版本主要分为 2.× 、 3.× 两个系列。
Python3计划每年发布⼀个新的⼦版本,⼀次只增加⼀两种新语法。
使⽤时当然选择越新的Python版本越好,版本越⽼的代码越难维护。
维护⽼版本的代码时,需要了解各版本之间的主要差异。
有时看到⼀些代码的语法特点,可以⼤致猜出它是什么版本。
Python2与Python3从Python2到Python3是⼀个⼤版本升级,有很多不向下兼容的差异,导致很多Python2的代码不能被Python3解释器运⾏,或者反之。
Python2的最后⼀个⼦版本是Python2.7,此后没有再发布新版本,只是发布⼀些维护补丁。
到2020年,Python官⽅将停⽌对Python2的维护,所有⽼代码都会超过保质期。
差异点Python2Python3输出⽅式⽤print关键字,⽐如print "Hello"⽤print()函数,⽐如print("Hello")输⼊⽅式⽤raw_input()函数⽤input()函数字符串的编码格式默认采⽤ASCII默认采⽤Unicode格式化字符串的⽅式⽤ % ,⽐如"Hello, %s" % ("World")⽤format()函数,⽐如"Hello,{}".format('World')源⽂件的编码格式默认采⽤ASCII,因此使⽤中⽂时要在源⽂件开头加上⼀⾏# -*- coding: utf-8 -*-默认采⽤uft-8………Python2系列Python2.0:于2000年发布Python2.1 ~ Python2.6 略Python2.7:于2010年发布Python3系列Python3.0:于2008年发布Python3.1 ~ Python3.3 略Python3.4于2014年发布:采⽤pip作为Python包的默认安装⽅式。
python2与python3字符串详细对比
Python 2与Python 3字符串详细对比下面来简单介绍一下,Python 2.x和Python 3.x在字符编码方面的知识:关键字含义具体的写法两者之间如何互换Python 2.xstr某种编码(UTF-8,GBK等)类型的字符串"python 2.x中,普通的,用引号括起来的字符,就是str;此时字符串的编码类型,对应着你的Python文件本身保存为何种编码有关,最常见的Windows平台中,默认用的是GBK"str->unicode:【核心代码逻辑】1.确保自己知道对应字符串,是什么编码的2.然后使用yourStr.decode("yourKnownEncoding")去解码为对应的unicode字符串注:yourKnownEncoding为你自己所已知的,该字符串的编码类型3.然后继续你想要的各种处理【完整代码】参见下面的:python_2.x_str_to_unicode.py unicodeUnicode类型的字符串有两种写法:前缀加uu"Python 2.x中,在普通字符串,加上前缀u后,就表示字符串是Unicode类型了"用unicode()强制转换:unicode("Python 2.x中,在普通字符串,加上前缀u后,就表示字符串是Unicode类型了")此种写法的前提是,python 文件中指定了对应的编码类型;并且对应的python文件的确是以该编码方式保存的unicode->str:【核心代码逻辑】1.先声明,或已获得了对应的,Unicode字符2.然后用unicodeVariable.decode("encodingType")去编码为对应的encodingType类型的字符串。
其中encodingType常见的有UTF-8,GBK等等;注:将Unicode转换为什么编码,因实际情况而异;即具体编码为什么类型,和你的实际使用的需求和目的有关;3.然后再去做后续的,你自己想要的,任何的处理包括将其保存到对应的文件,传递给后面的代码处理等。
常用的python版本
常用的python版本在Python开发中,选择合适的Python版本是非常重要的。
在Python的发展历程中,Python1.x和Python 2.x版本相对较老,当前主要使用的Python版本有Python 3.x系列。
下面将为大家介绍常用的Python版本。
1. Python2.x系列版本在Python 2.x系列中,Python 2.7是目前的最新版本,它的安装和使用相对较为简单,可以应用于一些相对较老的项目中。
但是,Python 2.x系列也存在一些问题,比如在编码问题和Unicode处理方面存在一些问题。
此外,在Python 2.x版本中,常常需要通过__future__模块进行一些向后兼容的操作,这使得Python 2.x版本的使用体验不尽如意。
2. Python3.x系列版本Python 3.x是当前主要使用的版本,最新的Python 3.10版本已经发布。
相对于Python 2.x版本,Python 3.x版本进行了大量优化和改进,具有更好的性能、更好的Unicode处理、更先进的语法和更丰富的语言特性,最重要的是,Python 3.x系列已经将字符串和字节串进行了区分,大大提升了程序的可维护性。
另外,Python 3.x系列开发较为活跃,每年会有数次更新,使得生态越来越丰富。
3. Jython和IronPython除了Python标准实现,还有其他几款不同的Python实现,它们分别是针对Java和.NET平台的Jython和IronPython。
这两个Python 实现对Python的支持程度越来越高,相对于Python标准实现,它们可以更好地与Java和.NET平台进行交互,使开发Python应用程序更加灵活。
总的来说,Python 3.x系列是目前主流版本,官方也推荐使用Python 3.x系列版本,如果你是新手,或者是要在新项目中使用Python,推荐选择Python 3.x版本,如果你接触Python时间较长,或者是有一些相对较老的项目,可能需要选择Python 2.x版本。
Python3.x和Python2.x的区别
Python3.x和Python2.x的区别1.性能Py3.0运行pystone benchma rk的速度比P y2.5慢30%。
Guido认为P y3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。
Py3.1性能比Py2.5慢15%,还有很大的提升空间。
2.编码Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:>>>中国= 'china'>>>print(中国)china3. 语法1)去除了<>,全部改用!=2)去除``,全部改用rep r()3)关键词加入as和with,还有True,False,None4)整型除法返回浮点数,要得到整型结果,请使用//5)加入nonlo cal语句。
使用noclo c al x可以直接指派外围(非全局)变量6)去除print语句,加入print()函数实现相同的功能。
同样的还有exec语句,已经改为exe c()函数例如:2.X: print "The answeris", 2*23.X: print("The answeris", 2*2)2.X: print x, # 使用逗号结尾禁止换行3.X: print(x, end=" ") # 使用空格代替换行2.X: print # 输出新行3.X: print() # 输出新行2.X: print >>sys.stderr, "fatal error"3.X: print("fatal error", file=sys.stderr)2.X: print (x, y) # 输出repr((x, y))3.X: print((x, y)) # 不同于prin t(x, y)!7)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出T ypeErr or而不是返回随即的bool值8)输入函数改变了,删除了raw_input,用input代替:2.X:guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法3.X:guess = int(input('Enter an integer : '))9)去除元组参数解包。
Python2.x和3.x主要差异总结
Python2.x 和 3.x 主要差异总结开始使用Python 之后就到处宣扬Python 如何如何好,宣传工作的一大重要诀窍就是做对比,比如原先用Java 的时候做个什么东西要写多少代码,怎么个别扭,现在用Python 实现同样的功能怎么个简单等等。
不过谈Python ,不管怎么谈,老会谈到Python2.x 和 3.x 的版本差异问题,这个差异真不是一般的大,从一个简单的print 到核心库的改进都牵扯到了很多,现在总结了一些主要的差异点。
基本类型(1) 整形在python 2.x中,有两种整数类型,一般的32 位整数和长整数,长整数都是以L 或者l( 不建议使用小写l, 容易跟 1 搞混) ,超过32 位长度之后会自动转换为长整形。
在python 3.x中,允许我们更随心所欲更自然的使用整数,只有一种类型,没有长度限制。
python 2.x?1 >>> 10000000000000000000000000000000002 1000000000000000000000000000000000Lpython 3.x1>>> 1000000000000000000000000000000 21000000000000000000000000000000(2) 八进制字面量表示在Python 2.x 中,表示八进制字面量有两种方式,一是同众多我们所熟悉的编程语言一样,直接在数字前加0, 比如01000, 另外是加0o(0 和小写字母o)0o1000在Python 3.x 中,表示八进制字面量的方式只有一种,就是0o1000python 2.x?1 >>> 0o10002 5123>>> 010004512python 3.x1>>> 010002 File"<stdin>", line 1301000^45 SyntaxError: invalid token6 >>> 0o1000512运算符(1) 不等于测试Python 2.x 中不等于有两种写法!= 和<>Python 3.x 中去掉了<>, 只有!= 一种写法,还好,我从来没有使用<> 的习惯(2) 去掉了repr 表达式``Python 2.x 中反引号`` 相当于repr 函数的作用Python 3.x 中去掉了`` 这种写法,只允许使用repr 函数,这样做的目的是为了使代码看上去更清晰么?不过我感觉用repr 的机会很少,一般只在debug 的时候才用,多数时候还是用str 函数来用字符串描述对象。
弃疗路(一)之 Python版本
弃疗路(一)之 Python版本Python上线于1990年,经过30多年的磨炼与优化,Python 已经是目前最受欢迎的程序设计语言之一了。
自2004年之后,Python的使用率呈线性增长,Python2.0于2000年10月16日发布,比早期版本有更加透明,包容的语言开发过程。
Python3于2008年12月3日发布,但是并不完全兼容Python2的所有语法。
为了让用户容易将特性移植到Python3上,也有了稳定版本Python2.7。
下图为Python各个版本迭代的时间罗列:Python的版本主要分为 Python2.x 和Python3.x 两个系列,按照Python官方的计划,Python2只支持到2020年。
为了不带入过多的累赘,Python3在设计的时候没有考虑向下相容,许多针对早期Python版本设计的程序都无法在Python3上正常执行。
为了照顾现有程序,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。
Python 2.7 被计划为 2.x 系列的最后一个主要版本,在 2.x 进入长期维护期之前。
这个版本包含了许多在 Python 3.1 中首次发布的特性。
新的Python程序建议使用Python3版本的语法,除非执行环境无法安装Python3或者程序本身使用了不支援Python3的第三方库。
Python3 计划每年发布一个新的子版本,每次只增加两三种新语法。
使用时当然选择越新的 Python 版本越好,版本越老的代码越难维护。
维护老版本的代码时,需要了解各版本之间的主要差异。
有时看到一些代码的语法特点,可以大致猜出它是什么版本。
二、Python2与Python3版本区别1.print函数Python 2中的print语句被Python 3中的print0函数取代,这意味着在Python 3中必须用括号将需要输出的对象括起来。
Python2.x与Python3.x的区别
Python2.x与Python3.x的区别Python 3.x print函数代替了print语句在 Python2.x 中,输出数据使⽤的是 Print 语句,例如:1 >>> print"3,4"2 3,43或者4 >>> print(3,4)5 (3,4)但是在 Python 3.x 中,print 语句没有了,取⽽代之的是 print 函数,例如:1 >>> print(3,4)2 3 4如果还像 Python 2.x 中那样使⽤ print 语句,Python 编译器就会报错,例如:1 >>> print"3,4"2 File "<stdin>", line 13print"3,4"4 ^5 SyntaxError: Missing parentheses in call to 'print'Python 3.x 默认使⽤ UTF-8 编码相⽐ Python 2.x 默认采⽤的 ASCII 编码,Python 3.x 默认使⽤ UTF-8 编码,可以很好地⽀持中⽂或其它⾮英⽂字符。
例如,输出⼀句中⽂,使⽤ Python 2.x 和 Python 3.x 的区别如下:1#Python 2.x2 >>>str ="C博客园"3 >>>str4'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'56#Python 3.x7 >>>str ="C博客园"8 >>>str9'C博客园'不仅如此,在 Python 3.x 中,下⾯的代码也是合法的:1 >>>中国="China"2 >>>print(中国)3 ChinaPython 3.x 除法运算和其他语⾔相⽐,Python 的除法运算要⾼端很多,它的除法运算包含 2 个运算符,分别是 / 和 //,这 2 个运算符在 Python 2.x 和 Python 3.x 的使⽤⽅法如下:/ 运算符在 Python 2.x 中,使⽤运算符 / 进⾏除法运算的⽅式和、C 语⾔类似,整数相除的结果仍是⼀个整数,浮点数除法会保留⼩数点部分,例如:1 >>>1/22 03 >>>1.0/24 0.5但是在 Python 3.x 中使⽤ / 运算符,整数之间做除法运算,结果也会是浮点数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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之间的差异,那么移植情况可能会更复杂,但即使这样,它仍然可能是比创建自己的等效包更容易。
该延长移植指南介绍了一些关键的差异。