简述python2.x和python3.x的区别_Python3.x和Python2.x的区别

匿名用户

1级

2016-05-30 回答

总结起来会有很多,所以我搬运了下别人的答案:

以下是知乎的答案:

作者:王猫猫

> 1. print不再是语句,而是函数,比如原来是 print 'abc' 现在是 print('abc')

但是 python2.6+ 可以使用 from __future__ import print_function 来实现相同功能

> 2. 在Python 3中,没有旧式类,只有新式类,也就是说不用再像这样 class Foobar(object): pass 显式地子类化object

但是最好还是加上. 主要区别在于 old-style 是 classtype 类型而 new-style 是 type类型

> 3. 原来1/2(两个整数相除)结果是0,现在是0.5了

python 2.2+ 以上都可以使用 from __future__ import division 实现改特性, 同时注意 // 取代了之前的 / 运算

> 4. 新的字符串格式化方法format取代%

错误, 从 python2.6+ 开始已经在str和unicode中有该方法, 同时 python3依然支持 % 算符

> 6. xrange重命名为range

同时更改的还有一系列内置函数及方法, 都返回迭代器对象, 而不是列表或者 元组, 比如 filter, map, dict.items 等

> 7. !=取代 < >

python2 也很少有人用 < > 所以不算什么修改

> 8. long重命名为int

不完全对, python3 彻底废弃了 long+int 双整数实现的方法, 统一为 int , 支持高精度整数运算.

> 9. except Exception, e变成except (Exception) as e

只有 python2.5 及以下版本不支持该语法. python2.6 是支持的. 不算新东西

> 10. exec变成函数

类似 print() 的变化, 之前是语句.

简单补充下

* 主要是类库的变化, 组织结构变了些. 但功能没变. urlparse - > urllib.parse 这样的变化

* 最核心的变化它没有说, 对 bytes 和 原生 UNICODE 字符串的支持, 删除了 unicode 对象, str 为原生 unicode 字符串, bytes 替代了之前的 str 这个是最核心的.

* 其它... 貌似不怎么重要了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值