インポートされたモジュールでのグローバル変数の可視性
Python では、グローバル変数はすべてのモジュールにわたってグローバルにスコープされるのではなく、モジュール内でスコープされます。これは、インポートされたモジュール間でグローバル変数を共有しようとする開発者にとって混乱を招く可能性があります。
問題:
次のシナリオを考えてみましょう。「module1」という名前のモジュールがあります。ユーティリティ関数を定義します。これらの関数は、インポート先のモジュールで定義されたグローバル変数「a」に依存します。 「module1」をインポートし、その関数を呼び出そうとすると、「グローバル名 'a' が定義されていません」エラーが発生します。
解決策:
いくつかの方法があります。この問題を解決するには:
-
インポート時にグローバル変数を設定します。 module: これには、インポートされたモジュールのグローバル名前空間にアクセスし、その関数を呼び出す前に変数を設定することが含まれます。
-
グローバル変数を引数として渡します: "module1" をインポートするとき、グローバル変数「a」をモジュールの関数への引数として使用します。これにより、関数はグローバル名前空間を変更せずに変数にアクセスできるようになります。
-
共有モジュールを作成します: 複数のモジュールでグローバル変数が必要な場合は、共有モジュールとして機能する別のモジュールを作成します。これらの変数のリポジトリ。共有モジュールと、変数へのアクセスが必要なモジュールの両方をインポートします。
追加の考慮事項:
- グローバルには from module import var を使用しないでください。変数。これによりローカル変数が作成され、インポートされたモジュールでグローバル変数が変更されても更新されません。
- 真のグローバル変数については、組み込みモジュール (Python 3.x のみ) を使用するか、カスタム グローバル変数を実装することを検討してください。解決策。
以上がインポートされた Python モジュール間でグローバル変数を共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。