【一】模块的介绍
【1】什么是模块
- 在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能。
- 如果把开发程序比喻成制造一台电脑
- 编写模块就像是在制造电脑的零部件
- 准备好零部件后,剩下的工作就是按照逻辑把它们组装到一起。
- 将程序模块化会使得程序的组织结构清晰,维护起来更加方便。
- 比起直接开发一个完整的程序,单独开发一个小的模块也会更加简单,并且程序中的模块与电脑中的零部件稍微不同的是:程序中的模块可以被重复使用。
- 所以总结下来,使用模块既保证了代码的重用性,又增强了程序的结构性和可维护性。
- 另外除了自定义模块外,我们还可以导入使用内置或第三方模块提供的现成功能,这种“拿来主义”极大地提高了程序员的开发效率。
【2】模块的优点
- 极大地提高了程序员的开发效率。
【3】模块的来源
- 内置的:python解释器自带的,直接拿来使用的
- 第三方的:别人写的,如果想用,就要先下载在使用
- 自定义的:我们自己写的
【4】模块的存在形式
- 我们自己写的py文件(一个py文件就是一个模块)
- 包:一系列py文件的集合(文件夹)
一个包里面会有一个__init__.py文件
【二】模块的使用
【0】准备
- 新建一个文件foo.py
x = 1
def get():
print(x)
def chage():
global x
x = 0
class Foo:
def func(self):
【1】直接导入
- import语句
import py文件名/模块名
【2】详细导入
- from ...import ...语句
from 模块位置 import 模块名
- 另外from语句支持
from xx import *
语法,*
代表将foo中所有的名字都导入到当前位置
from xx import *
【3】模块重命名
- from... import...as...语句
from 模块位置 import 模块名 as 自定义名字
【三】搜索模块的路径与优先级
【1】模块的分类
- 模块其实分为四个通用类别,分别是:
- 1、使用纯Python代码编写的py文件
- 2、包含一系列模块的包
- 3、使用C编写并链接到Python解释器中的内置模块
- 4、使用C或C++编译的扩展模块
- 在导入一个模块时
- 如果该模块已加载到内存中,则直接引用
- 否则会优先查找内置模块
- 然后按照从左到右的顺序依次检索
sys.path
中定义的路径
- 然后按照从左到右的顺序依次检索
- 直到找模块对应的文件为止
- 否则抛出异常。
【四】包
【1】什么是包
- 包是一个模块的集合,它可以将多个模块的功能组合到一起。
- 包可以按照其功能和作用进行分类,方便用户查找和使用。
- 包是在Python标准库中定义的一种特殊类型的模块,可以通过import语句来引入和使用。
- Python的包分为标准库包和第三方库包。
- 标准库包是Python内置的包,包含了一些基本的模块和函数,如os、sys、random等;
- 第三方库包是第三方开发的包,通常提供了更加丰富和高级的功能。
【2】包结构
- 包是Python程序中用于组织模块的一种方式。包是一个包含模块的目录,同时还可以包含其他子包。
- 要创建一个包,我们只需要在目录中创建一个名为
__init__.py
的文件即可。
|-pakageName
|-__init__.py
|-moduleName1.py
|-moduleName2.py
|-...
- 包路径下必须存在
__init__.py
文件。
【3】创建包
- 我们创建一个 cal 的包,包中有一个计算器的 model ,结构如下:
【4】直接使用包
- 语法
import 包名.包名.模块名
- 演示
【五】绝对路径和相对路径
- 在Python中,路径分为相对路径和绝对路径。
【1】相对路径
- 相对路径是相对于当前工作目录或当前脚本文件所在目录的路径。
- 使用相对路径时,你指定的路径是相对于执行脚本的当前工作目录的。
# 例如,假设当前工作目录是 '/Users/username/projects',你可以使用相对路径如下:
relative_path = 'data/file.txt'
【2】绝对路径
-
绝对路径是文件或目录在文件系统中的完整路径,不依赖于当前工作目录。
-
使用绝对路径时,你指定的路径是从文件系统的根目录开始的。
# 例如,绝对路径可能是:
absolute_path = '/Users/username/projects/data/file.txt'
标签:文件,Python,py,相对路径,模块,import
From: https://www.cnblogs.com/Fredette/p/17909714.html