博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 2.7 与Python3的区别
阅读量:4516 次
发布时间:2019-06-08

本文共 1172 字,大约阅读时间需要 3 分钟。

python 2.7

range()函数:

 

for i in range(10):    if i == 2:                break    print i

 

python 3.2

循环中用下面语句代替range(10):

list(range(10))

具体来说,在3.2中,range生成了一个iterator,要转换成list的类型。


print 这个大家都知道了 python3里print变成了函数 要用print('xx')的方式调用


下面说最大的一个变化,str和bytes:

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事

不管怎样,字符串和字节包之间的界线是必然的,下面的图解非常重要,务请牢记于心:

 enter image description here

 

字符串可以编码成字节包,而字节包可以解码成字符串。

>>>'€20'.encode('utf-8')b'\xe2\x82\xac20' >>> b'\xe2\x82\xac20'.decode('utf-8') '€20'

 

这个问题要这么来看:字符串是文本的抽象表示。字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时,我们生活在幸福的无知之中。我们可以对字符串进行分割和分片,可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的,字符串里的每个字符要用几个字节保存。只有在将字符串编码成字节包(例如,为了在信道上发送它们)或从字节包解码字符串(反向操作)时,我们才会开始关注这点。

传入encode和decode的参数是编码(或codec)。编码是一种用二进制数据表示抽象字符的方式。目前有很多种编码。上面给出的UTF-8是其中一种,下面是另一种:

>>>'€20'.encode('iso-8859-15')b'\xa420'>>> b'\xa420'.decode('iso-8859-15')'€20'

 

编码是这个转换过程中至关重要的一部分。离了编码,bytes对象b'\xa420'只是一堆比特位而已。编码赋予其含义。采用不同的编码,这堆比特位的含义就会大不同:

>>> b'\xa420'.decode('windows-1255')'₪20'

 


循环对象:

python2.7中是next()方法  python3中是__next__()方法

 

转载于:https://www.cnblogs.com/LIS2011/p/3307801.html

你可能感兴趣的文章
给网页添加跟随你鼠标移动的线条动画
查看>>
那些实用的Nginx规则
查看>>
oracle 解锁表
查看>>
2.1 - 递归练习题
查看>>
webApi之FromUri和FromBody区别
查看>>
HDU 4027 Can you answer these queries?
查看>>
智慧故事----每次进来看看都会有收获
查看>>
scala的list源码解密
查看>>
JavaScript&JQ 004_JS闭包
查看>>
Anaconda, conda, pyenv, virtualenv的区别
查看>>
POJ3636Nested Dolls[DP LIS]
查看>>
HDU 1573 X问题 [中国剩余定理]
查看>>
三分法
查看>>
数据结构复习1
查看>>
APM代码学习笔记1
查看>>
[转]35岁前程序员要规划好的四件事,健康居首位
查看>>
Delphi LiveBinds组件
查看>>
pc-H5 适配方案
查看>>
简单模拟多线程Socket通信(java)
查看>>
部署和操作 Enterprise Library 加密应用程序块
查看>>