
4.2.3 自定义模块的创建
1.创建自定义模块
前面介绍了导入Python标准库模块并使用其成员(主要是函数)的方法,接下来自定义一个模块。前面介绍过,Python模块就是Python程序,任何Python程序都可以作为模块。也就是说,前文所编写的Python程序都可以作为模块。关于自定义模块的说明如下。
1)建议模块名使用短名字并且是全小写字母,文件的扩展名是.py。
2)每个模块都有一个__name__属性,当其值是__main__时,表明该模块自身在运行,否则将作为模块引入。
3)如果希望在模块被引入时模块中的某一程序块不执行,可以用__name__属性来使程序块只在模块自身运行时执行。
【例4-33】 定义一个简单的模块,将其保存在mymod.py文件中。模块文件的文件名就是它的模块名,比如mymod.py的模块名就是mymod。


在模块程序中,用if(__name__=='__main__)把真正的模块程序与测试程序块分开。如果__name__=='__main__'成立,则执行测试程序块;否则以模块形式被导入时不执行if(__name__=='__main__'(之下的程序块。
把经常使用的函数等程序块定义在模块中,在需要的程序中导入该模块,此程序就可以直接使用该模块所包含的函数等,从而提高了程序的可复用性。
自定义模块时要注意,模块名称不能与Python自带的模块名称冲突。例如,系统自带了sys模块,自定义的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。
2.测试自定义模块
当自定义模块编写完成之后,需要编写一些测试代码,检验模块中各个功能是否都能正常运行。由于模块就是一段Python程序,因此只要模块中包含可执行代码,就可以直接执行模块中的程序。
【例4-34】 创建一个新的exmo.py文件,将其保存在mymod.py所在目录(例如C:\python)下。
exmo.py文件的程序如下:

运行exmo.py文件,显示如图4-7所示。

图4-7 导入模块后的运行结果