前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自定义模块

Python自定义模块

原创
作者头像
Heaven645
发布2024-07-28 17:18:54
1041
发布2024-07-28 17:18:54
举报
文章被收录于专栏:Python学习

一、什么是自定义模块?

Python中虽然内置了许多实用的模块,但有时我们需要根据特定需求创建个性化的模块。这就可以通过自定义模块来实现,也就是自己编写一个模块。

注意:

每个Python文件都可以作为一个模块,模块的名字就是文件的名字,也就是说自定义模块名必须要符合标识符命名规则

二、自定义模块的导入

①导入自定义模块

在Pycharm中新建一个名为my_module1的python文件,并定义test函数。

②导入不同模块的同名功能

在 Python 中导入多个模块时,如果模块内有同名的功能,那么调用这个同名功能的时候,后导入的会覆盖先导入的

三、自定义模块的测试

在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员通常会在.py文件中添加一些测试信息。

例如,在my_module1.py文件中添加测试代码test(1,2)

代码语言:python
代码运行次数:0
复制
def test(a,b):
    print(a+b)

test(1,2)

输出结果:

3

问题

在模块中添加测试代码后,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行test函数的调用。

代码语言:python
代码运行次数:0
复制
from my_module1 import test

输出结果:

3

解决方案

使用if __name__ == '__main__':判断模块是否直接运行。

每个 Python 模块都有一个内置的属性 __name__,这个属性的值根据模块的使用方式而不同。

  • 直接运行模块: 如果 Python 解释器直接运行该文件,__name__的值为 '__main__'__name__ == '__main__'为真,紧随其后的代码会被执行
  • 导入模块: 如果该文件被另一个模块导入,__name__ 的值则是这个模块的名称, '__main__'__name__ == '__main__'为假,紧随其后的代码不会被执行。
代码语言:python
代码运行次数:0
复制
def test(a,b):
    print(a+b)

if __name__ == '__main__':
    test(1,2)

输出结果:

3

代码语言:python
代码运行次数:0
复制
from my_module1 import test

输出结果为空

四、自定义模块的封装

__all__是一个列表,定义了从模块中使用 from module import * 导入的名称。列表中包含的名称会被导入,而未在列表中列出的名称不会被导入。

如果一个模块文件中有__all__变量,当使用from xxx import *导入时,只能导入这个列表中的元素

这种机制有助于封装模块的接口,确保用户只能访问特定的功能,增强模块的安全性和可维护性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是自定义模块?
  • 二、自定义模块的导入
  • 三、自定义模块的测试
  • 四、自定义模块的封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档