2010-12-03 47 views
1

この質問は少しダムですが、私はそれを知る必要があります。インポートされたモジュールを他のインポートされたモジュール内で使用する方法はありますか?ファイルが認識されていないインポートされたモジュールを複数のファイルで使用する

def a(): 
    return os.path.join('/', 'example') # Without reimporting the os module 

osモジュール

-othermodule-

import os 
import othermodule 

othermodule.a() 

ファイル - -main:私はこれを行う場合

私は、意味します。 osモジュールを「再利用」する方法はありますか?

答えて

5

これを行う必要はありません。Pythonはモジュールを一度ロードします(アンロードしない限り)。

しかし、実際にモジュールが標準ライブラリにアクセスできない場合(???を説明してください)、メインモジュール内のosモジュールにアクセスできます(例:mainfile.os、モジュールは単なる変数です)。モジュールネームスペースにインポートされたとき)。

osモジュールが既にロードされている場合は、sys.modules["os"]でアクセスすることもできます。

+0

モジュールは標準ライブラリにアクセスすることができます。それはちょうど私の心に浮かんだ質問でした。私がunholysamplerに言ったように、私はモジュールが一度だけロードされたことを知らなかった:) –

+0

@Oscar Carballal:そう、私は "osモジュールがファイルによって認識されない" – AndiDog

1

Pythonはモジュールを1回だけインポートします。それ以降のインポート呼び出しは、既存のモジュールオブジェクトにアクセスするだけです。

+0

ニース!私は、Pythonがあらゆる新しいインポート呼び出しのための新しいオブジェクトを作成したと考えました(大きなアプリケーションでは混乱するでしょう)。ありがとう! –

3

import osothermodule.pyに入れる必要があります(または、「メインファイル」にos自体が必要ない場合)。これは機能です。 othermoduleは "メインファイル"にどんな迷惑メールが入っているか気にする必要はありません。 Pythonはosのファイルを2度読んでいないので、心配しないでください。

何らかの理由でメインファイルの変数を取得する必要がある場合は、import __main__で行うことができますが、回避することが考えられます。

モジュールを読み込んだ後で再度読み込む必要がある場合は、おそらくimportではなくexecfileを使用しているはずです。

関連する問題