zoukankan      html  css  js  c++  java
  • 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.待续...

  • 相关阅读:
    Confluence 6 连接到一个 LDAP 目录
    Confluence 6 LDAP 成员结构设置
    Confluence 6 LDAP 用户组结构设置
    Confluence 6 LDAP 用户结构设置
    Confluence 6 LDAP 高级设置
    Confluence 6 自动添加用户到用户组
    Confluence 6 权限设置
    一个小白的测试环境docker化之路
    客户端SDK测试思路
    限时购校验小工具&dubbo异步调用实现限
  • 原文地址:https://www.cnblogs.com/sxchen/p/11114324.html
Copyright © 2011-2022 走看看