Python 7天快速入門(mén)完整視頻教程:https://www.bilibili.com/video/BV1o84y1Z7J1
Python 自定義模塊
Python中已經(jīng)有很多的內(nèi)置模塊,以及也有很多的第三方優(yōu)秀模塊,我們直接導(dǎo)入使用即可。
當(dāng)然我們有時(shí)候也需要自己定義一些自定義模塊,來(lái)實(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
再新建一個(gè)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 "))
如果我們?cè)趕tring_util.py里加一個(gè)測(cè)試代碼
我們?cè)龠\(yùn)行test.py
經(jīng)過(guò)測(cè)試,當(dāng)我們 from string_util import isEmpty 導(dǎo)入模塊的時(shí)候,可執(zhí)行代碼也是會(huì)一起導(dǎo)入進(jìn)來(lái)的,并且執(zhí)行。
但是我們不喜歡測(cè)試代碼被執(zhí)行。
此時(shí)可借助于所有模塊內(nèi)置的name變量進(jìn)行區(qū)分,如果直接使用python命令來(lái)運(yùn)行一個(gè)模塊,name變量的值為main;如果該模塊被導(dǎo)入其他程序中,name變量的值就是模塊名。因此,如果希望測(cè)試函數(shù)只有在使用 python命令直接運(yùn)行時(shí)才執(zhí)行,則可在調(diào)用測(cè)試函數(shù)時(shí)增加判斷:只有當(dāng)name屬性為main時(shí)才調(diào)用測(cè)試函數(shù)。
代碼如下:
if __name__ == '__main__':
print("測(cè)試結(jié)果:", isEmpty(None))
當(dāng)我們一個(gè)模塊里有很多方法的時(shí)候,有時(shí)候我們只想暴露部分方法,有些方法我們僅限模塊內(nèi)部使用,或者暫時(shí)不想對(duì)外暴露,這時(shí)候,我們可以使用 _ _all__來(lái)實(shí)現(xiàn)。
string_util.py內(nèi)部再寫(xiě)一個(gè)方法,
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暫時(shí)不像被外部導(dǎo)入使用。
我們可以用_ all _來(lái)指定所有可以被導(dǎo)入使用的成員。
__all__ = ['isEmpty']