Python知識分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
Python 自定義模塊
匿名網(wǎng)友發(fā)布于:2023-09-13 10:11:03
(侵權(quán)舉報(bào))

Python 7天快速入門完整視頻教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

Python   自定義模塊

 

 

Python中已經(jīng)有很多的內(nèi)置模塊,以及也有很多的第三方優(yōu)秀模塊,我們直接導(dǎo)入使用即可。

當(dāng)然我們有時候也需要自己定義一些自定義模塊,來實(shí)現(xiàn)我們項(xiàng)目的功能。

看下案例:

先定義string_util.py,判斷字符串是否空的工具方法

 

def isEmpty(s: str):
    """
        判斷字符串是否是空
    :param s:  傳入字符串參數(shù)
    :return:  空則返回True,否則返回False
    """
    if not s:
        return True
    elif len(s.strip()) == 0:
        return True
    else:
        return False

 

再新建一個test.py

 

# import string_util
#
# print(string_util.isEmpty(""))
# print(string_util.isEmpty(None))
# print(string_util.isEmpty(" "))
# print(string_util.isEmpty(" 12 "))

from string_util import isEmpty

print(isEmpty(""))
print(isEmpty(None))
print(isEmpty(" "))
print(isEmpty(" 12 "))

 

如果我們在string_util.py里加一個測試代碼

Python   自定義模塊  圖1

我們再運(yùn)行test.py

Python   自定義模塊  圖2

經(jīng)過測試,當(dāng)我們 from string_util import isEmpty 導(dǎo)入模塊的時候,可執(zhí)行代碼也是會一起導(dǎo)入進(jìn)來的,并且執(zhí)行。

但是我們不喜歡測試代碼被執(zhí)行。

此時可借助于所有模塊內(nèi)置的name變量進(jìn)行區(qū)分,如果直接使用python命令來運(yùn)行一個模塊,name變量的值為main;如果該模塊被導(dǎo)入其他程序中,name變量的值就是模塊名。因此,如果希望測試函數(shù)只有在使用 python命令直接運(yùn)行時才執(zhí)行,則可在調(diào)用測試函數(shù)時增加判斷:只有當(dāng)name屬性為main時才調(diào)用測試函數(shù)。

代碼如下:

 

if __name__ == '__main__':
    print("測試結(jié)果:", isEmpty(None))

 

當(dāng)我們一個模塊里有很多方法的時候,有時候我們只想暴露部分方法,有些方法我們僅限模塊內(nèi)部使用,或者暫時不想對外暴露,這時候,我們可以使用 _ _all__來實(shí)現(xiàn)。

string_util.py內(nèi)部再寫一個方法,

 

def isNotEmpty(s: str):
    """
        判斷字符串是否不是空
    :param s:  傳入字符串參數(shù)
    :return:  不空則返回True,否則返回False
    """
    if s:
        if len(s.strip()) > 0:
            return True
        else:
            return False
    else:
        return False

 

我們現(xiàn)在 想 isNotEmpty暫時不像被外部導(dǎo)入使用。

我們可以用_ all _來指定所有可以被導(dǎo)入使用的成員。

 

__all__ = ['isEmpty']

 

 

 

轉(zhuǎn)載自: