亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python自定義模塊是什么

發布時間:2020-08-04 14:51:40 來源:億速云 閱讀:154 作者:清晨 欄目:編程語言

這篇文章主要介紹Python自定義模塊是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

掌握了導入模塊的語法之后,下一個問題來了,模塊到底是什么?可能有讀者開始摩拳擦掌了,怎樣才能定義自己的模塊呢?

模塊就是 Python 程序。任何 Python 程序都可作為模塊導入。前面我們寫的所有 Python 程序都可作為模塊導入。換而言之,隨便寫的一個 Python 程序,其實都可作為模塊導入。對于任何程序,只要導入了模塊,即可使用該模塊內的所有成員。

下面程序定義了一個簡單的模塊(編寫在 module1.py 文件中):

print('這是module 1')
my_book = 'Python入門教程'
def say_hi(user):
    print('%s,您好,歡迎學習Python' % user)
class User:
    def __init__(self, name):
        self.name = name
    def walk(self):
        print('%s正在慢慢地走路' % self.name)
    def __repr__(self):
        return 'User[name=%s]' % self.name

上面程序中第一行代碼執行了一條簡單的輸出語句,第二行代碼定義了一個 my_book 變量。接下來程序定義了一個 say_hi() 函數,然后定義了一個 User 類。不難發現,這個程序和我們前面所寫的 Python 程序并沒有太大的區別,但它依然可以作為模塊導入。

使用模塊的好處在于,如果將程序需要使用的程序單元(比如剛剛定義的 say_hi() 函數、User 類)定義在模塊中,后面不管哪個程序,只要導入該模塊,該程序即可使用該模塊所包含的程序單元,這樣就可以提供很好的復用(導入模塊,使用模塊),從而避免每個程序都需要重新定義這些程序單元。

為模塊編寫說明文檔

與前面介紹的函數、類相同的是,在實際開發中往往也應該為模塊編寫說明文檔;否則,其他開發者將不知道該模塊有什么作用,以及包含哪些功能。

為模塊編寫說明文檔很簡單,只要在模塊開始處定義一個字符串直接量即可。例如,在上面程序的第一行代碼之前添加如下內容:

'''
這是我們編寫的第一個模塊,該模塊包含以下內容:
my_book:字符串變量
say_hi:簡單的函數
User:代表用戶的類
'''

這段字符串內容將會作為該模塊的說明文擋,可通過模塊的 __doc__ 屬性來訪問文檔。

為模塊編寫測試代碼

當模塊編寫完成之后,可能還需要為模塊編寫一些測試代碼,用于測試模塊中的每一個程序單元是否都能正常運行。

由于模塊其實也是一個 Python 程序,因此我們完全可以使用 python 命令來解釋和執行模塊程序只要模塊中包含可執行代碼。比如使用 python module1.py(程序文件名)命令來運行上面的模塊程序,即可看到如下輸出結果:

這是module 1

上面這行輸出是因為 module1.py 程序中包含了一條 print 語句。但棋塊中的變量、函數、類都沒有得到測試,因此還應該為這些變量、函數、類提供測試程序。

例如,可以為上面的 module1.py 增加如下測試代碼:

# ===以下部分是測試代碼===
def test_my_book ():
    print(my_book)
def test_say_hi():
    say_hi('孫悟空')
    say_hi(User('Charlie'))
def test_User():
    u = User('白骨精')
    u.walk()
    print(u)

上面代碼為 module1 定義了三個函數,分別用于測試模塊中的變量、函數和類,不過這三個函數并沒有得到調用的機會。因此,如果使用 python 命令來運行上面模塊,程序并不會運行它們。

如果只是簡單地調用上面的測試程序,則會導致一個問題,那就是當其他程序每次導入該模塊時,這三個測試函數都會自動運行,這顯然不是我們期望看到的結果。此時希望實現的效果是,如果直接使用 python 命令運行該模塊(相當于測試),程序應該執行該模塊的測試函數;如果是其他程序導入該模塊,程序不應該執行該模塊的測試函數。

此時可借助于所有模塊內置的 __name__ 變量進行區分,如果直接使用 python 命令來運行一個模塊,name 變量的值為 __main__;如果該模塊被導入其他程序中,__name__ 變量的值就是模塊名。因此,如果希望測試函數只有在使用 python 命令直接運行時才執行,則可在調用測試函數時增加判斷,只有當 __name__ 屬性為 __main__ 時才調用測試函數。為模塊增加如下代碼即可:

# 當__name__為'__main__'(直接使用python運行該模塊)時執行如下代碼
if __name__ == '__main__':
    test_my_book()
    test_say_hi()
    test_User()

此時再次使用 python module1.py 命令來運行該模塊,可以看到如下輸出結果:

這是module 1
Python入門教程
孫悟空,您好,歡迎學習Python
User[name=Charlie],您好,歡迎學習Python
白骨精正在慢慢地走路
User[name=白骨精]

從上面的測試結果來看,當直接使用 python 命令來運行模塊時,模塊中的測試函數得到了執行。在定義好模塊之后,接下來就要讓 Python 系統能找到并加載該模塊。

以上是Python自定義模塊是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌都县| 萨嘎县| 苗栗市| 沂源县| 晴隆县| 浦县| 田林县| 恩平市| 九龙坡区| 信阳市| 陆河县| 乐至县| 三台县| 额济纳旗| 榆树市| 澎湖县| 四会市| 凉城县| 广宗县| 民和| 巴林左旗| 宁远县| 洛隆县| 鄂尔多斯市| 莱西市| 江油市| 五指山市| 尚义县| 佛山市| 义乌市| 龙南县| 牡丹江市| 安化县| 南康市| 清苑县| 前郭尔| 关岭| 中超| 灵台县| 湖北省| 横山县|