python - 如何将变量从同一导入模块的 2 个实例更改为

标签 python

frmEnv = __import__(conf)
frmEnv.SCHEMA='abc'

toEnv = __import__(conf)
toEnv.SCHEMA='def'

print(frmEnv.SCHEMA, toEnv.SCHEMA)

输出:

('def', 'def')

我希望两个值不同。
有没有办法使变量的值不可更改(常量或静态)

我不希望 frmEnv.SCHEMA 值在分配值后发生更改。

最佳答案

正如其他人所解释的那样,您尝试做的事情是完全错误的。但如果我尝试读懂你的想法(尽管我很少擅长心灵感应),也许你想要的是第一个模块的副本?

然后您可能想使用copy模块,并更改对象的副本:

frmEnv = __import__(conf)
frmEnv.SCHEMA='abc'

toEnv = copy.deepcopy(frmEnv) # or copy.copy() depending on what are the members of frmEnv...
toEnv.SCHEMA='def'

print(frmEnv.SCHEMA, toEnv.SCHEMA)

Output:

('abc', 'def')

您可能还想使用 imp 使用其文件名来加载模块。 module,并在当前环境中给它两个不同的名称,这样它们实际上被加载了两次。它应该具有与副本相同的效果,但更多地依赖于文件的文件系统放置,因此不太优雅(这就是为什么我不给出示例)。读者会更难理解你为什么要这样做。

HTH

关于python - 如何将变量从同一导入模块的 2 个实例更改为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000440/

相关文章:

python - 在 Windows/Apache 上设置 Python?

python - PyAudio 在 ubuntu 上不工作并破坏声音

python - 如果在 jupyter notebook 中使用 python 或 pandas,如何将列中的逗号分隔字符串拆分为不同的列

python - 使用 Flask-Restful 返回呈现的模板在浏览器中显示 HTML

python - 如何在 Tornado 请求中执行 Tornado 请求

python - 如何(重新)缩放 x Axis 以适合图中的某些点?

python - scrapy随时间递归回调

python http/udp bittorrent 跟踪器抓取库

python - 在 Python 中计算表达式的值

Python3变量自增和赋值