模組(Python基礎教程(第3版 )

2021-08-26 05:46:08 字數 2857 閱讀 8500

集合:集合是可變的,因此不能用作字典中的鍵。另乙個問題是,集合只能包含不可變(可雜湊) 的值,因此不能包含其他集合。由於在現實世界中經常會遇到集合的集合,因此這可能是個問題。 所幸還有frozenset型別,它表示不可變(可雜湊)的集合。

堆:位置 i處的元素總是大於位置i // 2處的元素(反過來說就是小於位置2 * i和2 * i + 1處的元素)。 這是底層堆演算法的基礎,稱為堆特徵

雙端佇列:雙端佇列很有用,因為它支援在隊首(左端)高效地附加和彈出元素,而使用列表無法這樣做。 另外,還可高效地旋轉元素(將元素向右或向左移,並在到達一端時環繞到另一端)。

time: 函式time.asctime將當前時間轉換為字串,如下所示: >>> time.asctime() 'mon jul 18 14:06:07 2016' 如果不想使用當前時間,也可向它提供乙個日期元組(如localtime建立的日期元組)。要設 置更複雜的格式,可使用函式strftime,標準文件對此做了介紹。 函式time.localtime將乙個實數(從新紀元開始後的秒數)轉換為日期元組(本地時間)。如 果要轉換為國際標準時間,應使用gmtime。 函式time.mktime將日期元組轉換為從新紀元後的秒數,這與localtime的功能相反。 函式time.sleep讓直譯器等待指定的秒數。 函式time.strptime將乙個字串(其格式與asctime所返回字串的格式相同)轉換為日期 元組。(可選引數format遵循的規則與strftime相同,詳情請參閱標準文件。) 函式time.time返回當前的國際標準時間,以從新紀元開始的秒數表示。雖然新紀元隨平台 而異,但可這樣進行可靠的計時:儲存事件(如函式呼叫)發生前後time的結果,再計算它們的 差。

datetime和timeit:前者提供了日期和時間算術 支援,而後者可幫助你計算**段的執行時間。

random:模組random包含生成偽隨機數的函式,有助於編寫模擬程式或生成隨機輸出的程式。請注意, 雖然這些函式生成的數字好像是完全隨機的,但它們背後的系統是可**的。如果你要求真正的 隨機(如用於加密或實現與安全相關的功能),應考慮使用模組os中的函式urandom。模組random 中的systemrandom類基於的功能與urandom類似,可提供接近於真正隨機的資料。

當你檢視shelf物件中的元素時,將使用儲存版重建該物件,而當你將乙個 元素賦給鍵時,該元素將被儲存。要正確地修改使用模組shelve儲存的物件,必須將獲取的副本賦給乙個臨時變數,並在修改 這個副本後再次儲存;還有另一種避免這個問題的辦法:將函式open的引數writeback設定為true。這樣,從shelf 物件讀取或賦給它的所有資料結構都將儲存到記憶體(快取)中,並等到你關閉shelf物件時才將 它們寫入磁碟中。

re:模組re提供了對正規表示式的支援。

正規表示式是可匹配文字片段的模式。(匹配指的是與整個字串匹配,而函式match只要求模式與 字串開頭匹配。

句點與除換行符外的任何字元都匹配,因此被稱為萬用字元。

普通字元只與自己匹配,但特殊字元(如句點)的情況完全不同。要讓特殊字元的行為與普通 字元一樣,(1)可對其進行轉義,在它前面加上 乙個反斜槓。,為表示模組re要求的單個反斜槓,需要在字串中書寫兩個反斜槓,讓直譯器對其 進行轉義。(2)r』 字串』;

字符集;         可以用方括號將乙個子串括起, 建立乙個所謂的字符集。這樣的字符集與其包含的字元都匹配,還可使用範圍,還可組合多個訪問,方法是依次列出它們,請注意,字符集只能匹配乙個字元。要指定排除字符集,可在開頭新增乙個^字元,例如'[^abc]'與除a、b和c外的其他任何字元 都匹配。

一般而言,對於諸如句點、星號和問號等特殊字元,要在模式中將其用作字面字元而不 是正規表示式運算子,必須使用反斜槓對其進行轉義。在字符集中,通常無需對這些字元進 行轉義,但進行轉義也是完全合法的。

二選一和子模式:'python|perl'   或者 'p(ython|erl)'

可選模式和重複模式 :通過在子模式後面加上問號,可將其指定為可選的,即可包含可不包含。(1)每個可選的子模式都可以出現,也可以不出現。(2)每個可選的子模式都放在圓括號內。(3) (pattern)*:pattern可重複0、1或多次;(pattern)+:pattern可重複1或多次; (pattern):模式可從父m~n次。

貪婪和非貪婪模式:貪婪的意思:能匹配多少就匹配多少;非貪婪:這個模式將匹配乙個或多個通配 符,但匹配盡可能少的內容

生成器:包含yield語句的函式都被稱為生成器。生成器不是使用return返回乙個 值,而是可以生成多個值,每次乙個。每次使用yield生成乙個值後,函式都將凍結,即在此停 止執行,等待被重新喚醒。被重新喚醒後,函式將從停止的地方開始繼續執行。

//145左右

模組:   讓模組值得被建立的原因在於 它們像類一樣,有自己的作用域。這意味著在模組中定義的類和函式以及對其進行賦值的變數都 將成為模組的屬性。主要是為了重用**。  如果在另乙個 程式中將其作為模組匯入,以便能夠使用該函式,也將執行測試**,要避免這種行為,關鍵是檢查模組是作為程式執行還是被匯入另乙個 程式。為此,需要使用變數__name__。

模組pprint中的函式pprint能列印大量的資料。

要查明模組包含哪些東西,可使用函式dir,它列出物件的所有屬性(對於模組,它列出所 有的函式、類、變數等);   變數__all__告訴直譯器從這個模組匯入所有 的名稱意味著什麼。

文件是有關模組資訊的自然**。

使用源**:1查詢源**位置:一種辦法是像直譯器那樣通過sys.path來查詢,但更快捷的方式是檢視模 塊的特性__file__。

2.在**編輯器(如idle)中開啟檔案copy.py,並開始研究其工作原理。如果 列出的檔名以.pyc結尾,可開啟以.py結尾的相應檔案。

os:模組os讓你能夠訪問多個作業系統服務。

測試基礎(Python基礎教程(第3版 )

測試基礎 測試在先,編碼在後。這也稱為測試驅動的程式設計。先編寫測試再編寫 並不是為了發現bug,而是為了檢查 是否管用。測試四步曲 1 確定需要實現的新功能。可將其記錄下來,再為之編寫乙個測試。2 編寫實現功能的框架 讓程式能夠執行 不存在語法錯誤之類的問題 但測試依然 無法通過。測試失敗是很重要...

python基礎教程3

1.序列解包 賦值時可以多個變數同時賦值。x,y,z 1,2,3 print x,y,z 1 2 3還可以交換變數的值 x,y y,x print x,y,z 2 1 3實際上,這裡執行的操作稱為序列解包 或可迭代物件解包 將乙個序列 或任何可迭代 物件 解包,並將得到的值儲存到一系列變數中。下面用...

python3 基礎教程

一 基礎語法 1.多行語句 在 或 中的多行語句,不需要使用反斜槓 例如 total item one item two item three item four item five 2.空行 函式之間或類的方法之間用空行分隔,表示一段新的 的開始。類和函式入口之間也用一行空行分隔,以突出函式入口的...