• python 2.x 与3.x 的区别总结


    宏观上:2.x 源码不规范,混乱,冗余。
        3.x 源码优美清晰,统一标准,去除了冗余。
     
    默认编码方式:2.x ASCII码  3.x UTF-8
      用2.x 处理中文时,需要声明编码方式(由于cmd终端默认编码为GBK,所以声明为utf-8时,在cmd终端上,中文显示为乱码。)
    # -*- encoding:utf-8 -*-
     
    数据类型
    1. 整型,2.x分int和long两种,3.x只有int类型。
    运算符
    1. 不等于,2.x可以使用<>和!=;3.x只能使用!=
    print()方法:
    2.x可以不用括号,写成
    for letter in 'Python':
        print '当前字母:', letter
    3.x必须有括号
    print('当前字母:', letter)

     

    input方法:
      2.x 中,input()会处理成和输入数据相应的类型,是最终目标地址里内容的数据类型
      3.x 中,input()得到的数据统一都是字符串。
      但2.x中,有raw_input()方法,和3.x中的input()作用相同。可见,2.x中,input()有着更复杂的内部实现,用来转化数据类型。

    range()函数:

      2.x中,xrange()等价于3.x的,range()返回一个数字的列表。

      3.x中,range()返回可迭代对象,可用list()转化为列表。

    dict内建方法:
    ps. 3.6之前,字典是无序的;3.6(包括3.6)之后,有序。这个有序和无序的区别是解释器造成的。字典数据类型本身还是无序的。
    dict.popitem()无序字典下,是随机删除;有序字典下,是删除最后一对。
    dict.keys()
    2.x中,返回列表类型的键序列
    3.x,返回dict_keys类型的数据,可用list()转换为列表类型
     
    迭代器生成器:
    3.x 支持 __iter__()和__next__()
    2.x 支持__iter__(),next()
     
     
    经典类新式类:
    2.x 中存在经典类和新式类,默认是经典类,可通过继承object声明为新式类
    经典类在多继承关系中,深度优先算法
    新式类的super只支持super(子类名,self)
    3.x 中只有新式类,默认继承object
    新式类在多继承中,用C3算法检索父类,可用mro()方法获取检索序列,super()方法获取序列的相邻的下一个类对象
    C3算法:两个原则缺一不可,顺序(序列)和效率(路径尽量短)

    continue......

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/pyonwu/p/10449559.html
Copyright © 2020-2023  润新知