python3xiaobaike_2020/chapter6/6-2 python3小白课:自己写模块.md
2025-04-20 23:22:14 +08:00

3.9 KiB
Raw Permalink Blame History

python3小白课自己写模块

模块定义

要自己写一个模块语法也非常非常简单其实模块就是一个自己写的python脚本文件你可以在一个py文件中定义变量、函数、类等等内容保存起来就是一个模块了。模块的名字就是这个py文件的文件名

因此这节课我们来学习定义一个简单的自己的模块吧!

定义模块练习我们就定义一个简单的函数吧,将下面的代码保存成mymodule.py文件吧:

# coding:utf-8

def add_1(num):
    return num + 1

这样我们就定义好了一个最简单的模块里面的函数就是其中一个成员我们可以在别的py文件中导入并使用将你的模块文件跟你的测试py文件放在同一个目录下即可。


模块的说明文档

除了可以给函数添加说明文档,你还可以给模块添加说明文档。在所有可执行的代码前面使用长文本字符串定义说明文档即可,我们在刚才的文件前面补充一下:

# coding:utf-8

"""
模块名mymodule
小白同学的第一个模块
这是说明文档
命令add_1(num)
	将传入的数字加上1后返回
"""

def add_1(num):
    """将传入的数字加上1后返回这是函数的文档"""
    return num + 1

编写完成后,我们可以在其他地方导入该模块,使用help命令即可查看模块帮助文档,也可以访问模块的__doc__属性。

比如我们再在同一个目录下定义一个test.py文件:

# coding:utf-8
import mymodule

help(mymodule)
print("*" * 40)
print(mymodule.__doc__)

print(mymodule.add_1(1))

我们还顺便测试了一下里面定义的函数。

Tip

成功运行后,我们可以发现在模块所在目录下看到一个名为__pycache__的文件夹,里面会为模块生成一个.pyc文件这是python为模块编译生成的字节码文件是用来提升模块运行效率的你知道并忽略它即可将模块复制走的时候无需带上它。


模块的测试代码

[!question]

模块写好之后,只能通过外部导入模块来进行测试吗?

非也别忘了模块本身也是一个python脚本文件它自己也能跑起来。我们可以自行在模块的文件中定义一些函数或者执行语句来测试我们编写的模块但如果写的是执行语句的话这些语句会在导入模块时运行一遍。但我们在使用时是不希望执行测试代码的。

别急python中有一种不错的机制可以满足你的需求。

Tip

python模块有一个内置的变量__name__,如果直接执行模块的代码,这个变量的值就为__main__,但如果是通过外部导入模块的方式,这个变量的值为模块的名字。

利用这个机制,我们可以在模块的结尾编写流程控制来区分是导入模块还是直接执行,看下如下模块代码:

# coding:utf-8

"""
模块名mymodule
小白同学的第一个模块
这是说明文档
命令add_1(num)
    将传入的数字加上1后返回
"""

def add_1(num):
    """将传入的数字加上1后返回这是函数的文档"""
    return num + 1


if __name__ == '__main__':
    print("这是在测试模块")
    help(__name__)
    print("*" * 40)
    print(__doc__)
    print(add_1(100))

这样如果是直接运行这段代码就会运行17~21行的部分代码了但如果是导入模块的话这部分代码就不会被执行。

Tip

if __name__ == '__main__':这种写法在你的一个普通的py脚本文件中也可以这么用的不一定是在模块中才能用。

单词释义

单词 释义
mymodule my我的module模块我的模块的意思
name 名字
main 主要的