Python知识分享网 - 专业的Python学习网站 学Python,上Python222
Python 自定义模块
发布于:2023-09-13 10:11:03

Python 7天快速入门完整视频教程https://www.bilibili.com/video/BV1o84y1Z7J1

 

Python   自定义模块

 

 

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']

 

 

 

转载自: