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/