python2和python3解释器的区别

python2和python3解释器的区别

1.input的区别

  Python2中有raw_input和input.

  他的raw_input就相当于Python3中的input,他们把用户输出的数据全部转化为str字符串类型.

  他的input让用户输出的是用户输出数据的原始类型,用户输入int类型,他显示的也是int类型,以此类推

2.整型的区别

  Python2中有int整型和long长整型的概念,当数值超过一定的位数就显示为long长整型.

  Python3中取消了long长整型的概念,将他合并到int整型中.

3.range的区别

  python2中
  1.range其实就是一个列表
  2.xrange其实就是python3中的range

  python3中range是一个迭代器,你需要值的时候我才给你

 

4.字典中的键keys(),值values(),键值对items()

  python2

  keys(),值values(),键值对items()都是作为列表的形式存放值,虽然能存储所有的值,但是占内存空间大。

   python3

  keys(),值values(),键值对items()其实也都是个迭代器想要的时候可以生成列表给你具体的值,不要的时候只会占很少的空间

 

5.默认字符编码的区别

  python2

  将py文件按照文本文件读入解释器中默认使用ASCII码(因为在开发python2解释器的unicode还没有盛行)

  python3 

  将py文件按照文本文件读入解释器中默认使用utf-8

 

6.file和open的区别

  #首先在python3中操作文件只有一种选择,那就是open()

  #而在python2中则有两种方式:file()与open() 两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,我们一般使用open()打开文件进行操作,而用file当做一个类型,比如type(f) is file

 

7.生成包时的区别__init__文件

  python2如果要导入包,包下面必须要有__init__文件

  python3如果要导入包,包下面没有__init__文件也不会报错

  所以我们在删除文件的时候不能把__init__文件删除,哪怕是他里边没有内容

 

8.新式类与经典类的区别

  新式类:任何直接或者间接的继承于object的类就称之为新式类.(python3中的类的顶部都是object,所以python3中全是新式类)

    新式类的继承顺序,先深度遍历,当遇到共同的父类时就广度遍历,新式类的继承顺序还可以通过调用mro方法来查看

  经典类:不是object的子类,只有python2中有

    经典类的继承顺序,全部都是深度遍历

具体可以查看面向的对象之继承的最后一部分内容,有遍历的详细图解

 

8.子类访问父类内容super()的区别

  super(),括号内的参数

  在python2中需要写出super(当前类名,对象本身)

  python3中帮我们做了优化,可以省略不写

 1 # 子类访问父类的内容
 2 class Person:
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6 
 7     def eat(self):
 8         print('%s会吃东西'%self.name)
 9 
10 class Student(Person):
11     def __init__(self,name,age,id):
12         # 第一种,父类名直接调用,这种方法什么地方都可以调用,与继承无关,并且需要写上对象本身
13         Person.__init__(self,name,age)
14         # 第二种,super(类名,对象本身),是python2内置的
15         super(Student,self).__init__(name,age)
16         # 第三种,python3做了优化可以内部不传参,推荐使用
17         super().__init__(name,age)
18         self.id = id
19 
20     def eat(self):
21         super().eat()  # 第三种方法在访问父类的方法
22         super(Student,self).eat()  # 第二种方法在访问父类的方法
23         print('%s吃更好的东西'%self.name)
24 
25 s1 = Student('sxc',18,188)
26 s1.eat()

即代码中的第二种方式和第三种方式的区别

 

9.待续...

posted @ 2019-07-02 15:53  瓜落桥下塘  阅读(471)  评论(1编辑  收藏  举报