Python 训练营打卡 Day 30
模块和库的导入
一、库导入的三种方式
# 方式1:导入整个模块
import mathprint("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")# 方式2:导入特定的函数或变量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")# 方式3:非标准导入方式的导入整个库
from math import *print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")
对于方式1和方式3,虽然 import math和 from math import *看起来都是导入了 math
模块,但它们在导入方式、作用域处理以及对命名空间的影响上有重要的区别。
-
命名空间的污染
import math
:这种方法会将整个math
模块导入到命名空间中,但是需要使用math.
前缀来访问模块内的函数或变量。这种方式保持了命名空间的整洁,因为所有的math
函数和变量都包含在math
这个模块对象中。from math import *
:这种方法将math
模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需math.
前缀。这种方式可能会导致命名空间污染,特别是当有多个模块都被这样导入时,很容易发生命名冲突。 -
明确性和可维护性
import math
:明确指出了函数和变量来源于math
模块,这对代码的可读性和维护性都是有益的。其他阅读你代码的人可以清楚地看到每个函数的来源,这对大型项目和团队合作尤为重要。from math import *
:虽然代码看起来更简洁,但这种方法减少了代码的明确性。如果没有足够的上下文,很难判断一个特定的函数是来自math
模块还是其他模块,尤其是当你导入了多个模块时。
二、模块的导入方式
模块(Module)
- 本质:以
.py
结尾的单个文件,包含Python代码(函数、类、变量等)。 - 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。
模块导入的常用方式有:
# 方式1:基本导入,导入了整个模块
import module_name
# 使用方式: module_name.function_name()# 方式2:别名导入,导入了模块并指定别名
import module_name as alias
# 使用方式:alias.function_name()# 方式3:选择性导入,从模块中导入特定的函数或类
from module_name import function_name
# 使用方式:可以直接使用function_name()# 方式4:多对象导入,从模块中导入多个对象
from module_name import function1, function2, Class1# 方式5:相对导入,在包内使用相对路径导入
from . import module_name # 同级
from .. import module_name # 上级
使用建议:优先使用基本导入或者选择性导入,对于常用模块可以使用别名缩短名称,大型项目推荐使用相对导入保持结构清晰