之前接觸過一點python,好久沒看了,最近想重新學習一下,同時記錄一下自己的學習過程,溫故而知新。 初識Python
python是一門解釋性程式設計語言,源檔案是以*.py 結尾的文字檔,由Python解譯器(interpreter)解釋、執行,不需要編譯(對使用者來說)。
實際上,python解譯器在執行指令碼前,會先將指令碼編譯成位元組碼檔案(以*.pyc結尾),然後再執行。
我們也可以通過Python內建的模組庫(py_compile),手動實現這個過程,編寫指令碼如下:
import py_compilepy_compile.compile(r'D:\workspace\test.py')#檔案名稱前面的r表示:該字串不進行轉義
自己在學習過程中,文法上需要注意的點,大致羅列一下:
(1) 沒有嵌套的語句都在第一列。
(2) 在互動模式下,互動解譯器會自動列印運算式的結果,但是在 *.py 指令檔中則必須使用print語句來進行輸出。
(3) 在互動提示模式中,用一個空行結束複合陳述式。通過插入一個空行,來告訴互動式Python,多行語句已經輸入完成了。(在 *.py 檔案中不需要空行,空行會被忽略)
(4) 在命令列中執行指令檔時需要使用檔案的副檔名(*.py),但是在匯入模組時不能使用副檔名。
(5) 在linux中,第一行通常是 #。/usr/bin/python,用來指定Python解譯器的路徑。更好的一種方法是通過 env 程式來搜尋PATH環境變數中羅列出的所有目錄,第一行寫成 #。/usr/bin/env,這樣便於移植。
(6) 通過在 *.py 檔案的最後添加 input語句,可以使得雙擊運行該指令碼時,出現的命令提示字元視窗不會“一閃而過”(程式執行完成後自動結束)。
參考Head First Python第一章的執行個體,列表和函數的使用
- 列表(list)
列表的用法同C語言中的數組很相似,列表的功能更強大。
列表沒有固定的大小和類型的約束,同一個列表可以包含不同類型的資料,可以對列表進行索引、切片、增加元素、刪除元素、排序等操作。
列表的定義:
movies = ["The Holy Grail", "The Life of Brain", "The Meaning of Life"]
執行個體,逐行輸出資料行表中的每項:
movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91, ["Graham Chapman", ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]print moviesfor each_item in movies: if isinstance(each_item, list): for each_item_inner in each_item: if isinstance(each_item_inner, list): for each_item_inner_deeper in each_item_inner: print each_item_inner_deeper else: print each_item_inner else: print each_item
- 函數(function)
函數的定義:
def function_name([arguments]): '''optional documentation string''' function_suite
由於列表中嵌套有子列表,如果嵌套層數過多,上面的代碼結構會變的很複雜和冗餘。
我們定義一個函數,將重複的代碼用函數替代,並且通過遞迴調用,解決上面可能出現的嵌套過深的問題。
定義一個函數,遞迴調用,逐行輸出資料行表中的每一項:
def print_lol(the_list): for each_item in the_list: if isinstance(each_item, list): print_lol(each_item) else: print each_item
通過調用print_lol()函數就可以實現逐行輸出資料行表內容了。
上面的代碼涉及到了以下內容:
- for * in * 迭代,遍曆列表的用法(類似於java中的foreach用法);
- isinstance(,)判斷某個特定標識符是否包含某個特定類型的資料;
- if else的文法