16

私はしばらくこれを疑問に思っていました:モジュールを複数回インポートしても安全であることが保証されていますか? もちろん、モジュールがファイルへの書き込みなどのオペレーティング システムの処理を実行する場合は、おそらくそうではありませんが、ほとんどの単純なモジュールでは、単純にインポートを勝手に実行しても安全でしょうか? モジュールのグローバルな状態を管理する規則はありますか?

4

2 に答える 2

36

はい、import moduleモジュールが何であれ、1つのPythonプログラムで何度でも実行できます。それimport以降は、最初にキャッシュされたモジュールに再評価するのではなく、アクセスします。

于 2012-09-19T02:01:11.103 に答える
9

1 万もの異なる名前で os モジュールをインポートしても問題はないようです。

for i in range(10000):
    exec("import os as foo%i" % i)

for i in range(10000):
    exec("foo%i.getcwd()" % i)

異なるクラスのインポートでは:

for i in range(10000):
    exec("""class FooClass%i:
    import os as foo%i
    print foo%i.getcwd()""" % (i,i,i))

どちらも問題なく動きます。もちろん保証するものではありませんが、少なくとも実際に差し迫った問題に遭遇することはないようです。

于 2012-09-19T02:05:54.907 に答える