Python3 中 reload 函数的使用

mywang88

2019-01-06

简介

在 Python 编程中,为了便于维护,通常会把程序拆分为若干个模块(Module),在主程序中导入(import)这些模块。

模块中的内容可以是函数和类的定义,也可以是参数值的声明。

模块中的语句会且只会在第一次 import 该模块的时候被执行一次。

在实际项目中,有时会遇到这种情形:程序需要持续保持运行,而我们希望在不中断程序的前提下修改一个参数,且改动的内容能立刻影响到程序。

在这种情形下,可以使用 Python3 的 importlib 库的 reload 函数。

  • Python 版本:3.7.1

例子

创建一个文件夹,名为 learning

创建一个文件,名为 parameters.py ,内容如下:

word = 'Hello'

创建一个文件,名为 repeat.py ,内容如下:

import importlib
import time
import learning.parameters as pa

while True:
    importlib.reload(pa)
    print(pa.word)
    time.sleep(1)

执行 repeat.py ,它会每秒打印一条 word 的值。

在不停止 repeat.py 的执行的情况下,修改 parameters.pyword 的值,并保存。将会发现正在执行的 repeat.py 打印的信息发生了改变。

这样就实现了在程序运行中改变参数的目标。

补充

在较早的 Python 版本中,importlib 库的名称似乎是 imp ,目前版本中,imp 似乎也可以使用。

在早期的编程中,程序的参数常常放置在一个文本文件中,在程序运行中使用文件流(python 中为 open read write 等函数)的形式读取,但这会对文件中的文本的格式提出严格要求,且只能先读入字符串。

reload 函数的好处是它可以导入 Python 中的所有数据类型而不需考虑格式问题,它甚至可以在程序运行中更改某些函数和类的定义。

猜你喜欢

转载自blog.csdn.net/mywang88/article/details/85912137