如何将变量从一个导入的modu的两个实例更改为另一个实例

2024-10-02 06:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

print(frmEnv.SCHEMA, toEnv.SCHEMA)

输出:

('def', 'def')

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

我不想frmEnv.SCHEMA格式一个值一旦分配给它,它就会改变。你知道吗


Tags: importschemaconfdef格式静态abcprint
2条回答

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

然后,您可能需要使用^{}模块,并更改对象的副本:

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')

您可能还希望使用^{}模块的文件名加载模块,并在当前环境中为其指定两个不同的名称,以便实际加载两次。它应该具有与副本相同的效果,但更多地依赖于文件的文件系统位置,因此不那么优雅(这就是为什么我不举一个例子)。读者很难理解你为什么这么做。你知道吗

HTH公司

python模块只导入一次;第二次导入只是返回已经初始化的模块,其代码不会再次执行。这意味着frmEnvtoEnv是对同一对象的两个引用。你知道吗

如果你解释了你想完成什么(具体任务),有人会告诉你怎么做。不是这样的。你知道吗

相关问题 更多 >

    热门问题