本文通過列舉出一些常見的實例來分析Python3.0與2.X版本的區別,是作者經驗的總結,對于Python程序設計人員來說有不錯的參考價值。具體如下:
做為一個前端開發的碼農,最近通過閱讀最新版的《A byte of Python》并與老版本的《A byte of Python》做對比后,發現Python3.0在某些地方還是有些改變的。之后再查閱官方網站的文檔,總結出一下區別:
1. 如果你下載的是最新版的Python,就會發現所有書中的Hello World例子將不再正確。
Python2.X代碼如下:
print "Hello World!" #打印字符串
Python3.0代碼如下:
print("Hello World!")
將字符串放到括號中print出來,這種寫法對于我這種學習Java出身的人來說,很是親切啊~O(∩_∩)O~
2.
Python2.X代碼如下:
guess = int(raw_input('Enter an integer : ')) #讀取鍵盤輸入的方法
Python3.0代碼如下:
guess = int(input('Enter an integer : '))
方法名變得更加容易記!
3.
加入了一個新的nonlocal statement,非局部變量,它的范圍介于global和local之間,主要用于函數嵌套,用法如下:
#!/usr/bin/python # Filename: func_nonlocal.py def func_outer(): x = 2 print('x is', x) def func_inner(): nonlocal x x = 5 func_inner() print('Changed local x to', x) func_outer()
4.
VarArgs parameters,不知道這個翻譯成什么比較妥當?先看下面這個例子:
#!/usr/bin/python # Filename: total.py def total(initial=5, *numbers, **keywords): count = initial for number in numbers: count += number for key in keywords: count += keywords[key] return count print(total(10, 1, 2, 3, vegetables=50, fruits=100))
當在參數前面使用*標識的時候,所有的位置參數(1,2,3)作為一個list傳遞。
當在參數前面使用**標識的時候,所有的關鍵參數(vegetables=50, fruits=100)作為一個dictionary傳遞。
5.
關于Packages的話題,個人理解有限。感興趣的讀者可以查閱相關文檔。
6.
在數據結構中,多了一種類型:set
Set是一種無序的簡單對象的集合,當我們關心一個對象是否在一個集合中存在,而順序和出現的次數是次要的時候,可以使用set。
7.
關于os.sep方法,(set是separator,分隔符的縮寫)
來看看作者的一個很暈菜的例子:
Python2.X代碼如下:
target_dir = '/mnt/e/backup/' target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
Python3.0代碼如下:
target_dir = 'E://Backup' target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
新聞熱點
疑難解答