专项练习 · 8 分钟阅读

Python 导入练习:模块、别名与标准库

导入只是很小的语法,却能带来很大的收益:你可以直接使用经过测试的代码,而不是重新实现每个工具。关键是让每个名字的来源清楚可见。

导入模块,再使用命名空间

import math 会加载模块,并通过 math 对象暴露其中的名字。给函数加上模块名前缀,读者就知道它来自哪里,也不容易和自己的变量重名。

import math
print(math.sqrt(81))
print(math.pi)

模块命名空间

把一个名字带入当前作用域

from statistics import mean 让 mean 可以直接使用。名字含义明确时,这种写法很简洁。可以用逗号导入多个名字,但列表要短到一眼能扫完。

from statistics import mean, median
scores = [7, 9, 10]
print(mean(scores))
print(median(scores))

有选择的 from-import

别名要提升可读性

别名不会复制或重命名磁盘上的模块,只是在当前文件里换一个访问名字。长模块名常用短别名,但不要用让人费解的缩写。

import random as rnd
rnd.seed(7)
print(rnd.choice(["latte", "tea", "mocha"]))

一个简短别名

先探索标准库

自己写辅助函数之前,先确认标准库是否已经提供。math 负责常见数学运算,statistics 负责统计摘要,re 负责文本模式。读官方文档也是学习语言的一部分。

import math
print(math.gcd(12, 18))
print(math.factorial(5))

不必自己实现的实用函数

避免通配符导入

from module import * 会隐藏名字来源,还可能悄悄覆盖你已经使用的名字。优先使用 import module,或明确列出要导入的名字。显式导入更容易搜索、测试和解释。

from math import ceil, floor
print(ceil(2.1))
print(floor(2.9))

显式写法更容易追踪

你的练习清单

常见问题

import math 和 from math import sqrt 有什么区别?

import math 会加载整个模块,调用时要写 math.sqrt。from math import sqrt 会把 sqrt 带入当前命名空间,可以直接调用 sqrt。

导入会很慢吗?

Python 会缓存已经导入的模块,后续导入通常很快。大型第三方包在首次启动时仍可能耗时。

应该使用 import * 吗?

通常不要。它会隐藏名字来源,还可能覆盖已有变量。显式导入更容易理解和维护。

练习导入

12 道题,覆盖模块、from-import、别名、math 和 statistics。

打开练习

继续阅读: