0

私はこのファイル構造を持っています:

mainfolder
    package/
        __init__.py
        packagefile.py

__init__.py:

import packagefile as othername

import packageがメインフォルダーからの場合、packageともpackagefileありothernameます。何が起こっている ?2回輸入されたのですか?私はpython 2.7.3を持っています。これは予想される動作ですか? するとimport sys as something_else、現在の名前空間に sys が存在しなくなります。

4

1 に答える 1

2

はい、これは予期された動作です。基本的に、パッケージには常にモジュールが定義されています。あなたがしていることは、それらのモジュールの 1 つを別の名前でインポートすることでもあります。これは、元の名前として既に定義されていることを妨げません。

これが不都合な悪影響をもたらすとは思いません。たとえば、インタラクティブ ターミナルに入ると、次のように表示されます。

>>> package.packagefile is package.othername
True

これは、それらが同じオブジェクトへの参照であることを示します。たとえば、C++ で 2 つのポインターを比較するのと同様です。

ただし、モジュール メンバーの名前を変更するだけの場合は、代わりにファイルの名前を変更することをお勧めします。

于 2013-04-02T18:23:58.120 に答える