インポートされたモジュールのグローバル変数の可視性
問題:
モジュールのインポートにより可視性の問題が発生する可能性があるグローバル変数にアクセスするとき。グローバル変数が補助モジュールで定義されているが、メイン モジュールで参照されている場合、変数が定義されていないことを示すエラーが発生することがあります。
要件:
MySQL データベースに接続する Python プログラムは、メイン モジュールと、ユーティリティを含むインポートされたモジュールの両方にアクセスできる共有変数 (データベース カーソル オブジェクト) を維持しようとします。 function.
提案された解決策:
提案された解決策は、メイン モジュールからインポートされたユーティリティ モジュールにグローバル変数をインポートすることを提案しています。ただし、この方法では循環インポートやクラッシュが発生する可能性があります。
実際の解決策:
この問題には複数の解決策があります:
グローバル変数を避ける:
ユーティリティ関数をインスタンス メソッドに変換することを検討してください。クラスの。これにより、共有グローバル変数が不要になります。
インポートされたモジュールでグローバル変数を設定します:
from の代わりに import を使用して、インポートされたモジュール内でグローバル変数を定義します。 。これにより、インポートされたモジュールが必要に応じて変数を変更できるようになります。
共有変数に外部モジュールを使用する:
グローバル変数が複数のモジュールで共有されている場合は、それを配置します別のモジュールに作成し、他のすべてのモジュールにそれをインポートさせます。これにより、変数への一貫したアクセスが保証されます。
組み込みモジュールに変数を追加します (非推奨):
真のグローバル アクセスの場合は、変数を組み込みモジュールに追加します。 。ただし、このアプローチは、既存の組み込みとの競合を避けるために注意して使用する必要があります。
以上が循環インポートを発生させずに Python モジュール間でグローバル変数を共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。