我一直在想这个问题:保证多次导入模块是否安全?当然,如果模块执行操作系统之类的东西,比如写入文件或其他东西,那么可能不会,但对于大多数简单的模块,只是简单地执行导入是安全的吗?是否存在控制模块全局状态的约定?
nne*_*neo 23
是的,您可以import module在一个Python程序中使用多次,无论它是什么模块.import在第一次访问缓存模块之后的每个后续操作,而不是重新评估它.
用一万个不同的名称导入os模块似乎没有任何问题。
for i in range(10000):
exec("import os as foo%i" % i)
for i in range(10000):
exec("foo%i.getcwd()" % i)
Run Code Online (Sandbox Code Playgroud)
随着进口的不同类别:
for i in range(10000):
exec("""class FooClass%i:
import os as foo%i
print foo%i.getcwd()""" % (i,i,i))
Run Code Online (Sandbox Code Playgroud)
两者运行都没有问题。当然不能保证,但是至少看来您没有遇到直接的实际问题。