Python自然語言處理 4 編寫結構化程式

CopperDong發表於2017-11-22

解決以下問題:

(1)怎麼能寫出結構良好,可讀的程式,使你和其他人能夠很容易地衝用它

(2)基本結構塊,如迴圈,函式及賦值,是如何執行的?

(3)Python程式設計的陷進有哪些,你將如何避免它們?

一,回到基礎

#賦值

連結串列的賦值,實際上是一個物件的引用,要了解這裡發生了什麼,需要知道連結串列是如何儲存在計算機記憶體的

foo = ['Monty', 'Python']
bar = foo
foo[1] = 'Bodkin'
bar 
['Monty', 'Bodkin']

#等式

python提供了兩種方法來檢查一對專案是否相同

is操作和==

#條件語句

if...elif

all()函式和any()函式可以應用到一個連結串列(或其他序列),以檢查是否全部或任一專案滿足一些條件

sent = ['No','good','fish','goes','anywhere','without','a','porpoise','.']
all(len(w) > 4 for w in sent)
False
any(len(w) > 4 for w in sent)
True

二 序列


三 風格的問題


四 函式:結構化程式設計的基礎

#函式的輸入和輸出

return語句將其結果返回給呼叫它的程式

#引數傳遞

與賦值一樣,結構化物件的值是該物件的引用

#變數的作用域

名稱解析的LGB規則:本地(local),全域性(global),然後內建(built-in)

#引數型別檢查

python不會強迫我們宣告變數的型別

但可以使用if not type(p) is str來簡單檢測,或者使用assert 

#功能廳分解


#文件說明函式

@param  等docstring處理工具

五 更多關於函式

#作為引數的函式

可以使用lambda表示式

#累計函式

yield函式

http://www.jianshu.com/p/d09778f4e055

#高階函式


#引數的命名

關鍵字引數

引數的預設值

引數可以按任意順序指定,也可以省略

六 程式開發

#Python模組的結構

單獨的.py檔案,有些定義"類"

#多模組程式

import語句

#誤差源頭

調bugs

#除錯技術

如果程式產生一個"異常"的執行錯誤,直譯器會輸出堆疊跟蹤

#防禦性程式設計

新增assert語句

七 演算法設計

#遞迴

#空間與時間的權衡

#動態規劃

八 Python庫的樣例

#Matplotlib繪圖工具

#NetworkX包定義和操作由節點和邊組成的結構(稱為圖)

#CSV

#Numpy數值運算包

#其他包

九 深入閱讀












































相關文章