A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

简介

在 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


1 个回复

倒序浏览
奈斯,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马