Python 自定义模块

视频版教程 Python3零基础7天入门实战视频教程

Python中已经有很多的内置模块,以及也有很多的第三方优秀模块,我们直接导入使用即可。

当然我们有时候也需要自己定义一些自定义模块,来实现我们项目的功能。

看下案例:

先定义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 导入模块的时候,可执行代码也是会一起导入进来的,并且执行。

但是我们不喜欢测试代码被执行。

此时可借助于所有模块内置的_name_变量进行区分,如果直接使用python命令来运行一个模块,name_变量的值为_main;如果该模块被导入其他程序中,_name_变量的值就是模块名。因此,如果希望测试函数只有在使用 python命令直接运行时才执行,则可在调用测试函数时增加判断:只有当_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']

你可能感兴趣的:(Python,python)