gpt4 book ai didi

python - 从另一个脚本导入变量并保持更新

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:12 25 4
gpt4 key购买 nike

我有两个 .py 脚本。 script1.pyscript2.py

我正在从 script2.py 中导入一些变量,例如:

from script2 import variable1 as var1

效果很好。

但是当我更新 script2.py 中的variable1,然后重新运行script1.py 时, variable1 的更新没有出现在 script1.py 中。为什么会这样?

variable1 的更新会在我完全关闭 IPython 然后重新打开 IPython 时出现。但我不想一直这样做,因为我需要打开的情节很少。

我正在使用 IPython 1.2.1Python 2.7.6(如果可能需要更多信息)。

最佳答案

有一种方法可以重新加载模块,但它似乎不能很好地处理别名。您可以使用 reload(module_name) .正如您将在文档中看到的那样,您的别名不会被刷新:

If a module imports objects from another module using from ... import
...
, calling reload() for the other module does not redefine the objects imported from it — one way around this is to re-execute the from statement, another is to use import and qualified names (module.*name*) instead.

它建议使用

import script2 
script2.variable1

您仍然可以使用别名,但每次都需要刷新别名:

import script2
var1 = script2.variable1

...

reload(script2)
var1 = script2.variable1

如果您不这样做,var1 将保留旧值。

但是,如果您认为有必要(并且经常发生),您可以使用快速功能一次性完成所有这些操作

def reload_script2():
global var1
reload(script2)
var1 = script2.variable1

请注意,我在这里使用了 global,这样 var1 在全局命名空间中被修改,而不仅仅是在该函数中声明。如果你真的只有一个值,你可以使用 return var1,但我认为这是一种罕见的情况,global 更好。

关于python - 从另一个脚本导入变量并保持更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34039631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com