Python知識分享網 - 專業(yè)的Python學習網站 學Python,上Python222
Python 自定義模塊
匿名網友發(fā)布于:2023-09-13 10:11:03
(侵權舉報)

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

 

Python   自定義模塊

 

 

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

當然我們有時候也需要自己定義一些自定義模塊,來實現我們項目的功能。

看下案例:

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

 

def isEmpty(s: str):
    """
        判斷字符串是否是空
    :param s:  傳入字符串參數
    :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

我們再運行test.py

Python   自定義模塊  圖2

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

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

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

代碼如下:

 

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

 

當我們一個模塊里有很多方法的時候,有時候我們只想暴露部分方法,有些方法我們僅限模塊內部使用,或者暫時不想對外暴露,這時候,我們可以使用 _ _all__來實現。

string_util.py內部再寫一個方法,

 

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

 

我們現在 想 isNotEmpty暫時不像被外部導入使用。

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

 

__all__ = ['isEmpty']

 

 

 

轉載自: