Python 3 のインポート ステートメントの変更点
Python 3 では、インポート メカニズムが大幅に改訂され、相対インポートとスターのインポートを制限します。
相対とは何ですかImport?
相対インポートは、ファイル システム内の現在のモジュールの場所を基準にしてモジュールまたはパッケージを参照するインポート ステートメントです。たとえば、次のファイル構造について考えてみましょう。
mypkg/ __init__.py module1.py module2.py
module2.py では、module1 import Foo からのステートメントは、兄弟モジュール module1.
から Foo クラスをインポートするため、相対インポートになります。明示的な相対インポート
Python 3 では明示的な相対インポートが必要です。インポートされたモジュールの場所を明確に指定します。 import ステートメントの先頭のピリオド (「.」) は、相対インポートを示します。たとえば、from .module1 import Foo は相対モジュール module1 から Foo をインポートします。
暗黙的な相対インポートの削除
Python 2 では、暗黙的な相対インポートによりモジュールを場所を明示的に指定せずにインポートされました。ただし、この動作は Python 3 では非推奨になりました。たとえば、Python 2 のステートメント import module1 は、現在のディレクトリから module1.py を暗黙的にインポートします。ただし、Python 3 では、このステートメントによりエラーが発生し、 from を使用した明示的なインポートが必要になります。 import module1.
Star Imports
Star インポート (例: from x import *) は、Python 3 のモジュールレベルのコードでのみ許可されます。これは、モジュールが使用できないことを意味します。 star は他のモジュールをインポートするときにインポートします。
Relative の使用例Imports
次の Python 2 コードを考えてみましょう:
# module1.py class MyClass: def __init__(self): print("Hello from MyClass")
# module2.py from module1 import MyClass
Python 3 では、module2.py は次のように書き換える必要があります:
# module2.py from .module1 import MyClass
この明示的な相対インポートにより、MyClass が module2 を基準とした正しい場所からインポートされることが保証されます。
以上がPython 3 ではインポート ステートメントはどのように変更されましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。