Pythonの内部についての質問。 import abc
を実行すると、Pythonはモジュールを新しい名前空間に読み込み、グローバル名前空間内の変数abc
を新しい名前空間を指すようにバインドします。`abc import xyz`を実行していますが、モジュール` abc`はどこに行きますか?
私はfrom abc import xyz
を実行する場合、それはいくつかの新しい名前空間にモジュール全体abc
を読み取り、モジュールがに読み込まれた、この新しく作成された名前空間にxyz
にバインドされている同じオブジェクトをグローバル名前空間内の変数xyz
をバインドします。少なくともそれは私の理解です。
その後、abc
が読み込まれた名前空間はどうなりますか? xyz
がその名前空間内の他のオブジェクトにアクセスする可能性があるので、どこかで生きていると仮定しています。この "幽霊" abc
名前空間に何とかアクセスできますか?
xyz
とfgh
がabc
で同じグローバル変数を変更した場合、唯一の存在になるように、また、私は、私は
from abc import xyz
from abc import fgh
を行うならば、一つだけ「ゴースト」abc
名前空間があることを仮定していますそれの1つのコピー。あれは正しいですか?
これは好奇心の外ですか?このようにモジュールに「秘密に」アクセスしようとする本当の理由はありません。モジュールオブジェクトにアクセスしたい場合は、それを普通にインポートするだけです。 – BrenBarn
ちょうど好奇心の外に、どのように物事がボンネットの下で働くかを理解しようとしています。私は多くのデータ作業を行い、この作業のいくつかをRからPythonに移行することを考えています。 – mrip