python3.x 对 python2.x 语法变动
2015-11-20 07:27
591 查看
一、 print 从语句变为函数
原: print 1, 2+3改为: print ( 1, 2+3 )
二、range 与 xrange
原 : range( 0, 4 ) 结果 是 列表 [0,1,2,3 ]改为:list( range(0,4) )
原 : xrange( 0, 4 ) 适用于 for 循环的变量控制
改为:range(0,4)
三、字符串
原: 字符串以 8-bit 字符串存储改为: 字符串以 16-bit Unicode 字符串存储
四、try except 语句的变化
原:try: ...... except Exception, e : ......
改为
try: ...... except Exception as e : ......
五、打开文件
原:file( ….. )
或 open(…..)
改为:
只能用 open(…..)
六、从键盘录入一个字符串
原: raw_input( “提示信息” )改为: input( “提示信息” )
七、bytes 数据类型
A bytes object is an immutable array. The items are 8-bit bytes, represented by integers in the range 0 <= x < 256.bytes 可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。
由于在 python 3.0中字符串以 unicode 编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式的编码为字节序列后,方可写入。
(一)字符串编码(encode) 为 bytes
例: s = “张三abc12”
b = s.encode( 编码方式) # b 就是 bytes 类型的数据 # 常用的编码方式为 : "uft-16" , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等 # 注 : 当字符串不能编码为指定的“编码方式”时,会引发异常
(二) bytes 解码(decode)为字符串
s = "张三abc12" b = s.encode( "gbk") # 字符串 s 编码为 gbk 格式的字节序列 s1 = b.decode("gbk") # 将字节序列 b以gbk格式 解码为字符串 # 说明,当字节序列不能以指定的编码格式解码时会引发异常
(三)使用方法举例
coding=gbk
f = open(“c:\1234.txt”, “wb”)s = “张三李四abcd1234”
——————————-
在 python2.4 中我们可以这样写:
f.write( s )
但在 python 3.0中会引发异常
——————————-
b = s.encode(“gbk”)f.write( b )
f.close()
input(“?”)
读取该文件的例子:
#coding=gbk f = open("c:\\1234.txt", "rb") f.seek(0,2) #定位至文件尾 n = f.tell() #读取文件的字节数 f.seek(0,0) #重新定位至文件开始处 b = f.read( n ) # ------------------------------ # 在 python 2.4 中 b 是字符串类型 # 要 python 3.0 中 b 是 bytes 类型 # 因此需要按指定的编码方式确码 # ------------------------------ s = b.decode("gbk") print ( s ) # ------------------------------ # 在 python 2.4 中 可以写作 print s 或 print ( s ) # 要 python 3.0 中 必须写作 print ( s ) # ------------------------------ f.close() input("?")
运行后应显示:
张三李四abcd1234
(四) bytes序列,一但形成,其内容是不可变的
例:
s=”ABCD”
b=s.encode(“gbk”)
print b[0] # 显示 65
b[0] = 66
# 执行该句,出现异常: ‘bytes’ object does not support item assignment
八、 chr( K ) 与 ord( c )
python 2.4.2以前chr( K ) 将编码K 转为字符,K的范围是 0 ~ 255
ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 255
python 3.0
chr( K ) 将编码K 转为字符,K的范围是 0 ~ 65535
ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 65535
九、 除法运算符
python 2.4.2以前10/3 结果为 3
python 3.0
10 / 3 结果为 3.3333333333333335
10 // 3 结果为 3
十、字节数组对象 — 新增
(一) 初始化a = bytearray( 10 ) # a 是一个由十个字节组成的数组,其每个元素是一个字节,类型借用 int # 此时,每个元素初始值为 0
(二) 字节数组 是可变的
a = bytearray( 10 ) a[0] = 25 # 可以用赋值语句更改其元素,但所赋的值必须在 0 ~ 255 之间
(三) 字节数组的切片仍是字节数组
(四) 字符串转化为字节数组
#coding=gbk s ="你好" b = s.encode( "gbk") # 先将字符串按某种“GBK”编码方式转化为 bytes c = bytearray( b ) #再将 bytes 转化为 字节数组 也可以写作 c = bytearray( "你好", "gbk")
(五) 字节数组转化为字符串
c = bytearray( 4 ) c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68 s = c.decode( "gbk" ) print ( s ) # 应显示: ABCD
(六) 字节数组可用于写入文本文件
coding=gbk
f = open(“c:\1234.txt”, “wb”)s = “张三李四abcd1234”
——————————-
在 python2.4 中我们可以这样写:
f.write( s )
但在 python 3.0中会引发异常
——————————-
b = s.encode(“gbk”)f.write( b )
c=bytearray( “王五”,”gbk”)
f.write( c )
f.close()
input(“?”)
1,“import thread”问题
2.x中的模块thread在3.x中编程”_thread”(需要在前面加一个下划线).否则会出现“ImportError: No module named thread相关文章推荐
- Python基础(3)
- Python学习 - 基础入门(1)
- 我的python第三天
- python-excel的模块xlrd和xlwt用法及注意事项整理
- Python(1)
- Python实现将xml导入至excel
- Python聚类算法之基本K均值实例详解
- Python聚类算法之凝聚层次聚类实例分析
- Python聚类算法之DBSACN实例分析
- 将Emacs打造成强大的Python代码编辑工具
- Windows上配置Emacs来开发Python及用Python扩展Emacs
- 详解Python编程中time模块的使用
- 在Mac OS系统上安装Python的Pillow库的教程
- Python编程中使用Pillow来处理图像的基础教程
- Python——迭代器和解析(1)
- 用python简单实现将整数转化为英文字符串
- Python安装第三方模块的方法
- Python机器学习2-股票信息简单抓取
- leetcode 3Sum python
- Python基础_scrapy安装心得