ホームページ > バックエンド開発 > Python チュートリアル > Python で「import *」を避けるべき理由は何ですか?

Python で「import *」を避けるべき理由は何ですか?

Susan Sarandon
リリース: 2024-11-15 19:26:02
オリジナル
568 人が閲覧しました

Why Should You Avoid `import *` in Python?

Python における import * の秘密を明らかにする

Python では、謎めいたコマンド「import *」により、モジュールのリソースへの前例のないアクセスが許可されます。指定されたモジュールだけでなく、それを含むフォルダー内にある重要な __init__.py ファイルもインポートされます。その結果、祝福された __init__.py モジュールは現在の名前空間に不可欠になります。

project.model からの宣言

インポート の機能により、「から」を明示的に宣言する必要があります。 project.model import __init__」は蒸発します。 project.model モジュールとその神聖な __init__.py ファイルの両方にすべてを含めるには、単純な「from project.model import 」で十分です。

インポートの長所と短所 *

import * の魅力は、指定されたモジュールから現在の名前空間にすべての名前付きオブジェクト (アンダースコアで始まるオブジェクトを除く) をインポートできることです。 これにより、名前の前にモジュールの識別子を付ける必要がなく、インポートされたオブジェクトに簡単にアクセスできるようになります。

たとえば、次のスニペットを考えてみましょう。

from math import *
ログイン後にコピー
ログイン後にコピー

この魔法の呪文により、事前の知人なしで円周率の力をシームレスに行使する:

pi
3.141592653589793
ログイン後にコピー

しかし、輸入品 ※定価になります。これにより、名前空間の衝突の危険が生じ、現在のスコープ内の既存の変数が上書きされる可能性があります。さらに、ターゲット モジュールに大量のオブジェクトが含まれている場合、非効率であることが判明する可能性があります。最後に、そしておそらく最も重要なことは、コードの自己文書化の性質を抑制し、変数、メソッド、クラスの起源が謎に包まれたままになることです。

よりクリーンなアプローチ

したがって、賢明です。私たちの間では、import * はアドホック テスト用に予約されており、運用コードではより明示的な代替手段が好まれています。賢明な選択の 1 つは、必要なオブジェクトのみを明示的にインポートすることです:

from math import pi
ログイン後にコピー

あるいは、別の名前空間の下でモジュール全体をインポートすることも賢明な妥協策です:

import math as m
ログイン後にコピー

インポート内に潜むもの*

import * の謎を解明するには、その仕組みを理解することが不可欠です。デフォルトでは、すべての名前付きオブジェクト (アンダースコアで始まるオブジェクトを除く) がインポートされます。ただし、指定されたモジュールが all 変数を定義している場合は、優先順位が与えられ、その変数内で列挙された名前のみがインポートされます。

サブモジュールとインポート *

多くの標準 Python ライブラリは、urllib モジュールのユビキタス拡張である urllib.request などのサブモジュールに編成されています。 import * from urllib はこれらの神聖なホールを通過しないことに注意することが重要です。これらにアクセスするには、別の import ステートメントが必要です:

from math import *
ログイン後にコピー
ログイン後にコピー

結論

謙虚な import * コマンドは非常に強力で、モジュールの内容全体を現在の名前空間にインポートする機能を提供します。ただし、名前空間の衝突、非効率性、自己文書化の欠如などの危険に巻き込まれないように、注意して行使する必要がある力です。実稼働コードの場合、より明示的で構造化されたインポートの実践が、静けさと明快さへの道です。

以上がPython で「import *」を避けるべき理由は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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