资源描述:
《python3.0地新特性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实用标准python3.0的新特性这篇文章主要介绍了相比于python2.6,python3.0的新特性。更详细的介绍请参见python3.0的文档。CommonStumblingBlocks本段简单的列出容易使人出错的变动(初学者应该注意)。·print语句被print()函数取代了,可以使用关键字参数来替代老的print特殊语法。例如:Old:print"Theansweris",2*2New:print("Theansweris",2*2)Old:printx,
2、#使用逗号结尾禁止换行New:print(x,end="") #使用空格代替换行Old:print #输出新行New:print() #输出新行Old:print>>sys.stderr,"fatalerror"New:print("fatalerror",file=sys.stderr)Old:print(x,y) #输出repr((x,y))New:prin
3、t((x,y)) #不同于print(x,y)!你可以自定义输出项之间的分隔符: print("Thereare<",2**32,">possibilities!",sep="")输出结果是: Thereare<4294967296>possibilities!注意:精彩文档实用标准print()函数不支持老print语句的"软空格"特性,例如,在python2.x中,print"A","B"会输出"AB",而python3.0中,print("A","B")会
4、输出"AB"使用 2to3 源码转换工具时,所有的print语句被自动转换成print()函数调用,对大项目,这是无需争论的。·python3.0使用字符串(strings)和bytes代替Unicode字符串和8位字符串,这意味着几乎所有使用Unicode编码和二进制数据的代码都要改动。这个改动很不错,在2.x的世界里,无数的bug都是因为编码问题。·map()和filter()返回迭代器(iterators)·dict方法keys(),items(),values()返回视图(同样是迭代器)而不是列表(
5、list)·内建的sorted()方法和list.sort()方法不再接受表示比较函数的cmp参数,使用key参数代替。·1/2返回浮点数,使用1//2能得到整数。·repr()函数对于long整数不再包含拖尾的L,所以不加判断的去除最后一个字符会导致去掉一个有用的数字。StringandBytes·现在只有一种字符串:str,它的行为和实现都很像2.x的unicode串。·basestring超类已经去掉了,2to3 工具会把每个出现的basestring替换成str。·PEP3137:新类型bytes,用来表示
6、二进制数据和编码文本,str和bytes不能混合,需要时,必须进行显示的转换,转换方法是str.encode()(str->bytes)和bytes.decode()(bytes->str).·在原始字符串(rawstrings)中所有反斜线都按字面量解释,不再特殊处理Unicode转义字符。·PEP3112:bytes字面量,例如b"abc",创建bytes实例。·PEP3120:默认源文件编码为UTF-8精彩文档实用标准·PEP3131:可以使用非ASCII标识符(然而,除了注释中贡献者的名字之外,标准库仍然只
7、包含ASCII)·PEP3116:新的IO实现,API几乎100%向后兼容,二进制文件使用bytes代替strings·去除了StringIO和cStringIO模块,取而代之的是io.StringIO或者io.BytesIOPEP3101:字符串格式化的新方法·str.format方法(原文提到替代了%操作符,实际上,format方法和%的用法差别很大,各有所长)。PEP3106:修补了dict的keys(),items(),values()方法·删除了dict.iterkeys(),dict.itervalue
8、s()和dict.iteritems()·dict.keys(),dict.values()和dict.items()返回dict相关数据的引用PEP3107:函数注解(FunctionAnnotations)·注解函数参数和返回值的标准化方法ExceptionStuff·PEP352:异常类必须继承自BaseException,它异常结构的基类。·移除了S