1、默認編碼方式
# Python2?默認編碼方式是 ascll碼
# Python3 默認編碼方式是 utf-8# Python2?輸出中文要加 ?# -*- encoding:utf-8 -*-
# Python3 不需要
2、print
# Python2 可以使用 print,也可以使用 print() ?例: print('lili') 或 print 'lili'
# Python3 只能使用 print()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 例: print('lili')
3、input
# Python2 中是 raw_input?
# Python3 中是 input
4、除法
# Python2?不會,如:5/2=2
# Python3 會取余 如:5/2=2.5
5、內涵
# Python2 ?1,臃腫,源碼的重復量很多 ?2,語法不清晰,摻雜著C,php,Java,的一些陋習。
# Python3 ?幾乎是重構后的源碼,規范,清晰,優美。
6、函數
# Python3 中的函數都是新式類
# Python2?中的函數 新式類和經典類共存
新式類都繼承自object,且super(),和mro()只存在于新式類,只要繼承自object,都是新式類
在多繼承問題中:
1、新式類遵循廣度優先,即 A 和 E 能同時到達F ,則走完A之后走C ,即? D? -> B? -> A -> C? -> E? -> F
super的本質 :不是單純找父類 而是根據調用者的節點位置的廣度優先順序來的,即和廣度優先正好相逆 F ?-> E ?-> C? -> A ?-> B ?-> D
2、經典問題遵循深度優先 ,一條路走到頭,即 D? -> B? -> A? -> F? -> C? -> E
7、其他
'True和False':py2中是兩個全局變量(1和0)可以重新賦值;py3中為兩個關鍵字,不可重新賦值'迭代':py2:xrange、range py3:統一使用range,并且range的機制也進行修改并提高了大數據集生成效率'Nonlocal':py3專有的(聲明為非局部變量)'yield':py2:yieldpy3:yield/yield from'文件操作':py2:readliens()讀取文件的所有行,返回一個列表,包含所有行的結束符xreadliens()返回一個生成器,循環取值py3: 只有readlines()指定字節python2在編譯安裝時,可以通過參數-----enable-unicode=ucs2 或-----enable-unicode=ucs4分別用于指定使用2個字節、4個字節表示一個unicode;python3無法進行選擇,默認使用 ucs4查看當前python中表示unicode字符串時占用的空間:
impor sys
print(sys.maxunicode)
# 如果值是65535,則表示使用usc2標準,即:2個字節表示
# 如果值是1114111,則表示使用usc4標準,即:4個字節表示包結構:py2:必須有__init__py3:不是必須的了exec語句被python3廢棄,統一使用exec函數不相等操作符"<>"被Python3廢棄,統一使用"!="long整數類型被Python3廢棄,統一使用int迭代器iterator的next()函數被Python3廢棄,統一使用next(iterator)異常StandardError 被Python3廢棄,統一使用Exception字典變量的has_key函數被Python廢棄,統一使用in關鍵詞file函數被Python3廢棄,統一使用open來處理文件,可以通過io.IOBase檢查文件類型
?