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里加一個測試代碼
我們再運(yùn)行test.py
經(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']