Python 2.x和Python 3.x版本的区别

版权声明:本博客所有原创文章可转载但必须附加原创网址,不可复制内容转发 https://blog.csdn.net/qq_43322796/article/details/89445218

 

和Python 2.x版本相比,Python3.x版本在语句使用输出,编码,运算和异常方面做了一些调整,具体如下:

1.print函数替代了print语句

在Python 2.x中,输出数据使用的是print语句。但是在Python 3.x中,print语句没有了,取而代之的是print函数。实例如下:

Python 2.x

>>>print(3,4)   #print语句输出,输出print后的所有东西,包括括号和标点等

输出:(3,4)

Python 3.x

>>>print(3,4) #print函数输出,输出括号内的东西以逗号分隔,所以并不会输出逗号而是相对应的空格

输出:3  4

2.Python 3.x默认使用UTF-8编码

Python 2.x中有ASCII Str()类型,Unicode()是单独的,不是byte类型。在Python 3.x版本的源代码中,默认使用的是UTF-8编码,从而可以很好的支持中文或其他的非英文字符。

3.除法运算

和其他语言相比,python语言的除法非常的高端,它的除法运算包含两个运算符,分别是/和//,这两个运算符在Python 2.x和Python 3.x中的使用如下所示:

(1)运算符 /

在Python 2.x中,使用运算符/进行除法运算的方式和Java,C语言相似,整数相除的结果是一个整数,浮点整除法会保留小数点的部分得到一个浮点数的结果。但是,在Python 3.x中使用运算符/进行除法运算,整数之间的相除,结果也会是浮点数。实例代码如下:

Python 2.x

>>>1/2

输出:0

>>>1.0/2.0

输出:0.5

Python 3.x

>>>1/2

输出:0.5

(2)运算符//

使用运算符//进行的除法运算叫做floor除法(floor除法:截断余数直接返回一个整数,如果有任何一个操作数是浮点数则返回浮点数(如4//2==2,3//2==1, 4.0//2==2.0) ),这种除法会对除法的结果自动进行一个floor操作。使用这种运算符进行的除法运算,在Python 2.x和Python 3.x中是一致的。示例代码如下:

Python 2.x

>>>-1//2

输出:-1

Python 3.x

>>>-1//2

输出:-1

#    //为地板除法,会对除法的结果进行取整返回,至于返回的结果是否是浮点数取决于操作数中有无浮点数,如两个操作数都是整数那么就直接返回一个取整后的整数,如果操作数中有浮点数则返回结果是浮点数。

注意:使用运算符//进行的除法是执行floor操作,即获取不大于结果值得最大整除(向下取整)

4.异常

在Python 3.x版本中,异常处理改变的地方如下:

(1)在Python 2.x版本中,所有类型的对象都是直接被抛出的,但是在Python 3.x版本中,只有继承自BaseException的对象才可以抛出异常。

(2)在Python 2.x版本中,捕获异常的语法是“except Exception,var”。在Python 3.x版本中,引入as关键字,捕获异常的语法变更为“except Exception as var”。

(3)在Python 2.x版本中,处理异常使用“raise Exception,args”;在Python 3.x版本中,处理异常使用“raise Exception(args)”。

(4)Python 3.x版本中取消了异常类的序列行为和message属性。

关于Python 2.x版本中和Python 3.x版本中处理异常的示例代码如下:

Python 2.x

>>>try:

…      raise TypeError,"类型错误"

…    except TypeError,err:

…      print err.message

类型错误

Python 3.x

>>>try:

…      raise TypeError,"类型错误"

…    except TypeError as err:

…      print err.message

类型错误

5.八进制字面量表示

在Python 3.x中,表示八进制字面量的方式只有一种,并且必须写成“0o1000”这样的方式,原来“01000”的方式不能使用了。示例代码如下:

Python 2.x

>>>0o1000

输出:512

>>>01000

输出:512

Python 2.x

>>>0o1000

输出:512

>>>01000

输出:File “<stdin>”,line 1

           01000

                  ^

SyntaxError:invalid token

6.不等于运算符

Python 2.x的不等于运算符有两种写法:!=和<>,但是在Python 3.x中去掉了<>,只有!=一种写法。示例代码如下:

Python 2.x

>>>1!=2

输出:True

>>>1<>2

输出:True

Python 3.x

>>>1!=2

输出:True

>>>1<>2

输出:File “<stdin>”,line 1

            1<>2

                  ^

SyntaxError:invalid token

7.数据类型

Python中数据类型的改变如下。

(1)Python 3.x去除了long类型,现在只有一种整型int,但它的行为就像是Python 2.x版本中的long。

(2)Python 3.x新增bytes类型,对应于Python 2.x版本的八位串,定义一个bytes字面量的方法如下所示:

>>>bytes_demo=b'china'

>>>type(bytes_demo)

<type 'bytes'>

字符串对象和bytes对象可以使用.encode()(str—>bytes)或者.decode()(bytes—>str)方法相互转化。示例代码如下:

>>>string_demo=bytes_demo.decode()

>>>string_demo

'china'

>>>bytes_demo=string_demo.encode()

>>>bytes_demo

b'china'

(3)Python 3.x中,字典的keys(),items()和values()方法用返回视图代替列表,而Python 2.x版本中的iterkeys()等函数都被废弃。同时去掉的还有has_key()方法,用in替代。

————注意:本文章所有代码如要使用建议自己敲,不建议复制,有可能会有缩进或者空格问题,自己敲代码才能体会这样的快感^_^,如有错误请在评论区留言,本人改进,或有疑问私聊本人

 

 

         

猜你喜欢

转载自blog.csdn.net/qq_43322796/article/details/89445218