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

PEP 404 は Python のインポート ステートメントをどのように変更しましたか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 11:36:18696ブラウズ

How Did PEP 404 Change Python's Import Statements?

Python インポート ステートメントに対する PEP-404 の影響

Python Enhancement Proposal (PEP) 404 では、Python 3 のインポート ステートメントに大幅な変更が導入されました。 、モジュールの明確さと構成を強化します。 imports.

相対インポートとは何ですか?

相対インポートとは、現在のモジュールまたはパッケージに対して相対的な場所からモジュールをインポートすることを指します。 Python 2 では、暗黙的な相対インポートが許可されていましたが、Python 3 では制限されました。

相対インポートの変更

PEP-404 では、明示的な相対インポートが強制されます。モジュールは先頭に . を使用してインポートする必要があります。 (ドット) または .. (二重ドット) を使用して、現在のモジュールのディレクトリに対する相対パスを指定します。例:

from .mymodule import MyFunction  # Import from within the current package
from ..otherpackage import OtherClass  # Import from one level up in the directory structure

スター インポートの制限

スター インポート (パッケージからすべてのサブモジュールと属性をインポートする) は、モジュール レベルのコードでのみ許可されるようになりました。以前は、関数およびクラス定義でスターのインポートが許可されていましたが、名前空間の汚染や予期しない動作を防ぐために禁止されました。

例:

Python 2 コード:

# Function-level star import
def my_function():
    from mymodule import *
    do_something_with(MyAttribute)

# Class-level star import
class MyClass:
    def __init__(self):
        from otherpackage import *
        self.other_variable = OtherVariable

Python 3 コード:

# Module-level star import
import mymodule
do_something_with(mymodule.MyAttribute)

# Explicit import within function
def my_function():
    from mymodule import MyAttribute
    do_something_with(MyAttribute)

# Explicit import within class
class MyClass:
    def __init__(self):
        from otherpackage import OtherVariable
        self.other_variable = OtherVariable

明示的な強制によりPython 3 は、インポートとスター インポートの制限により、インポートの明確性を向上させ、名前空間の衝突を減らし、より構造化され保守しやすいコードベースを促進することを目指しています。

以上がPEP 404 は Python のインポート ステートメントをどのように変更しましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。