廖雪峰python3複習總結——day11-1
阿新 • • 發佈:2018-12-11
1、itertools,
提供了非常有用的用於操作迭代物件的函式。
幾個“無限”迭代器count()、cycle()、repeat()
通常我們會通過takewhile()
等函式根據條件判斷來截取出一個有限的序列:
>>> natuals = itertools.count(1)
>>> ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>> list(ns)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chain()
可以把一組迭代物件串聯起來,形成一個更大的迭代器;groupby()
練習:
def pi(N): ' 計算pi的值 ' # step 1: 建立一個奇數序列: 1, 3, 5, 7, 9, ... # step 2: 取該序列的前N項: 1, 3, 5, 7, 9, ..., 2*N-1. # step 3: 新增正負符號並用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ... # step 4: 求和: na = itertools.count(1, 2) ns = list(itertools.takewhile(lambda x: x <2*N, na)) sum=0 for i in ns: if i%4==1: sum=sum+4/i else: sum=sum-4/i return sum
@contextlib:裝飾器有助於上下文管理。上下文管理器是:有一個特殊的語句塊,在執行這個語句塊之前需要先執行一些準備動作;當語句塊執行完成後,需要繼續執行一些收尾動作。
urllib:提供了一系列用於操作URL的功能。urllib提供的功能就是利用程式去執行各種HTTP請求。如果要模擬瀏覽器完成特定功能,需要把請求偽裝成瀏覽器。偽裝的方法是先監控瀏覽器發出的請求,再根據瀏覽器的請求頭來偽裝,User-Agent
頭就是用來標識瀏覽器的。
XML:操作XML有兩種方法:DOM和SAX。DOM會把整個XML讀入記憶體,解析為樹,因此佔用記憶體大,解析慢,優點是可以任意遍歷樹的節點。SAX是流模式,邊讀邊解析,佔用記憶體小,解析快,缺點是我們需要自己處理事件。
正常情況下,優先考慮SAX,因為DOM實在太佔記憶體。
利用HTMLParser,可以把網頁中的文字、影象等解析出來