Python中虽然内置了许多实用的模块,但有时我们需要根据特定需求创建个性化的模块。这就可以通过自定义模块来实现,也就是自己编写一个模块。
注意:
每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须要符合标识符命名规则。
①导入自定义模块
在Pycharm中新建一个名为my_module1的python文件,并定义test函数。
②导入不同模块的同名功能
在 Python 中导入多个模块时,如果模块内有同名的功能,那么调用这个同名功能的时候,后导入的会覆盖先导入的。
在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员通常会在.py文件中添加一些测试信息。
例如,在my_module1.py文件中添加测试代码test(1,2)
def test(a,b):
print(a+b)
test(1,2)
输出结果:
3
问题:
在模块中添加测试代码后,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test
函数的调用。
from my_module1 import test
输出结果:
3
解决方案:
使用if __name__ == '__main__':
判断模块是否直接运行。
每个 Python 模块都有一个内置的属性 __name__
,这个属性的值根据模块的使用方式而不同。
__name__
的值为 '__main__'
,__name__ == '__main__'
为真,紧随其后的代码会被执行__name__
的值则是这个模块的名称, '__main__'
,__name__ == '__main__'
为假,紧随其后的代码不会被执行。def test(a,b):
print(a+b)
if __name__ == '__main__':
test(1,2)
输出结果:
3
from my_module1 import test
输出结果为空
__all__
是一个列表,定义了从模块中使用 from module import * 导入的名称。列表中包含的名称会被导入,而未在列表中列出的名称不会被导入。
如果一个模块文件中有__all__
变量,当使用from xxx import *
导入时,只能导入这个列表中的元素
这种机制有助于封装模块的接口,确保用户只能访问特定的功能,增强模块的安全性和可维护性。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。