ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Python入门教程9:import和常用库(上)

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.0

2. 导入模块并起别名:

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等于0

4. 导入模块中的所有内容

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.py

main.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的标准库,下面将一一列举讲解:

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

函数

作用

示例

os.path.join()

智能拼接路径(最常用)

os.path.join('folder', 'file.txt')

os.path.abspath()

获取绝对路径

os.path.abspath('test.py')

os.path.dirname()

获取文件所在的目录名

os.path.dirname('/a/b/c.txt')/a/b

os.path.basename()

获取文件名(含扩展名)

os.path.basename('/a/b/c.txt')c.txt

os.path.exists()

判断路径是否存在

os.path.exists('./data')

os.path.isfile()

判断是否是文件

os.path.isfile('a.txt')

os.path.isdir()

判断是否是目录

os.path.isdir('docs')

os.path.splitext()

分离文件名和扩展名

os.path.splitext('img.jpg')('img', '.jpg')

os.path.getsize()

获取文件大小(字节)

os.path.getsize('a.txt')

2.目录操作

函数

作用

示例

os.getcwd()

获取当前工作目录

os.getcwd()

os.chdir()

切换当前工作目录

os.chdir('../')

os.listdir()

列出指定目录下的所有文件和文件夹

os.listdir('.')

os.mkdir()

创建单个目录(父目录必须存在)

os.mkdir('new_folder')

os.makedirs()

递归创建多级目录

os.makedirs('a/b/c')

os.rmdir()

删除目录

os.rmdir('empty_folder')

os.removedirs()

递归删除空目录

os.removedirs('a/b/c')

3.文件操作

虽然读写文件内容通常用内置的open()函数,但os提供了文件的重命名、删除和权限修改功能:

函数

作用

示例

os.rename()

重命名或移动文件

os.rename('old.txt', 'new.txt')

os.remove()

删除文件

os.remove('trash.txt')

os.chmod()

修改文件权限(Linux/Mac)

os.chmod('script.sh', 0o755)

4.环境变量

环境变量是操作系统中的全局键值对,常用于存储数据库密码、API Key 等敏感信息。

函数/属性

作用

示例

os.environ

获取所有环境变量(字典形式)

os.environ

os.getenv()

获取指定环境变量(推荐,不存在返回 None)

os.getenv('HOME')

os.environ['KEY']

设置或获取环境变量

os.environ['MY_VAR'] = '123'

5.执行系统命令

函数

作用

注意事项

os.system()

执行一条系统命令

简单粗暴,无法获取命令输出,有安全风险

os.popen()

执行命令并获取输出

已逐渐被subprocess取代

2.datetime​库

datetime是 Python 处理日期和时间的标准库,几乎在所有项目中都会用到——无论是记录日志时间戳、计算任务耗时、还是处理用户的生日或预约时间,都离不开它。

datetime模块里其实包含了几个不同的类:

类名

作用

包含信息

示例

date

只处理日期

年、月、日

2026-08-15

time

只处理时间

时、分、秒、微秒

14:30:00

datetime

