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 提供了许多内置模块,无需安装即可使用。
常用内置模块:如 math
、datetime
、json
等。
示例
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 的模块系统。如果你有任何问题或需要进一步的帮助,请随时联系我们。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。