ホームページ > バックエンド開発 > Python チュートリアル > Python 3 ではインポート ステートメントはどのように変更されましたか?

Python 3 ではインポート ステートメントはどのように変更されましたか?

Mary-Kate Olsen
リリース: 2024-12-02 07:26:10
オリジナル
211 人が閲覧しました

How Have Import Statements Changed in Python 3?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート