python核心编写视频笔记--模块的导入

时间:2024-11-21 12:36:08

1. 模块的重新导入

有这样的一种情况:我们首先创建了一个.py文件,输入模块代码。保存后,我们进入ipython3的环境,引入这个模块。然后再ipython3环*修改这个模块文件,在ipython3的环境中引入的模块文件会不会相应发生变化?

答案是:不会同步发生变化,需要重新引入

示例过程如下:

1.1 打开终端,新建一个.py文件,并简单输入一个print语句:

python核心编写视频笔记--模块的导入

1.2 新开一个终端,在同一个目录输入ipython3命令,并引入test.py模块,进行测试

python核心编写视频笔记--模块的导入

1.3 在原来创建test.py的终端修改test.py文件,此时ipython3的窗口不能关闭

python核心编写视频笔记--模块的导入

1.4 再在之前的ipython3的窗口里,调用模块中的方法,看是否输出second

python核心编写视频笔记--模块的导入

python核心编写视频笔记--模块的导入

结论是:外层修改后,没有同步发生变化,由上图可以看出,在未关闭的情况下,即便是重新再引入一遍,还是没有同步改变。

解决方法

a. 需要关闭impyhon3环境,重新导入

b. 使用reload

python核心编写视频笔记--模块的导入

关于reload的用法,它属性imp模块,文档详情如下图所示:

python核心编写视频笔记--模块的导入

2. 关于python中引入模块文件方式的说明

当我们输入import 模块文件名 时,python是怎么找到模块文件的?如果找不到,python会报No modeule named '模块文件名'的错误

在ipython3的环境下,引入sys模块,里面有个变量,叫sys.path。这个变量是一个列表,它每一个元素存储的就是模块搜索的路径。搜索顺序是按结果顺序。

python核心编写视频笔记--模块的导入

如果我们想在其他目录加入模块,则可以sys.path.append('目录')即可。即如果想对搜索路径做任何操作,比如修改顺序,添加目录,都只需要对sys.path(列表)操作即可。

目录路径以 / 开着

相对目录不以 / 开头

3. 模块的循环导入

a模块中引入了b,b模块中引入了a,结果会怎样?

答案是会报错

解决办法:抽取一个模块,专门用来调用,需要a就调用a,需要b就调用b