最新小白看过来,今天带你了解python2和python3的区别


9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了


10)新式的8进制字变量,相应地修改了oct()函数。



2.X的方式如下:

 >>> 0666 

 438 

 >>> oct(438) 

 '0666' 

3.X这样:

 >>> 0666 

 SyntaxError: invalid token (<pyshell#63>, line 1) 

 >>> 0o666 

 438 

 >>> oct(438) 

 '0o666' 

11)增加了 2进制字面量和bin()函数



bin(438)

'0b110110110' 

>>> _438 = '0b110110110' 

>>> _438 

'0b110110110' 

12)扩展的可迭代解包。在Py3.X 里,a, b, \*rest = seq和 \*rest, a = seq都是合法的,只要求两点:rest是list


对象和seq是可迭代的。


13)新的super(),可以不再给super()传参数,



class C(object):

  def \_\_init\_\_(self, a): 

     print('C', a) 

class D©:

  def \_\_init(self, a): 

     super().__init__(a) # 无参数调用super() 

D(8)

C 8

<main.D object at 0x00D7ED90>


14)新的metaclass语法:



class Foo(*bases, **kwds):

  pass 

15)支持class decorator。用法与函数decorator一样:



def foo(cls_a):

      def print\_func(self): 

         print('Hello, world!') 

      cls_a.print = print_func 

      return cls_a 

 @foo 

class C(object): 

  pass 

>>> C().print() 

Hello, world! 

class decorator可以用来玩玩狸猫换太子的大把戏。更多请参阅PEP 3129


### 4、字符串和字节串


1)现在字符串只有str一种类型,但它跟2.x版本的unicode几乎一样。


2)关于字节串,请参阅“数据类型”的第2条目


### 5、数据类型


1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long


2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下:



b = b’china’

type(b)

<type ‘bytes’>


str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化。



s = b.decode()

s

‘china’

b1 = s.encode()

b1

b’china’


3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有


dict.has\_key(),用 in替代它吧


### 6、面向对象


1)引入抽象基类(Abstraact Base Classes,ABCs)。


2)容器类和迭代器类被ABCs化,所以cellections模块里的类型比Py2.5多了很多。



import collections

print('\n'.join(dir(collections))) 

Callable 

Container 

Hashable 

ItemsView 

Iterable 

Iterator 

KeysView 

Mapping 

MappingView 

MutableMapping 

MutableSequence 

MutableSet 

NamedTuple 

Sequence 

Set 

Sized 

ValuesView 

__all__ 

__builtins__ 

__doc__ 

__file__ 

__name__ 

_abcoll 

_itemgetter 

_sys 

defaultdict 

deque 

另外,数值类型也被ABCs化。关于这两点,请参阅 PEP 3119和PEP 3141。


3)迭代器的next()方法改名为\_\_next\_\_(),并增加内置函数next(),用以调用迭代器的\_\_next\_\_()方法


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


### 7、异常


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版本中没有实现


### 8、模块变动


1)移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。


2)移除了imageop模块


3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2,


rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模块


4)移除了bsddb模块(单独发布,可以从http://www.jcea.es/programacion/pybsddb.htm获取)


5)移除了new模块


6)os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下


7)tokenize模块现在使用bytes工作。主要的入口点不再是generate\_tokens,而是 tokenize.tokenize()


### 9、其它


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’


\n\t\r \f’)和b.split(b’ ‘)来达到相同目的


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


现在可以使用hasattr()来替换 callable(). hasattr()的语法如:hasattr(string, ‘**name**’)


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

<type ‘file’>


在Py3.X中:



如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费**学习**大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。



### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

### 二、学习软件



工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/eec417a3d4d977b313558a11d3c13e43.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/img_convert/ec690501ea1dbe2cb209cbf4013c2477.png)  

![](https://img-blog.csdnimg.cn/img_convert/3eaeaa6747419c9d86c72e0d10d0a6a2.png)



### 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值