Python入门教程9:import和常用库(上)
目录
一:import语句
1.为什么需要 import?
2.四种基本的 import方式
1. 导入整个模块:
2. 导入模块并起别名:
3. 从模块中导入特定的对象(函数/变量/类):
4. 导入模块中的所有内容
3.导入自己写的模块
4.什么是"包"(Package)?
二:常用的标准库模块
1.os库
1.文件路径操作
2.目录操作
3.文件操作
4.环境变量
5.执行系统命令
2.datetime库
1.date
2.time(注意:time对象不支持加减运算。)
3.datetime
4.timedelta
一:import语句
1.为什么需要import?
在 Python 中,我们通常不会把所有代码写在一个文件里。为了代码复用、结构清晰和团队协作,我们会把功能拆分到不同的文件中。
- 模块(Module):一个
.py文件就是一个模块。 - 包(Package):一个包含多个模块(以及
__init__.py文件)的文件夹就是一个包。
import就是用来把这些模块或包里的功能“拿”到当前文件中使用的命令。
2.四种基本的import方式
Python中有一个标准库模块math,提供数学运算功能,以下是四种最常见的导入方式:
1. 导入整个模块:
import math #导入math模块 # 使用模块名作为前缀来调用函数 result = math.sqrt(16) print(result) # 输出: 4.02. 导入模块并起别名:
import math as m #给math库起一个别名。 result = m.sqrt(16) print(result) # 输出: 4.0但要注意,给一个库起了别名之后,就不能再用原来的名字了,否则会报错,就像这个样子
import math as m #给math库起一个别名。 result = m.sqrt(16) print(result) # 输出: 4.0 errorresult = math.sqrt(16) print(errorresult) """输出: Traceback (most recent call last): File "/Users/m/Desktop/CSDN/1.py", line 5, in <module> errorresult = math.sqrt(16) ^^^^ NameError: name 'math' is not defined"""3. 从模块中导入特定的对象(函数/变量/类):
from math import pi print(pi)#输出:3.141592653589793注意:如果当前文件里也有一个叫sqrt的变量,会被覆盖(命名冲突)。就比如说这样子:
pi=1.45 print(pi)#此时pi等于1.45 from math import pi print(pi)#此时pi等于3.141592653589793 pi=0 print(pi)#此时pi等于04. 导入模块中的所有内容
from math import *#相当于:import math.sqrt,math.cos,math.pi....... print(sqrt(16)) print(cos(0))但一般来说不推荐使用这种方式,因为这种方式一次性导入了大量的名字,容易造成混淆,托慢代码效率。
3.导入自己写的模块
首先在终端执行以下命令,我用的是Zsh终端,如果操作系统不同的,可以在图形化界面创建,或者使用别的命令:
m@MacBookAir ~ % cd ~/Desktop m@MacBookAir Desktop % mkdir mymodule m@MacBookAir Desktop % cd mymodule m@MacBookAir mymodule % touch main.py utils.pymain.py内容:
import utils message = utils.greet("Alice") print(message) # 或者 from utils import greet print(greet("Bob"))utils.py内容:
def greet(name): return f"Hello, {name}!"输出结果应该是:
Hello, Alice!
Hello, Bob
试一试:修改utils.py,添加一个max(a,b)方法,用户输入两个数值,返回其中大的那一个,然后在main.py调用它 。
4.什么是"包"(Package)?
当模块越来越多,我们就用文件夹来组织它们,这就是包。
包的文件结构大致如下图所示:
my_project/
│
├── main.py
└── my_package/
├── __init__.py # 告诉 Python 这个文件夹是一个包(有时可省略,但建议保留)
├── module_a.py
└── module_b.py
在main.py中导入包里的模块:
from my_package import module_a from my_package.module_b import some_function试一试:修改module_a.py和module_b.py,添加一个分别添加各一个方法,然后在main.py调用它。
二:常用的标准库模块
Python 自带了非常丰富的“标准库”,安装 Python 后即可直接导入使用,无需额外安装,上文我们使用的math,就是Python自带的一个标准库,下面列举几个比较常用的Python的标准库,下面将一一列举讲解:
| 标准库名 | 简介 |
|---|---|
| os | 与操作系统交互(创建/删除目录、环境变量) |
| datetime | 处理日期、时间、时间差 |
| math | 基础数学运算(幂、对数、三角函数) |
| random | 生成随机数、随机抽奖 |
| sys | 访问 Python 解释器变量(如命令行参数) |
| platform | 获取操作系统信息 |
| subprocess | 在 Python 中运行系统命令(如ls,ping) |
| argparse | 编写专业的命令行工具(解析参数) |
1.os库
os库是 Python 标准库中最基础、最核心的库之一,意思是Operating System(操作系统)。它提供了一个可移植的方式,让你可以使用 Python 代码来与操作系统进行交互,比如操作文件和文件夹、获取环境变量、执行系统命令等,无论你是在 Windows、macOS 还是 Linux 上运行代码,os库都能帮你屏蔽底层系统的差异。
1.文件路径操作
在处理文件路径时,不同操作系统的分隔符不同(Windows 是\`,Linux/macOS 是/),永远不要手动拼接路径字符串,请使用os.path
函数 | 作用 | 示例 |
|---|---|---|
| 智能拼接路径(最常用) |
|
| 获取绝对路径 |
|
| 获取文件所在的目录名 |
|
| 获取文件名(含扩展名) |
|
| 判断路径是否存在 |
|
| 判断是否是文件 |
|
| 判断是否是目录 |
|
| 分离文件名和扩展名 |
|
| 获取文件大小(字节) |
|
2.目录操作
函数 | 作用 | 示例 |
|---|---|---|
| 获取当前工作目录 |
|
| 切换当前工作目录 |
|
| 列出指定目录下的所有文件和文件夹 |
|
| 创建单个目录(父目录必须存在) |
|
| 递归创建多级目录 |
|
| 删除空目录 |
|
| 递归删除空目录 |
|
3.文件操作
虽然读写文件内容通常用内置的open()函数,但os提供了文件的重命名、删除和权限修改功能:
函数 | 作用 | 示例 |
|---|---|---|
| 重命名或移动文件 |
|
| 删除文件 |
|
| 修改文件权限(Linux/Mac) |
|
4.环境变量
环境变量是操作系统中的全局键值对,常用于存储数据库密码、API Key 等敏感信息。
函数/属性 | 作用 | 示例 |
|---|---|---|
| 获取所有环境变量(字典形式) |
|
| 获取指定环境变量(推荐,不存在返回 None) |
|
| 设置或获取环境变量 |
|
5.执行系统命令
函数 | 作用 | 注意事项 |
|---|---|---|
| 执行一条系统命令 | 简单粗暴,无法获取命令输出,有安全风险 |
| 执行命令并获取输出 | 已逐渐被 |
2.datetime库
datetime是 Python 处理日期和时间的标准库,几乎在所有项目中都会用到——无论是记录日志时间戳、计算任务耗时、还是处理用户的生日或预约时间,都离不开它。
datetime模块里其实包含了几个不同的类:
类名 | 作用 | 包含信息 | 示例 |
|---|---|---|---|
| 只处理日期 | 年、月、日 |
|
| 只处理时间 | 时、分、秒、微秒 |
|
| 日期 + 时间(最常用) | 年、月、日、时、分、秒 |
|
| 时间差 | 天、秒、微秒(用于加减运算) | 相差 7 天 3 小时 |
1.date
属性 / 方法 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 实例属性 | 年份 |
|
| 实例属性 | 月份(1–12) |
|
| 实例属性 | 日期(1–31) |
|
| 类方法 | 返回当前本地日期 |
|
| 类方法 | 从时间戳创建日期 |
|
| 类方法 | 从 ISO 格式字符串解析 |
|
| 实例方法 | 替换指定字段,返回新对象 |
|
| 实例方法 | 格式化为字符串 |
|
| 实例方法 | 返回 ISO 8601 格式字符串 |
|
| 实例方法 | 星期几(周一=0, 周日=6) |
|
| 实例方法 | 星期几(周一=1, 周日=7) |
|
| 实例方法 | 返回 (年, 第几周, 星期几) |
|
| 实例方法 | 转为 Gregorian 序数日 |
|
| 类属性 | 最小可表示日期 |
|
| 类属性 | 最大可表示日期 |
|
支持的操作:
操作 | 示例 | 结果类型 |
|---|---|---|
加时间差 |
|
|
减时间差 |
|
|
两日期相减 |
|
|
2.time(注意:time对象不支持加减运算。)
属性 / 方法 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 实例属性 | 小时(0–23) |
|
| 实例属性 | 分钟(0–59) |
|
| 实例属性 | 秒(0–59) |
|
| 实例属性 | 微秒(0–999999) |
|
| 实例属性 | 时区信息(可为 |
|
| 实例方法 | 替换指定字段,返回新对象 |
|
| 实例方法 | 格式化为字符串 |
|
| 实例方法 | 返回 ISO 格式字符串 |
|
| 实例方法 | 返回时区偏移量 |
|
| 实例方法 | 返回夏令时调整 |
|
| 类属性 | 最小时间 |
|
| 类属性 | 最大时间 |
|
3.datetime
属性 / 方法 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 实例属性 | 年份 |
|
| 实例属性 | 月份 |
|
| 实例属性 | 日期 |
|
| 实例属性 | 小时 |
|
| 实例属性 | 分钟 |
|
| 实例属性 | 秒 |
|
| 实例属性 | 微秒 |
|
| 实例属性 | 时区信息 |
|
| 类方法 | 返回当前本地日期时间 |
|
| 类方法 | 返回当前日期时间(无时区) |
|
| 类方法 | 返回当前 UTC 时间 |
|
| 类方法 | 从时间戳创建 |
|
| 类方法 | 按格式解析字符串 |
|
| 类方法 | 合并 date + time → datetime |
|
| 实例方法 | 提取 date 部分 |
|
| 实例方法 | 提取 time 部分 |
|
| 实例方法 | 替换任意字段 |
|
| 实例方法 | 格式化为字符串 |
|
| 实例方法 | ISO 8601 格式 |
|
| 实例方法 | 转为时间戳(浮点数秒) |
|
| 实例方法 | 星期几(0=周一) |
|
| 实例方法 | 星期几(1=周一) |
|
| 实例方法 | 转换时区 |
|
支持的操作有:
操作 | 示例 | 结果类型 |
|---|---|---|
加时间差 |
|
|
减时间差 |
|
|
两 datetime 相减 |
|
|
4.timedelta
属性 / 方法 | 类型 | 说明 | 示例 |
|---|---|---|---|
| 实例属性 | 相差天数(可能为负) |
|
| 实例属性 | 剩余秒数(0–86399) |
|
| 实例属性 | 剩余微秒(0–999999) |
|
| 实例方法 | 总秒数(浮点数,含天) |
|
构造参数 | — | 创建时可传入以下关键字 |
|
构造参数一览:
参数名 | 含义 | 等价换算 |
|---|---|---|
| 周数 | 1 week = 7 days |
| 天数 | — |
| 小时数 | 1 hour = 3600 seconds |
| 分钟数 | 1 minute = 60 seconds |
| 秒数 | — |
| 毫秒数 | 1 ms = 1000 microseconds |
| 微秒数 | — |
支持的操作:
操作 | 示例 | 结果类型 |
|---|---|---|
两个 timedelta 相加 |
|
|
两个 timedelta 相减 |
|
|
timedelta × 数字 |
|
|
timedelta ÷ 数字 |
|
|
timedelta ÷ timedelta |
|
|
取绝对值 |
|
|
比较大小 |
|
|