當前位置:
首頁 > 最新 > python之模塊化編程

python之模塊化編程

模塊化編程是每個程序員的必備,今天就聊聊模塊吧

模塊

python中內置了許多模塊,只要把python安裝完成,這些模塊就能立即使用。

面試的時候也有問到python的內建模塊,這裡列舉五個模塊:

sys

os

math

re

datetime

現在以內建的sys為例,編寫一個Hello的模塊

解釋

第一行和第二行是標準的注釋,第一行的注釋可以讓這個Helllo.py文件直接在linux/unix/mac上運行,第二行注釋表示.py文件本身使用標準的utf-8編碼。

第四行是一個字元串,表示模塊的文檔注釋,任何模塊代碼的第一個字元串都被視為文檔的注釋

第六行使用__author__變數,把作者加進去,這樣當你公開代碼的時候,別人就可以久仰你大名。

以上就是python模塊的標準化模板,當然你也可以全部刪除不寫,但是,按標準辦事總是沒錯。

你可能注意到了,使用sys的第一步就是導入這個模塊:

import sys

導入模塊後,我們就有一個變數sys來指向該模塊,利用sys這個變數,就可以訪問sys的所有功能。

sys模塊有一個argv的變數,用list存儲了命令行的所有參數。argv至少有一個元素,因為第一個參數永遠是該.py文件的名稱。例如:

運行python Hello.py獲得的就是sys.argv就是[Hello.py]

運行python Hello.py sixkery 獲得的就是[Hello.py sixkery]

最後注意到這兩行代碼:

當我們在命令行運行Hello模塊文件時,python解釋器把一個特殊變數__name__置為__main__,而如果在其他地方導入該Hello.py模塊時,if判斷將失敗,因此,這種if測試可以讓一個模塊通過命令行運行時執行一些額外的代碼,最常見的就是運行測試。

我們用命令行運行Hello.py來看看效果。

如果啟動python交互環境下,再導入Hello模塊:

導入時,並沒有列印Hello World!

調用時才列印:

結果:

Hello World!

作用域

在一個模塊中,我們可以定義許多函數和變數,但是有的函數和變數我們希望給別人使用,有的函數和變數,我們僅僅希望在模塊內部使用,在python中,是通過_前綴來實現的。

正常的函數名和變數是公開的(public),可以被直接引用,比如ABC,x1,pl

類似__xx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途比如上面的__author__、__name__就是特殊變數。我們自己定義的時候,一般不用這樣的變數名。

類似__xx,_xx,這樣的函數或變數名就是非公開的(private),不應該被直接引用,比如__abc、_abc等

之所以我們說,private函數和變數不應該被直接引用,是因為在python中,並沒有一種方法可以完全限制訪問priva函數和變數。,但是,從編程習慣上不應該引用。

私有變數不應該被別人引用,那他們有什麼作用呢?看個例子:

我們在模塊里公開greeting()函數,而把內部邏輯用private函數隱藏起來,這樣,在調用greeting()函數時就不用管內部的private函數細節了,這也是一種代碼封裝和抽象的方法,即:

外部不需要引用的函數全部定義成private,只有外部需要引用的函數才公開(public)

總結

模塊化編程可以讓你的程序更加有條理性,思路更加清晰。希望你掌握它。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 sixkery 的精彩文章:

用python解析上萬條評論,揭秘《邪不壓正》到底在講什麼

TAG:sixkery |