3
def a():
    print __name__

そのような関数を使用できる可能性はありますが、別のモジュールによってインポートされ、そこから呼び出された場合、「正しい」モジュール名を出力しますか?

「正しい」モジュール名は、常にそれが呼び出されたものでなければなりません。

4

1 に答える 1

1

sysモジュールは、呼び出し元を検索するための CPython 固有の方法を提供します。

sys._getframe(1).f_globals.get('__name__', '__main__')

_getframe() 関数はここに文書化されており、フレーム オブジェクトはここに文書化されています。

于 2013-01-30T06:02:04.753 に答える