python2与python3的区别

日新月异,岁月更替,时代在发展,社会在进步,

尤其是在这个信息时代,数字时代,大数据时代,人工智能时代,计算机的发展越来越符合人类的思维方式,,,,,,

废话太多,不打了,,,

那我们就简单看看人工智能的利器——python版本的区别。

参考:菜鸟教程http://www.runoob.com/python/python-2x-3x.html

  1.print函数
    python2 print可以不用(),python3 print必须要用().
- 2.Unicode
  - Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。
  - Python 3,我们最终有了 Unicode (utf-8)    字符串,以及一个字节类:byte 和 bytearrays。
  - python3默认utf-8编码
- 3.除法运算的结果
  - python2整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。
  - python3对于整数之间的相除,结果也会是浮点数.
- 4.异常:
  - 捕获异常的语法由 except exc, var 改为 except exc as var
  - 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出
  - 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可 
- 5.xrange
  - python2中range(),xrange()创建可迭代的对象
  - python3只有range(),且内部封装了__next__()方法
- 6.八进制字面量表示
  - 八进制  八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。
  - 新增了一个bin()函数用于将一个整数转换成二进制字串
  - 在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000
- 7.不等式运算符
  - Python 2.x中不等于有两种写法 != 和 <>
  - Python 3.x中只有 != 
- 8.Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long 
- 9.str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化
-10.三个高级函数
  - map,filter,reduce
```
首先我们先简单的在 Python2.x 的交互下输入 map 和 filter,看到它们两者的类型是 built-in function(内置函数):

>>> map
<built-in function map>
>>> filter
<built-in function filter>
>>>

它们输出的结果类型都是列表:

>>> map(lambda x:x *2, [1,2,3])
[2, 4, 6]
>>> filter(lambda x:x %2 ==0,range(10))
[0, 2, 4, 6, 8]
>>>
```
但是在Python 3.x中它们却不是这个样子了:
```
>>> map
<class 'map'>
>>> map(print,[1,2,3])
<map object at 0x10d8bd400>
>>> filter
<class 'filter'>
>>> filter(lambda x:x % 2 == 0, range(10))
<filter object at 0x10d8bd3c8>
>>>

首先它们从函数变成了类,其次,它们的返回结果也从当初的列表成了一个可迭代的对象, 我们尝试用 next 函数来进行手工迭代:

>>> f =filter(lambda x:x %2 ==0, range(10))
>>> next(f)
0
>>> next(f)
2
>>> next(f)
4
>>> next(f)
6
>>>
```
- 补充:
 - 下面列出了Python3中其他不再返回列表的常用函数和方法:    
    - zip()
    - map()
    - filter()
    - 字典的.key()方法
    - 字典的.value()方法
    - 字典的.item()方法

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值