你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Linux开发
抢“鲜”体验Python 3.0(4)
 
3)迭代器的next()方法改名为__next__(),并增加内置函数next(),用以调用迭代器的__next__()方法

  4)增加了@abstractmethod 和 @abstractproperty两个decorator,编写抽象方法(属性)更加方便。

  异常

  1)所以异常都从BaseException继承,并删除了StardardError。

  2)去除了异常类的序列行为和.message属性。

  3)用raise Exception(args) 代替 raise Exception, args语法。

  4)捕获异常的语法改变,引入了as关键字来标识异常实例,在Py2.5中:

>>> try:
...   raise NotImplementedError('Error')
... except NotImplementedError, error:
...   print error.message
...
Error

  在Py3.0中:

>>> try:
raise NotImplementedError('Error')
except NotImplementedError as error: # 注意这个 as
print(str(error))
Error

  5)异常链,因为__context__在3.0a1版本中还没有实现,这方面就不说了。

  其它:

  1)xrange()改名为range(),要想使用range()获得一个list,必须显式调用:

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  2)bytes对象不能hash,也不支持b.lower()、b.strip()和b.split()方法,但对于后两者可以使用b.strip(b’    f’)和b.split(b’ ‘)来达到相同目的。

  3)zip()、map()和filter()都返回迭代器。而apply()、callable()、coerce()、execfile()、reduce()和reload()函数都被去除了。

  4)string.letters和相关的.lowercase和.uppercase被去除,请改用string.ascii_letters等。

  5)如果x < y的不能比较,抛出TypeError异常。2.x版本是返回伪随机布尔值的。

  6)__getslice__系列成员被废弃。a[i:j]根据上下文转换为a.__getitem__(slice(I, j))或__setitem__和__delitem__调用。

  7)file类被废弃,在Py2.5:

>>> file
  
在Py3.0
>>> file
Traceback (most recent call last):
File "", line 1, in
file
NameError: name 'file' is not defined

  感想

  Python 3.0版本是Python的革命性升级,废除了许多之前的特性,也引入了新特性(如大量使用迭代器的思想)。开发人员从2.x升级到3.0版本需要比较大的代价,不仅要重新训练自己已经僵化的手指,更要让脑子从以前的条条框框中跳出来。

  现在释出的只是alpha 1版本,还有很多特性都没有实现,根据PEP 3000的计划,到08年4月将能够实现全部新特性,到时我们将会有更强的震憾感吧?

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089