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里加一個測試代碼
我們再運行test.py
經過測試,當我們 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']