find_current_module

astropy.utils.introspection.find_current_module(depth=1, finddiff=False)[ソース]

その中からこの関数を呼び出すモジュール/パケットを決定する.

この関数には2つのパターンがあります finddiff 選択します。これは、要求されたフレーム数を呼び出しスタック内で簡単に移動させるであろう(もし finddiff False),そうでなければスタックを上に呼び出し,それが到着するまでスタックを呼び出す. not 指定された集合にあります。

パラメータ
depth集積する.

呼び出しスタックからどのくらいの距離(0-インデックス)を返すかを指定して、入力0が戻るように指定します。 astropy.utils.misc )。

finddiffBoolまたはList

Falseであれば戻る. mod そうかもしれない depth 現在のフレームから上のフレーム。そうでなければ、この関数は1フレームから始まるだろう depth 現在から上に上がり、スタックを第1のモジュールにアップロードし続ける、すなわち 違います。 提供されたリストのそれらとは異なる。この場合には finddiff モジュールまたはモジュール名のリストであってもよい。あるいはTrueでモジュールを使うことができます depth 呼び出しスタックは戻りモジュールと最も異なるモジュールを構成する.

返品
modモジュールまたはなし

モジュールオブジェクトは,パケットが見つからなければNoneとなる.モジュールの名前は __name__ 返されたオブジェクトの属性(Noneでなければ).

賃上げをする
ValueError

もし finddiff 無効エントリを含むリストです。

実例.

以下の例では,名前のパケットに2つのモジュールがあると仮定する. pkg それがそうです。 mod1.py **

def find1():
    from astropy.utils import find_current_module
    print find_current_module(1).__name__
def find2():
    from astropy.utils import find_current_module
    cmod = find_current_module(2)
    if cmod is None:
        print 'None'
    else:
        print cmod.__name__
def find_diff():
    from astropy.utils import find_current_module
    print find_current_module(0,True).__name__

mod2.py **

def find():
    from .mod1 import find2
    find2()

これらのモジュールを実装すると,以下のような場合がある.

>>> from pkg import mod1, mod2
>>> from astropy.utils import find_current_module
>>> mod1.find1()
pkg.mod1
>>> mod1.find2()
None
>>> mod2.find()
pkg.mod2
>>> find_current_module(0)
<module 'astropy.utils.misc' from 'astropy/utils/misc.py'>
>>> mod1.find_diff()
pkg.mod1