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

子羽bro 2024-08-16 11:35:03 阅读 75

目录

专栏列表前言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 教程(九):内置模块与第三方模块


在这里插入图片描述

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


前言

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

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

1. 模块基础

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

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

目录结构

在这里插入图片描述

示例模块 <code>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 __name

def 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. 从模块中导入特定内容

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

from mymodule import greet, PI

print(greet("Bob"))

print(PI)

在这里插入图片描述

3.1 <code>from … import *

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

from mymodule import *

print(greet("张三"))

print(PI)

在这里插入图片描述

总结:

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

4. 包

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

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

示例包结构

mypackage/

__init__.py

moduleone.py

moduletwo.py

package-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 mypackage

print(mypackage.hello())

print(mypackage.hello2())

在这里插入图片描述

5. 模块搜索路径

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

查看搜索路径:打印 sys.path 可以查看模块搜索路径。修改搜索路径:可以通过修改 sys.path 来添加新的搜索路径。

import sys

print(sys.path)

sys.path.append('/path/to/my/modules')

6. 内置模块

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

常用内置模块:如 mathdatetimejson 等。

示例

import math

print(math.sqrt(16))

7. 第三方库

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

安装第三方库:通常使用 pip 工具安装。使用第三方库:安装后即可导入使用。

pip install requests

import requests

response = requests.get('https://api.github.com')

print(response.json())

8. __name__ 属性

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

if __name__ == "__main__":

print("这是模块是直接被运行的")

else:

print("这个模块是被导入运行的")

9. 初始化和清理

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

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

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

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

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

示例

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

import mypackage

import atexit

def 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 的模块系统。如果你有任何问题或需要进一步的帮助,请随时联系我们。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。