ホームページ > バックエンド開発 > Python チュートリアル > 文字列変数から Python モジュールを正しくインポートするにはどうすればよいですか?

文字列変数から Python モジュールを正しくインポートするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-29 01:38:11
オリジナル
1018 人が閲覧しました

How Can I Correctly Import Python Modules from String Variables?

Python の import を使用した文字列変数からのモジュールのインポート

Python プログラミングの領域では、次のようなニーズに遭遇する可能性があります。文字列変数に基づいてモジュールを動的にインポートします。ただし、このアプローチでは、従来のインポート ステートメントと比較して予期しない結果が生じる可能性があります。この記事では、Python の import 関数の内部の仕組みを詳しく調べ、これら 2 つのアプローチの違いを説明します。

次のシナリオを考えてみましょう: からメイン クラスのリストを取得したいと考えています。 matplotlib ライブラリのサブモジュール。これを行うには、__import__ を使用して文字列からサブモジュールをロードしようとします。

import matplotlib.text as text
x = dir(text)

i = __import__('matplotlib.text')
y = dir(i)
ログイン後にコピー

リスト 'x' と 'y' を比較すると、リスト 'x' と 'y' に存在しない予期しない要素が 'y' に含まれていることがわかります。 「×」。これは、import が必要のない追加情報をロードしていることを示唆しています。

この動作を理解する鍵は、import__ の fromlist パラメーターにあります。デフォルトでは、このパラメーターは空のリストで、指定されたモジュールから使用可能なすべての属性をロードするように __import に指示します。この問題を修正するには、fromlist で空の文字列 ('') を明示的に指定する必要があります。

i = __import__('matplotlib.text', fromlist=[''])
y = dir(i)
ログイン後にコピー

この変更により、'i' は 'matplotlib.text' サブモジュールのみを参照するようになりました。 'y' には、メイン クラスの必要なリストが含まれます。

あるいは、Python 3.1 以降では、importlib モジュールを使用して次のことを実現できます。同じ結果:

import importlib

i = importlib.import_module("matplotlib.text")
y = dir(i)
ログイン後にコピー

Python のインポート メカニズムの複雑さを理解することで、モジュールの読み込みの微妙な違いを効果的にナビゲートし、プログラムが意図したとおりに動作することを確認できます。

以上が文字列変数から Python モジュールを正しくインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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