可以任意轉載,但轉載時必須標明原作者charlee、原始連結http://tech.idv2.com/2008/11/03/python-memo/以及本聲明。
基本概念
- Python居然支援複數。如(-5+4j)。但要注意虛數單位單獨使用時要寫成 1j,不能寫成 j。
- 與Perl和PHP的區別:單引號和雙引號沒有任何區別。沒有插值功能。
- 三引號:''' 和 """ 相當於Perl的heredoc。
- 行尾不需要用分號,分號僅用於一行寫多條語句的情況。跟BASIC的冒號有些相似。
- 縮排是有語義的!建議使用TAB縮排
運算子與運算式
- 運算子 ** 乘冪,Perl也有。
- 字串的 * 表示重複,相當於Perl的 x 運算子。
- 居然還有專用於整除的 // 。別跟Perl 6的 // 混淆了。
控制流程
- if-elif-else,Perl為if-elsif-else,bash為if-elif-fi
- if、elif等控制流程語句後面要加冒號,很像PHP的文法
- while和for迴圈可以帶else,迴圈正常結束時就會執行else。不用像C語言那樣,迴圈結束時要檢查迴圈變數是否等於終值,以判斷是否正常結束。贊
- range函數產生的結果不包括終點。比較:Perl的 .. 運算子包括終點。所以,Python的range(a,b)理解成C語言的 for(i=a;i<b,i++) 好些。
- 什麼都不做的pass語句,算是個python特色
函數
- 函數中使用全域變數需要用global關鍵字,類似於PHP
- DocString,又一個python特色,函數的第一個邏輯航的字串作為文檔字串。類似於POD和javadoc,不過是寫在函數體內的。還能通過"函數名.__doc__"訪問
- lambda:類似於perl的閉包
資料結構
- 列表:定義方式為 a=[1,2]。等價於perl的數組/列表
- 元組(tuple):定義方式為 a=(1,2)。
- 要注意列表中的列表不會被打散,如 a=[1,2], b=[a,3,4],結果就是 b=[[1,2],3,4]。這一點與Perl不同。
- 字典:定義方式為 c={'a':1, 'b':2}。等價於perl的散列。注意兩點:
- 定義和訪問時,key必須用引號引起來。
- 使用{}定義,使用[]訪問,即c['a']。與Perl不同。
- 列表賦值是引用賦值。要想拷貝,必須用切片:b = a[:]。Perl程式員要注意。
- 列表的sort會改變原列表。
例外
- try-except-finally,相當於java的try-catch-finally
- 還有else,當沒有發生異常、正常結束try塊時執行。跟for/while的else塊一樣
- 故意拋出異常叫raise,java裡面叫throw
物件導向
- 類的__init__函數類似於C++的建構函式;__del__函數類似於C++的解構函式。
- 類方法定義的第一個參數必須為self,調用時這個參數會被傳遞為對象本身。類似於perl,perl中第一個參數也會被傳遞為對象本身,不過需要程式員自己寫 my $self = shift; 來接收。
- 用C++的話來說,所有成員函數都是虛函數。
- 調用基類方法時要手工傳遞self,如 Parnet.__init__(self, name)。
模組
- import foo; 相當於perl的 use foo;
- from foo import bar 相當於perl的 use foo qw/bar/;