您的位置:首页 > 科技 > IT业 > Python 教程(九):内置模块与第三方模块

Python 教程(九):内置模块与第三方模块

2024/12/23 6:15:16 来源:https://blog.csdn.net/cdns_1/article/details/140714044  浏览:    关键词:Python 教程(九):内置模块与第三方模块

目录

    • 专栏列表
    • 前言
    • 1. 模块基础
      • 目录结构
      • 示例模块 `mymodule.py`
    • 2. 导入模块
    • 3. 从模块中导入特定内容
      • 3.1 `from … import *`
      • 总结:
    • 4. 包
      • 示例包结构
      • `moduleone.py`
      • `moduletwo.py`
      • `__init__.py`
      • 导入包
    • 5. 模块搜索路径
    • 6. 内置模块
      • 示例
    • 7. 第三方库
    • 8. `__name__` 属性
    • 9. 初始化和清理
      • 示例
    • 10. 模块的 `__all__` 列表
    • 总结

专栏列表

  • Python教程(一):环境搭建及PyCharm安装
  • Python 教程(二):语法与数据结构
  • Python 教程(三):字符串特性大全
  • Python 教程(四):Python运算符合集
  • Python 教程(五):理解条件语句和循环结构
  • Python 教程(六):函数式编程
  • Python 教程(七):match…case 模式匹配
  • Python 教程(八):高级特性【高逼格代码】
  • Python 教程(九):内置模块与第三方模块

在这里插入图片描述

正文开始如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖


前言

前面几章的代码我们都是新建一个 xxx.py文件来练习,但是随着代码越来越多,我们希望把一些代码分离出去,但是又能进行整合,这样及不会臃肿又可以让代码进行重用

Python 3 的模块系统是其核心特性之一,它允许你将代码组织成可重用的单元。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,在Python中,一个.py文件就称之为一个模块(Module)。

1. 模块基础

模块是 Python 中的一个文件,后缀.py,包含变量、函数和导入语句等。

  • 创建模块:创建一个 .py 文件,文件名即模块名。
  • 定义函数和变量:在模块文件中定义函数和变量。

目录结构

在这里插入图片描述

示例模块 mymodule.py

#!/usr/bin/env python3   #让这个文件可以直接在Unix/Linux/Mac上运行
# -*- coding: utf-8 -*-  #文件编码设置'这是一段注释'def greet(name):return f"Hello, {name}!"PI = 3.14159__name = 'ziyu'# 私有变量
def __getname():return __namedef area(radius):return PI * radius ** 2

2. 导入模块

创建 module-test.py 文件, 使用 import 语句导入模块,并使用模块名访问其内容。

# 两层含义, 1.导入了mymodule模块,2.定义了mymodule变量
import mymodule  print(mymodule.greet("张三"))
print(mymodule.PI)
circle = mymodule.area(5)
print(circle)

在这里插入图片描述

3. 从模块中导入特定内容

使用 from 关键字从模块中导入特定的函数、类或变量。

from mymodule import greet, PIprint(greet("Bob"))
print(PI)

在这里插入图片描述

3.1 from … import *

把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

from mymodule import *print(greet("张三"))
print(PI)

在这里插入图片描述

总结:

  • 一个模块只会被导入一次,不管你执行了多少次 import。
  • 类似__xxx__这样的变量是特殊变量
  • 类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;

4. 包

包是包含多个模块的目录,通常包含一个 __init__.py 文件, 解决的问题是 多模块中变量名冲突或者重复 , 包是一种管理 Python 模块命名空间的形式

  • 创建包:创建一个目录,目录名即包名,并在目录中创建 __init__.py 文件。
  • 导入包:可以导入整个包或包中的特定模块。

示例包结构

mypackage/__init__.pymoduleone.pymoduletwo.pypackage-test.py

moduleone.py

def hello():return 'module1'

moduletwo.py

def hello2():return 'module2'

__init__.py

from … import * 语句, 把一个模块的所有内容全都导入到当前的命名空间也是可行的

from moduleone import *
from moduletwo import *

导入包

创建package-test.py 文件 , 添加下面的内容

import mypackageprint(mypackage.hello())
print(mypackage.hello2())

在这里插入图片描述

5. 模块搜索路径

Python 解释器在导入模块时会搜索模块文件,搜索路径由 sys.path 列表定义。

  • 查看搜索路径:打印 sys.path 可以查看模块搜索路径。
  • 修改搜索路径:可以通过修改 sys.path 来添加新的搜索路径。
import sys
print(sys.path)
sys.path.append('/path/to/my/modules')

6. 内置模块

Python 提供了许多内置模块,无需安装即可使用。

  • 常用内置模块:如 mathdatetimejson 等。

示例

import mathprint(math.sqrt(16))

7. 第三方库

第三方库是 Python 社区提供的扩展模块,需要安装后才能使用。

  • 安装第三方库:通常使用 pip 工具安装。
  • 使用第三方库:安装后即可导入使用。
pip install requests
import requestsresponse = requests.get('https://api.github.com')
print(response.json())

8. __name__ 属性

模块的 __name__ 属性用于判断模块是被直接运行还是被导入。

if __name__ == "__main__":print("这是模块是直接被运行的")
else:print("这个模块是被导入运行的")

9. 初始化和清理

atexit 是 Python 中的一个模块,它提供了一个简单的接口来注册一些函数,这些函数将在 Python 程序正常退出时被调用。这通常用于执行清理工作,比如保存状态、关闭文件、释放资源等。

以下是 atexit 模块的基本用法:

  1. 注册函数:使用 atexit.register(func, *args, **kwargs) 来注册一个函数,该函数将在程序退出时被调用。func 是要注册的函数,*args**kwargs 是传递给该函数的参数。

  2. 程序退出:程序可以通过多种方式退出,包括正常退出(例如使用 sys.exit() 或程序达到末尾)或由于异常而退出。

  3. 清理操作:使用 atexit 模块或 try...finally 结构。

示例

使用上面创建的 mypackage 包来测试

import mypackageimport atexitdef cleanup():print("执行清理工作...")def main():print("程序开始执行。")# 注册清理函数atexit.register(cleanup)# 程序主逻辑 ---print(mypackage.hello())print(mypackage.hello2())if __name__ == "__main__":main()

10. 模块的 __all__ 列表

__all__ 列表定义了模块中哪些名称会被 from module import * 导入。

__all__ = ['greet', 'PI', 'Circle']

总结

模块是 Python 代码组织的基础,通过合理使用模块,你可以编写更清晰、更可维护的代码。了解如何创建模块、导入模块、使用内置模块和第三方库是每个 Python 程序员的必备技能。希望这个梳理能帮助你更好地理解和使用 Python 3 的模块系统。如果你有任何问题或需要进一步的帮助,请随时联系我们。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com