廖雪峰Python教程筆記(六)

2021-09-25 16:32:13 字數 1738 閱讀 3023

在電腦程式的開發過程中,隨著程式**越寫越多,在乙個檔案裡**就會越來越長,越來越不容易維護。

把很多函式分組,分別放到不同的檔案裡,這樣,每個檔案包含的**就相對較少,很多程式語言都採用這種組織**的方式。在python中,乙個.py檔案就稱之為乙個模組(module)。

模組的好處:

為了避免模組名衝突,python又引入了按目錄來組織模組的方法,稱為包(package)

舉個例子,乙個abc.py的檔案就是乙個名字叫abc的模組,乙個xyz.py的檔案就是乙個名字叫xyz的模組。

假設我們的abc和xyz這兩個模組名字與其他模組衝突了,於是我們可以通過包來組織模組,避免衝突。

比如mycompany,按照如下目錄存放:

引入了包以後,只要頂層的包名不與別人衝突,那所有模組都不會與別人衝突。

請注意,每乙個包目錄下面都會有乙個__init__.py的檔案,這個檔案是必須存在的,否則,python就把這個目錄當成普通目錄,而不是乙個包。

總結

python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。

我們以內建的sys模組為例,編寫乙個hello的模組:

第1行和第2行是標準注釋,第1行注釋可以讓這個hello.py檔案直接在unix/linux/mac上執行,第2行注釋表示.py檔案本身使用標準utf-8編碼;

第4行是乙個字串,表示模組的文件注釋,任何模組**的第乙個字串都被視為模組的文件注釋;

第6行使用__author__變數把作者寫進去,這樣當你公開源**後別人就可以瞻仰你的大名;

以上就是python模組的標準檔案模板,當然也可以全部刪掉不寫,但是,按標準辦事肯定沒錯。

後面開始就是真正的**部分。

匯入sys模組後,我們就有了變數sys指向該模組,利用sys這個變數,就可以訪問sys模組的所有功能。

sys模組有乙個ar**變數,用list儲存了命令列的所有引數。ar**至少有乙個元素,因為第乙個引數永遠是該.py檔案的名稱,例如:

執行python3 hello.py獲得的sys.ar**就是[『hello.py』];

執行python3 hello.py michael獲得的sys.ar**就是[『hello.py』, 'michael]。

作用域

在乙個模組中,我們可能會定義很多函式和變數,但有的函式和變數我們希望給別人使用,有的函式和變數我們希望僅僅在模組內部使用。在python中,是通過_字首來實現的。

正常的函式和變數名是公開的(public),可以被直接引用,比如:abc,x123,pi等;

類似__***__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊變數,hello模組定義的文件注釋也可以用特殊變數__doc__訪問,我們自己的變數一般不要用這種變數名;

類似_***和__***這樣的函式或變數就是非公開的(private),不應該被直接引用,比如_abc,__abc等;

#安裝第三方

pip install

廖雪峰python教程筆記1

d.get thomas 1 檢查字典中是否有 thomas 的key,沒有返回 1,沒有指定返回值預設返回none d.pop bob 刪key 字典key不能為列表 s set 1,2,3 set需要以list作為輸入集合,不能重複且無順序。s.add s.remove s1 s2 s1 s2 ...

python廖雪峰教程 學習筆記

如何用字元來描述字元 d匹配數字 digit w匹配字母或數字 word s可以匹配空格 space 表示任意個字元,表示至少乙個字元 表示0個或1個字元,表示n個字元,表示n m個字元 可以匹配任意字元 例如 kongxiangyu w如何做到更精確的匹配?規定數字 字母或者下劃線 0 9a za...

廖雪峰python教程學習筆記(函式)

1.max函式可以接收任意多個引數,並返回最大的那個 2.函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個別名 3.在python中,定義乙個函式要用def語句,依次寫出函式名 括號 括號中的引數和冒號,然後在縮排塊中編寫函式體,函式的返回值用return...