Python训练营打卡 Day30
模块和库的导入
知识点回顾:
-
导入官方库的三种手段
-
直接导入整个库:使用
import library_name
语法。 -
导入库中的特定模块或函数:使用
from library_name import module_name
或from library_name import function_name
。 -
导入库并起别名:使用
import library_name as alias
。
-
-
导入自定义库/模块的方式
-
同一目录下导入:直接使用
import module_name
。 -
不同目录下导入:需要将模块所在目录添加到
sys.path
中,或者使用相对导入。 -
导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致)
- Python 解释器会搜索
sys.path
中的目录来查找模块。 sys.path
包括 Python 解释器的安装目录、当前工作目录等。- 如果自定义模块不在这些目录中,需要手动添加模块路径到
sys.path
。
作业:自己新建几个不同路径文件尝试下如何导入
# main.py
import sys# 导入同一目录下的 module1
import module1
module1.function1()# 导入子目录下的 module2
from subdir import module2
module2.function2()# 导入子目录的子目录下的 module3
from subdir.submodule import module3
module3.function3()# 导入并起别名
import module1 as m1
m1.function1()# 添加模块路径到 sys.path 并导入
sys.path.append('./subdir/submodule')
import module3
module3.function3()
注意事项
-
确保
subdir
和submodule
目录下有__init__.py
文件,这样 Python 才会将它们识别为包。 -
使用
sys.path.append()
时,路径需要是相对于当前工作目录的绝对路径或正确相对路径。
总结:用餐厅的场景来比喻模块和库的导入:
在一个大型餐厅里,菜谱(模块)被存放在不同的地方。有些菜谱在主厨房(当前目录),有些在专门的文件柜(子目录)里。不同的厨师(脚本)需要按照不同的菜谱(模块)来烹饪。
-
同一目录下导入:如果菜谱就在主厨房里,厨师可以直接拿过来用,就像直接使用
import module
。 -
子目录下导入:如果菜谱在文件柜里,厨师需要先打开文件柜(子目录),然后才能找到菜谱(子模块),这就像用
from subdir import module
。 -
跨目录导入:如果菜谱在另一个房间的文件柜里,厨师需要告诉别人去哪里找(添加路径到
sys.path
),然后才能用那个菜谱。
@浙大疏锦行