合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 模块制作 ## 1\. 定义自己的模块 在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。 比如有这样一个文件mymd.py,在mymd.py中定义了函数myprint mymd.py ~~~ def myprint(str_data): print("myprint out - {}".format(str_data)) ~~~ ## 2\. 调用自己定义的模块 那么在其他文件中就可以先import mymd,然后通过mymd.myprint(str_data)来调用了,当然也可以通过from mymdimport myprint来引入 main.py ~~~ import mymd mymd.myprint('1321312') ~~~ ## 3\. 测试模块 在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如: `mymd.py` ~~~ def myprint(str_data): print("myprint out - {}".format(str_data)) myprint('我想测试一下') ~~~ 如果此时,在其他py文件中引入了此文件的话,想想看,测试的那段代码是否也会执行呢! `main.py` ~~~ import mymd mymd.myprint('1321312') ~~~ 运行现象: :-: ![](https://img.kancloud.cn/5e/d9/5ed908105ea4ae59618262cf86137184_300x67.png) 至此,可发现mymd.py中的测试代码,应该是单独执行mymd.py文件时才应该执行的,不应该是其他的文件中引用而执行 为了解决这个问题,python在执行一个文件时有个变量`__name__` ### 直接运行此文件 ~~~ def myprint(str_data): print("myprint out - {}".format(str_data)) print('in mymd file, __name__ is {}'.format(__name__)) ~~~ ### 运行结果 :-: ![](https://img.kancloud.cn/24/22/242290a9d1acda88e59c62240c02eab9_370x61.png) ### 在其他文件中import此文件 python main.py ### 运行结果: :-: ![](https://img.kancloud.cn/7a/55/7a55bfc9bddbbf177fb70fb3ffaa831b_392x65.png) #### 总结: * 可以根据\_\_name\_\_变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码 :-: ![](https://img.kancloud.cn/bf/7c/bf7ccb4c5b36349589d7bc8f6a74038a_919x563.png) :-: ![](https://img.kancloud.cn/12/51/1251fb472aefa6d22903da3d7aa943eb_276x59.png) ### mymd 中的 测试使用字符串没被打印,说明第10行代码没被执行