【发布时间】:2018-10-10 20:05:22
【问题描述】:
我在 python 中有一个配置文件,可以在主脚本运行时更改,所以我需要重新加载它。
我在这篇文章中尝试了答案: python refresh/reload
import config
from config import *
...
reload(config)
from config import *
它一直有效,直到我将重新加载部分输入到一个函数中,所以如果我这样做:
import config
from config import *
def main():
reload(config)
from config import *
我收到警告:“import *”只允许在模块级别,脚本正在运行但重新加载不起作用,
我也尝试了“import config”而不是“from config import *”,但出现异常“UnboundLocalError: local variable 'config' referenced before assignment”
【问题讨论】:
-
stackoverflow.com/a/33068321/6253693 似乎是在函数中重新加载的选项
-
使用这样的模块作为配置文件不是一个好策略。在开发过程中,重新加载模块只是一种方便。您不应该在生产代码中执行此操作,因为很有可能并非所有内容都会因重新加载过程而改变。使用正确的配置文件。
-
此外,在普通脚本中最好避免使用“星号”导入:它们会将一堆名称转储到您的命名空间中,从而无法区分本地名称和导入名称,并可能导致名称冲突,特别是如果您从多个模块进行星号导入。
-
这不是一个大脚本,但我会记住这一点,谢谢