简介
在 Python 编程中,为了便于维护,通常会把程序拆分为若干个模块(Module),在主程序中导入(import)这些模块。
模块中的内容可以是函数和类的定义,也可以是参数值的声明。
模块中的语句会且只会在第一次 import 该模块的时候被执行一次。
在实际项目中,有时会遇到这种情形:程序需要持续保持运行,而我们希望在不中断程序的前提下修改一个参数,且改动的内容能立刻影响到程序。
在这种情形下,可以使用 Python3 的 importlib 库的 reload 函数。
Python 版本:3.7.1
例子
创建一个文件夹,名为 learning 。
创建一个文件,名为 parameters.py ,内容如下:
word = 'Hello'
1
创建一个文件,名为 repeat.py ,内容如下:
import importlib
import time
import learning.parameters as pa
while True:
importlib.reload(pa)
print(pa.word)
time.sleep(1)
1
2
3
4
5
6
7
8
执行 repeat.py ,它会每秒打印一条 word 的值。
在不停止 repeat.py 的执行的情况下,修改 parameters.py 中 word 的值,并保存。将会发现正在执行的 repeat.py 打印的信息发生了改变。
这样就实现了在程序运行中改变参数的目标。
补充
在较早的 Python 版本中,importlib 库的名称似乎是 imp ,目前版本中,imp 似乎也可以使用。
在早期的编程中,程序的参数常常放置在一个文本文件中,在程序运行中使用文件流(python 中为 open read write 等函数)的形式读取,但这会对文件中的文本的格式提出严格要求,且只能先读入字符串。
reload 函数的好处是它可以导入 Python 中的所有数据类型而不需考虑格式问题,它甚至可以在程序运行中更改某些函数和类的定义。
---------------------
转载,仅作分享,侵删
作者:mywang88
原文:https://blog.csdn.net/mywang88/article/details/85912137
|
|