Python 基础(十五):模块

Python 基础(十五):模块_第1张图片

❤️ 博客主页:水滴技术
订阅专栏:Python 入门核心技术
支持水滴:点赞 + 收藏⭐ + 留言

文章目录

  • 一、什么是模块
  • 二、自定义模块
  • 三、引用其它模块
    • 3.1、使用 `import` 引用模块
    • 3.2、使用 `from...import` 引用模块
    • 3.3、查看导入了哪些定义
    • 3.4、该选择哪种方式引入模块呢?
  • 四、模块的搜索路径
    • 4.1、临时添加
    • 4.2、增加 `.pth` 文件(推荐)
    • 4.3、在 `PYTHONPATH` 环境变量中添加
  • 系列文章
  • 热门专栏


大家好,我是水滴~~

本篇主要讲述 Python 中的模块,主要内容有:模块的概念、自定义模块、如何引用其它模块、以及模块的搜索路径。

一、什么是模块

在 Python 中,一个模块(Module)就是一个 Python 文件,以 .py 结尾,它可以定义变量、函数、类和可执行语句等。

通常情况,我们会把能够实现某一特定功能或一系列相关功能的代码,放到一个模块中,从而方便其他程序或脚本导入并使用,提高了代码的复用性。

Python 有很多自带的模块,称为标准库,通过它们可以实现很多常见的功能。例如:sysdatetimeoslogging 等。

Python 还具有非常丰富的第三方模块,称为第三方库,通过它们可以实现很多特色的功能。例如:requestsseleniumPyPDF2matplotlibDjango 等。

二、自定义模块

自定义模块首先要创建一个 Python 文件,文件命名为:模块名 + .py,其中模块名不能使用 Python 自带模块的名称。

下面我们 使用 IDLE 来创建一个模块:在 IDLE 菜单中选择【File】-【New File】,即可打开编辑窗口,在编辑窗口中编写模块的内容(下面模块中,实现了“加法”和“减法”两个函数)。
Python 基础(十五):模块_第2张图片

保存时,文件名即为模块名,下图将模块保存至 D:\IDLEProjects 目录中,模块名为 maths.py

Python 基础(十五):模块_第3张图片
这样,一个模块就创建好了。

三、引用其它模块

上面我们自定义了一个模块 maths.py,那么我们该如何使用它呢?要使用它,首先就是引用它,即将模块加载到要使用的模块中。Python 有两个方式来引用模块:

3.1、使用 import 引用模块

import 可以引用模块,它的语法为:import module_name [as alias],其中 module_name 为要引入的模块名,还可以通过 as 来指定一个别名。

我们在相同的目录中创建一个 tests.py 模块,并通过 import 来引入自定义的 maths 模块,下面就可以通过这个模块名来调用它的函数了,如下图:

Python 基础(十五):模块_第4张图片
执行该代码,输出结果如下图:
Python 基础(十五):模块_第5张图片
如果使用了别名,那么在使用的时候,就用别名来调用模块中的函数:

import maths as m

print(m.add(3, 1))
print(m.sub(3, 1))

3.2、使用 from...import 引用模块

前面使用 import 语句引入模块,必须使用模块名来调用对应的函数或变量,而 from...import 就不一样了,下面一起来看下。

使用 from...import 来引入模块,它的语法为:from model_name import member [, member],其中 model_name 为模块名称;member 为模块中的变量、函数或类,也可以导入多个定义,中间使用逗号 , 隔开即可,如果导入全部定义,使用星号 * 代替。

使用 from...import 引入模块后,就可以不用加模块名,直接调用其中的函数了,如下图:

Python 基础(十五):模块_第6张图片
执行该代码,输出结果如下图:
Python 基础(十五):模块_第7张图片

下面代码引入 maths 模块中所有定义:

from maths import *

print(add(3, 1))
print(sub(3, 1))

3.3、查看导入了哪些定义

上面使用 from maths import * 引入模块,就不知道引入了哪些定义。其实我们可以通过 Python 自带的函数 dir() 来查看当前模块导入了哪些定义,如:

from maths import *

print(dir())

输出结果:

['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'sub']

从输出结果可以看出,不但有模块自有的定义,还包含引入的 maths 模块中的两个函数。

3.4、该选择哪种方式引入模块呢?

上面介绍的两个引入模块的方式,我们该如何选择呢?

使用 from maths import * 的好处是不用指定模块,就可以直接调用其中的定义。但如果导入多个模块,其中的函数名相同时,那么后引入的模块会覆盖之前相同的函数,这种情况下就只能使用 import 引入模块了。

四、模块的搜索路径

上面例子中,maths.pytests.py 模块在同一个目录下,所以可以引用。如果放在不同模块,还能引用吗?显然是不行的,因为模块引用时,是按照搜索路径来的。

可以使用 sys 模块的 path 变量来查看搜索路径:

import sys

print(sys.path)

输出结果:

['D:\\IDLEProjects', 'D:\\Python\\Python311\\Lib\\idlelib', 'D:\\Python\\Python311\\python311.zip', 'D:\\Python\\Python311\\Lib', 'D:\\Python\\Python311\\DLLs', 'D:\\Python\\Python311', 'D:\\Python\\Python311\\Lib\\site-packages']

第一个为当前模块的目录,其他为 Python 默认安装路径下的一些目录。

当然,我们也可以通过一些配置来引用不同目录下的模块,下面是三种方法:

4.1、临时添加

可以在模块中使用 sys.path.append() 方法临时添加一个目录。

import sys

sys.path.append('E:\temp')

该方式只对当前模块生效。

4.2、增加 .pth 文件(推荐)

在 Python 的安装目录中,找到 Lib\site-packages 目录(我的目录为:D:\Python\Python311\Lib\site-packages),在该目录中添加一个 .pth 文件,文件名没有要求,内容为要添加的目录。

这种方式对当前 Python 版本生效,也是我们推荐的一种方式。

4.3、在 PYTHONPATH 环境变量中添加

还可以通过操作系统的环境变量来添加,增加一个系统变量 PYTHONPATH,值为要添加的目录即可。

这种方式会对当前操作系统中,安装的所有 Python 版本生效。


系列文章

Python 基础(一):初识 Python
Python 基础(二):搭建 Python 开发环境
Python 基础(三):Python 集成开发工具 IDLE
Python 基础(四):基础语法
Python 基础(五):变量与常量
Python 基础(六):基本数据类型
Python 基础(七):常用运算符
Python 基础(八):流程控制语句
Python 基础(九):列表
Python 基础(十):元组
Python 基础(十一):集合
Python 基础(十二):字典
Python 基础(十三):函数
Python 基础(十四):类和对象

热门专栏

《Python入门核心技术》
《IDEA 教程:从入门到精通》
《Java 教程:从入门到精通》
《MySQL 教程:从入门到精通》
《大数据核心技术从入门到精通》

你可能感兴趣的:(Python入门核心技术,python,模块)