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

  • 相关阅读:
    android原子
    android进程优先级
    Android 的cyclicBarrier
    android中运用CountDownLatch
    java网络编程长连接的问题
    https
    http 上传文件
    netty4 断线重连
    Linux下高并发socket最大连接数所受的各种限制
    Android Studio NDK及so文件开发
  • 原文地址:https://www.cnblogs.com/pyonwu/p/10449559.html
Copyright © 2011-2022 走看看