日期 + 时间(最常用

年、月、日、时、分、秒

2026-08-15 14:30:00

timedelta

时间差

天、秒、微秒(用于加减运算)

相差 7 天 3 小时

1.date

属性 / 方法

类型

说明

示例

year

实例属性

年份

d.year2026

month

实例属性

月份(1–12)

d.month8

day

实例属性

日期(1–31)

d.day15

today()

类方法

返回当前本地日期

date.today()

fromtimestamp(ts)

类方法

从时间戳创建日期

date.fromtimestamp(1784567890)

fromisoformat(s)

类方法

从 ISO 格式字符串解析

date.fromisoformat("2026-08-15")

replace()

实例方法

替换指定字段,返回新对象

d.replace(year=2030)

strftime(fmt)

实例方法

格式化为字符串

d.strftime("%Y/%m/%d")

isoformat()

实例方法

返回 ISO 8601 格式字符串

d.isoformat()"2026-08-15"

weekday()

实例方法

星期几(周一=0, 周日=6)

d.weekday()5

isoweekday()

实例方法

星期几(周一=1, 周日=7)

d.isoweekday()6

isocalendar()

实例方法

返回 (年, 第几周, 星期几)

d.isocalendar()(2026, 33, 6)

toordinal()

实例方法

转为 Gregorian 序数日

d.toordinal()

min

类属性

最小可表示日期

date.min0001-01-01

max

类属性

最大可表示日期

date.max9999-12-31

支持的操作:

操作

示例

结果类型

加时间差

date(2026, 8, 15) + timedelta(days=7)

date

减时间差

date(2026, 8, 15) - timedelta(days=3)

date

两日期相减

date(2026, 8, 15) - date(2026, 1, 1)

timedelta

2.time(注意time对象不支持加减运算。)

属性 / 方法

类型

说明

示例

hour

实例属性

小时(0–23)

t.hour14

minute

实例属性

分钟(0–59)

t.minute30

second

实例属性

秒(0–59)

t.second45

microsecond

实例属性

微秒(0–999999)

t.microsecond123456

tzinfo

实例属性

时区信息(可为None

t.tzinfo

replace()

实例方法

替换指定字段,返回新对象

t.replace(hour=9, minute=0)

strftime(fmt)

实例方法

格式化为字符串

t.strftime("%H:%M:%S")

isoformat()

实例方法

返回 ISO 格式字符串

t.isoformat()"14:30:45.123456"

utcoffset()

实例方法

返回时区偏移量

t.utcoffset()

dst()

实例方法

返回夏令时调整

t.dst()

min

类属性

最小时间

time.min00:00:00

max

类属性

最大时间

time.max23:59:59.999999

3.datetime

属性 / 方法

类型

说明

示例

year

实例属性

年份

dt.year2026

month

实例属性

月份

dt.month8

day

实例属性

日期

dt.day15

hour

实例属性

小时

dt.hour14

minute

实例属性

分钟

dt.minute30

second

实例属性

dt.second45

microsecond

实例属性

微秒

dt.microsecond123456

tzinfo

实例属性

时区信息

dt.tzinfo

now(tz=None)

类方法

返回当前本地日期时间

datetime.now()

today()

类方法

返回当前日期时间(无时区)

datetime.today()

utcnow()

类方法

返回当前 UTC 时间

datetime.utcnow()

fromtimestamp(ts, tz=None)

类方法

从时间戳创建

datetime.fromtimestamp(1784567890)

strptime(s, fmt)

类方法

按格式解析字符串

datetime.strptime("2026-08-15", "%Y-%m-%d")

combine(d, t)

类方法

合并 date + time → datetime

datetime.combine(date.today(), time(9,0))

date()

实例方法

提取 date 部分

dt.date()2026-08-15

time()

实例方法

提取 time 部分

dt.time()14:30:45.123456

replace()

实例方法

替换任意字段

dt.replace(year=2030, hour=10)

strftime(fmt)

实例方法

格式化为字符串

dt.strftime("%Y-%m-%d %H:%M:%S")

isoformat()

实例方法

ISO 8601 格式

dt.isoformat()

timestamp()

实例方法

转为时间戳(浮点数秒)

dt.timestamp()

weekday()

实例方法

星期几(0=周一)

dt.weekday()

isoweekday()

实例方法

星期几(1=周一)

dt.isoweekday()

astimezone(tz)

实例方法

转换时区

dt.astimezone(timezone.utc)

支持的操作有:

操作

示例

结果类型

加时间差

datetime.now() + timedelta(days=1)

datetime

减时间差

datetime.now() - timedelta(hours=3)

datetime

两 datetime 相减

dt1 - dt2

timedelta

4.timedelta

属性 / 方法

类型

说明

示例

days

实例属性

相差天数(可能为负)

td.days7

seconds

实例属性

剩余秒数(0–86399)

td.seconds3661

microseconds

实例属性

剩余微秒(0–999999)

td.microseconds500000

total_seconds()

实例方法

总秒数(浮点数,含天)

td.total_seconds()642061.5

构造参数

创建时可传入以下关键字

timedelta(weeks=1, days=2, hours=3, minutes=30)

构造参数一览:

参数名

含义

等价换算

weeks

周数

1 week = 7 days

days

天数

hours

小时数

1 hour = 3600 seconds

minutes

分钟数

1 minute = 60 seconds

seconds

秒数

milliseconds

毫秒数

1 ms = 1000 microseconds

microseconds

微秒数

支持的操作:

操作

示例

结果类型

两个 timedelta 相加

td1 + td2

timedelta

两个 timedelta 相减

td1 - td2

timedelta

timedelta × 数字

td * 2

timedelta

timedelta ÷ 数字

td / 2

timedelta

timedelta ÷ timedelta

td1 / td2

float(倍数)

取绝对值

abs(td)

timedelta

比较大小

td1 > td2

bool

返回列表