????????当你编写Python程序时,你经常会引入别人编写好的模块。有的模块是Python自带的,你无需安装就能直接引用,而有的模块则是由Python生态系统里的第三方工程师提供的,你需要通过pip
安装之后,才能进行使用。由于在编写Python程序的时候会经常引用别人编写好的模块,因此你应该花一些时间来了解与之有关的知识点。为了让你对Python中的模块有一个清晰的认识,这篇文章将从以下几步来展开:
????????首先,我们来看一看,如何引入Python内置的模块。新建文件start.py,内容如下所示:
import os
????????以上指令引入了Python内置模块os
,引入它之后,我们便可以使用这个模块内部的函数,比如你可以调用它提供的函数cpu_count
来获取CPU的核数:
import os
print(os.cpu_count())
????????在命令行中执行以下命令,得到的结果如下所示:
% python3 start.py
4
????????接下来,我们看看如何引入第三方提供的模块,这里,我们使用requests作为例子,关于它的使用说明,你可以到它的官网查阅。由于你使用的不是Python内置的模块,因此,你首先需要执行以下命令来安装requests:
pip install requests
安装之后,在start.py中添加以下指令,:
import requests
????????该指令的作用是导入requests模块,接下来,你便可以使用该模块所提供的功能。比如,我们可以使用其中的get
函数来获取digolds.cn的网页内容,具体的指令如下所示:
r = requests.get('https://digolds.cn')
print(r.text)
????????除此之外,你还可以通过from module import submodule
来引入模块中的某个函数,比如下面的代码和上面的代码是等价的:
from requests import get
r = get('https://digolds.cn')
print(r.text)
或者,你也可以通过import module.submodule.submodule
来引入模块中的某个函数,如下所示:
import requests.get
r = requests.get('https://digolds.cn')
print(r.text)
这里的submodule
有可能是另外一个模块,也可能是当前模块中的某一个常量、函数或者类等。
创建包和模块是在 Python 中组织和管理代码的重要方式。下面我将介绍如何创建包和模块:
????????将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,该文件称为模块,拓展名为.py
模块 = 函数 + 类 + 变量
程序规模不断变大需要分为多个文件,以提高维护性
模块可以重复导入,提高重用性
Python 中的模块可以分为三类:
内置模块(Built-in Modules): 这些模块是 Python 标准库中自带的模块,可以直接使用,无需安装额外的包。标准库包含了各种功能模块,如数学计算、文件操作、日期时间处理、网络通信等。例如,math
模块提供了数学运算函数,datetime
模块用于处理日期和时间。
第三方模块(Third-party Modules): 这些模块是由其他开发者或组织开发并共享的,可以通过 pip 或其他包管理工具安装。第三方模块提供了许多额外的功能和工具,可以帮助你解决各种问题。常用的第三方模块包括 numpy
(数值计算)、requests
(HTTP 请求)、beautifulsoup4
(HTML 解析)等。
自定义模块(Custom Modules): 这些模块是由你自己创建的,用于组织和重用自己的代码。你可以将相关的函数、类和变量封装在一个文件中,并按需导入和使用。自定义模块可以按照你的项目需求来设计,提高代码的可读性和可维护性。
无论是内置模块、第三方模块还是自定义模块,它们都可以通过 import
语句导入到 Python 程序中,并使用其中定义的函数和类。
import math
result = math.sqrt(16)
print(result) # 输出:4.0
import numpy as np
array = np.array([1, 2, 3])
print(array) # 输出:[1 2 3]
import my_module
my_module.my_function()
?
????????import 模块名
????????from 模块名 import 功能名
????????from 模块名 import *
????????import 模块名 as 别名
????????from 模块名 import 功能名 as 别名
????????import 模块名
????????import ?模块名1,模块名2…… ?# 导入多个模块
????????import math
????????print(math.sqrt(9))
????????作用:使用import导入模块时,如果只需要部分函数,可以通过from实现、
????????PS:使用时不需要增加模块名前缀
from math import sqrt, floor
print(sqrt(9), floor(10.88)) ?# 3.0 10
????????PS:使用from……import导入的模块,必须保证导入的内容名称是唯一的。若导入模块有相同的变量、函数、类。则会覆盖之前导入的同名内容,因此需要检查,别名应简洁。
原因:某些情况下,模块名称过长,建议使用as命名一个较为短的新名称,调用时使用新名称操作
from math import sqrt, floor
print(sqrt(9), floor(10.88)) ?# 3.0 10
作用:将相关代码写在一个单独的文件中,并命名为“.py”。自行创建的模块名称不能与标准库中的模块名称相同????????
例:新建一个模块的文件,实现素数的判断
当前目录新建prime.py
输入代码后保存退出
def fun_prime(num):
? ? if num < 2:
? ? ? ? print('请输入大于2的整数')
? ? else:
? ? ? ? for i in range(2, num):
? ? ? ? ? ? if num % 2 == 0:
? ? ? ? ? ? ? ? return 0
? ? ? ? else:
? ? ? ? ? ? return 1
# 2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99?
????????在 Python 中,包(Package)是一种用于组织模块的方式,它通常是一个包含 __init__.py
文件的目录。包可以将相关的模块组织在一起,形成一个层次化的结构,以便更好地组织和管理代码。
????????要创建一个包,你可以简单地创建一个目录,并在其中包含一个名为 __init__.py
的文件。这个 __init__.py
文件可以为空,也可以包含包的初始化代码。例如,假设你有一个名为 my_package
的包,其目录结构如下:
my_package/
├── __init__.py
├── module1.py
└── module2.py
????????在其他 Python 文件中使用包时,可以使用 import
语句将包导入到当前文件中。例如,如果有一个名为 my_package
的包,可以使用 import my_package
导入该包。
????????导入了包之后,你可以使用包中定义的模块、函数、类和变量。使用 .
运算符来访问包中的子模块。例如,如果 my_package
中包含了一个名为 module1.py
的模块,你可以使用 my_package.module1.function_name()
来调用其中的函数。
__init__.py
文件的作用: __init__.py
文件可以包含包的初始化代码,也可以用于指定包的公共接口。在 __init__.py
中可以定义在导入包时会自动执行的初始化逻辑,也可以通过在 __init__.py
中导入子模块,使得在导入包的时候就能够直接访问子模块。
????????包内部可以再包含子包,从而形成多层次的包结构。在这种情况下,包的导入和使用方式也类似,只是需要使用多级的.
来访问子包中的模块。
?
import my_package.module1
import my_package.module2
my_package.module1.some_function()
?或者使用别名:
import my_package.module1 as mod1
mod1.some_function()
第三方包或模块的pip下载
命令行中输入pip ?help查看
?