關於本書html
關於術語python
序app
歡迎來到Python 3框架
是時候了嗎?函數
若是我如今不能切換會怎麼樣?測試
Python 和它的版本url
更多資源spa
遷移策略.net
僅支持Python 3code
Python 2和Python 3的單獨分支
使用2to3轉換到Python 3
使用Distribute來支持2to3轉換
無需轉換支持Python 2 和 Python 3
使用3to2
哪一種策略適合你?
應用
Python模塊和包
框架
結論
爲Python3做準備
在Python 2.7下運行
當除以整數時用//代替/
使用新式的類
單獨的二進制數據和字符串
當排序時,使用key來代替cmp
使用豐富的比較運算符
相對棘手的
實現 __hash__()
確保你沒有用任何一個被移除的模塊
測試覆蓋率和tox
可選:在字典中使用迭代器方法(iterator-methods)
2to3
使用2to3
明確的固定器(fixers)
分發包
在安裝時執行2to3
使用Distribute支持多個版本的Python
使用Distribute運行測試
使用Distribute運行2to3
常見的遷移問題
不正確的引入(import)
相對引入問題
Unorderable類型、__cmp__和cmp
排序
排序Unicode
字節、字符串及Unicode
字節文字
在Python 2和Python 3中的二進制數據
更好的解決辦法
操做二進制數據
從文件中讀取
取代UserDict
CSV API 的變化
執行文檔測試
write()返回一個值
類形(Types)如今是類(classes)
處理預期的異常
字符表達
dict 和set的順序
使用現代風格改善你的代碼
使用 sorted() 來替代 .sort()
使用上下文管理器來編寫代碼
高級字符串格式化
類修飾器
集合
yield 和 生成器
更多的推導式
新的模塊
abc
multiprocessing 和 future
numbers 和 fractions
不使用2to3轉換支持Python 2和Python 3
支持print()函數
處理異常
導入錯誤
整數不兼容
更多的字節、字符串和Unicode
二乘三是」six(六)「
遷移C擴展
在你開始前
對像初始化
模塊初始化
在Python中的變化
Strings 和 Unicode
使用你本身的固定器擴展2to3
何時固定器是必須的
Parse Tree(解析樹)
建立一個固定器
修改解析樹
使用Patterns找到節點
語言區別和暫時解決方法
apply()
buffer()
callable()
Classes
Comparisons
coerce() and __coerce__
字典方法
except
Exception對象
exec
execfile
file
filter()
Imports
縮進
input()和raw_input()
整數相除
long
map()
元類
.next()
參數解包
print
raise
range()和xrange()
repr()看成反撇號
湊整行爲
切片操做方法
StandardError
字符串類型
重組和重命名
標準庫
urllib、urllib2和urlparse
移除的模塊
被移動的內置函數
string模塊調動
函數及方法屬性的重命名