python3.x与2.x的一些变化

本文详细介绍了从Python 2迁移到Python 3的过程中需要注意的关键更改,包括使用__future__模块、print函数、整除运算、Unicode处理、xrange替代、异常处理、迭代函数变化等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.        使用__future__模块

Python 3.x 介绍的 一些Python 2 不兼容的关键字和特性可以通过在 Python 2 的内置__future__模块导入。如果你计划让你的代码支持 Python 3.x,建议你使用__future__模块导入。例如,如果我想要 在Python 2 中表现 Python 3.x 中的整除,我们可以通过如下导入

from __future__import division

2.        print函数

Python 2 的print声明已经被print()函数取代了,这意味着我们必须包装我们想打印在小括号中的对象。

3.        Integer division

在 Python 2 上执行 Python 3 的代码该变化很危险,因为不会抛出语法异常。因此,我还是倾向于使用一个float(3)/2或3/2.0代替在我的 Python 3 脚本保存在 Python 2 中的3/2的一些麻烦(并且反而过来也一样,建议在你的 Python 2 脚本中使用from __future__ import division)

4.        Unicode

Python 2 有ASCII str()类型,unicode()是单独的,不是 byte 类型。在 Python 3,有了Unicode (utf-8)字符串,以及字节类:byte和bytearrays。

5.        xrange

在 Python 2 中xrange()创建迭代对象的用法是非常流行的。比如: for 循环或者是列表/集合/字典推导式。这个比较像十分像生成器。但是xrange-iterable是无穷的,意味着无限遍历。由于它的惰性求值,如果你不得仅仅不遍历它一次,xrange()函数 比range()更快(比如 for 循环)。尽管如此,对比迭代一次,不建议你重复迭代多次,因为生成器每次都从头开始。

 

6.        Raising exceptions

Python 2 接受新旧两种语法标记,在 Python 3 中如果我不用小括号把异常参数括起来就会阻塞(并且反过来引发一个语法异常)。

 

7.        Handling exceptions

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用as作为关键词。

 

8.        next()函数 和.next()方法

next() (.next())是一个普通的使用函数(方法),这里有另外一个语法改变(或者是实现上改变了),值得一提的是:在 Python 2.7.5 中函数和方法都可以使用,next()函数在 Python 3 中一直保留着(调用.next()抛出属性异常)。

9.        For 循环变量和全局命名空间泄漏

10.    比较不可排序类型

11.    通过input()解析用户的输入

在 Python 3 中已经解决了把用户的输入存储为一个str对象的问题。为了避免在Python 2 中的读取非字符串类型的危险行为,我们不得不使用raw_input()代替。

 

12.    返回可迭代对象,而不是列表

在 Python 3 中一些方法和函数返回迭代对象 -- 代替 Python 2 中的列表。因为我们通常那些遍历只有一次,我认为这个改变对节约内存很有意义。尽管如此,它也是可能的,相对于生成器 --- 如需要遍历多次。它是不那么高效的。

 

而对于那些情况下,我们真正需要的是列表对象,我们可以通过list()函数简单的把迭代对象转换成一个列表。

 

附:

Python3 中一些经常使用到的不再返回列表的函数和方法:

zip()

map()

filter()

dictionary's .keys() method

dictionary's .values() method

dictionary's .items() method

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值