WEB开发网
开发学院软件开发Python 抢“鲜”体验Python 3.0 阅读

抢“鲜”体验Python 3.0

 2007-09-08 12:53:29 来源:WEB开发网   
核心提示: 3)迭代器的next()方法改名为__next__(),并增加内置函数next(),抢“鲜”体验Python 3.0(4),用以调用迭代器的__next__()方法4)增加了@abstractmethod 和 @abstractproperty两个decorator,编写抽象方法(属性)更

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月将能够实现全部新特性,到时我们将会有更强的震憾感吧?

上一页  1 2 3 4 

Tags:体验 Python

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接