欢迎光临
我们一直在努力

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​

platform​

subprocess​

argparse​

与操作系统交互(创建/删除目录、环境变量)
处理日期、时间、时间差
基础数学运算(幂、对数、三角函数)
生成随机数、随机抽奖
访问 Python 解释器变量(如命令行参数)
获取操作系统信息
在 Python 中运行系统命令(如 ls, ping)
编写专业的命令行工具(解析参数)

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.year→ 2026

month​

实例属性

月份(1–12)

d.month→ 8

day​

实例属性

日期(1–31)

d.day→ 15

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.min→ 0001-01-01

max​

类属性

最大可表示日期

date.max→ 9999-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.hour→ 14

minute​

实例属性

分钟(0–59)

t.minute→ 30

second​

实例属性

秒(0–59)

t.second→ 45

microsecond​

实例属性

微秒(0–999999)

t.microsecond→ 123456

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.min→ 00:00:00

max​

类属性

最大时间

time.max→ 23:59:59.999999

3.datetime

属性 / 方法

类型

说明

示例

year​

实例属性

年份

dt.year→ 2026

month​

实例属性

月份

dt.month→ 8

day​

实例属性

日期

dt.day→ 15

hour​

实例属性

小时

dt.hour→ 14

minute​

实例属性

分钟

dt.minute→ 30

second​

实例属性

dt.second→ 45

microsecond​

实例属性

微秒

dt.microsecond→ 123456

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.days→ 7

seconds​

实例属性

剩余秒数(0–86399)

td.seconds→ 3661

microseconds​

实例属性

剩余微秒(0–999999)

td.microseconds→ 500000

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

赞(0)
未经允许不得转载:171主机测评 » Python入门教程9:import和常用库(上)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址