Python语言reload()函数重新载入模块

Python语言reload()函数重新载入模块

SoHo 2019.04.02

对于一个大型脚本语言而言,通常需要将其功能细化。将实现不同功能的代码写在不同的脚本中,这样方便在其他脚本需要使用此功能时可以以模块的形式导入。极大地方便了脚本的维护和重用。

导入模块的方法

浅析重新载入模块之前先简单了解一下python导入模块的机制。
导入模块或模块中的函数通常有三种方法:

import 模块名
import 模块名 as 新名字
from 模块名 import 函数名

其中,使用 import 是将整个模块导入,使用 from 则是将模块中的某个函数或者名字导入,而不是导入整个模块。想要使用 import 导入模块中的函数,必须以模块名+"."+函数名的形式调用函数;而想要使用 from 导入模块中的某个函数,可以直接使用函数名调用。
在这里插入图片描述
使用 from 导入模块后调用函数会轻松得多。如果想要将模块中的所有函数都采用这种方式导入,可以使用通配符 “*”。
在这里插入图片描述

重新导入模块

Python中上述三种方法可以导入模块文件,但是 import 语句只是第一次导入的时候会执行模块文件中的代码,然后就会把导入的模块文件存入到内存,当再次 import 导入的时候,Python是直接从内存里面取出模块文件,而不会执行模块文件的内容。
reload()函数强制Python重新导入并执行模块文件(更新模块文件),reload()不具有传递性。

假设已存在模块文件 hello.py:

def Hello():
	print("Hello World !")

引用该模块
在这里插入图片描述
修改hello.py模块并且不退出可交互式控制台继续执行上述代码

hello.py
def hello():
    print("Hello Python !")

在这里插入图片描述
可见在不关闭python的情况下,即使 hello.py文件被修改,也不会被调用,因为修改之前的hello.py已经被导入,并且存入内存,python直接从内存里面取出模块文件。

这时我们可以使用imp.reload()(python3,对于Python 2.X来说,reload是一个内置函数)函数重新载入模块,如:

import imp
imp.reload(hello)

from imp import reload

继续上一个例子
在这里插入图片描述
这样就实现了在程序运行中改变参数的目标。

强调

使用 reload()函数的前提,是reload()函数重新导入的模块在之前已经使用import或者from导入成功了,否则,reload()也无法生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉斐尔·痒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值