Pythonの__import__()関数とは?動的なモジュールインポートの使い方を解説
Pythonでプログラムを作成する際、他のモジュールが提供する関数やクラスなどを活用したい場面は多々あります。通常はコードの先頭でimport文を使ってモジュールを読み込みますが、__import__()関数を使えば、実行時に動的にモジュールをインポートすることも可能です。
例えば、特定のモジュールが必要なのが数行のコードだけの一時的な処理である場合や、モジュールからオブジェクトのコピーを作成して変更・利用したい場合などに、この関数が役立ちます。
__import__()関数の構文
__import__()関数の構文は以下のとおりです。
__import__(name, globals=None, locals=None, fromlist=(), level=0)
各引数の意味は次の通りです。
- name:インポートしたいモジュールの名前
- globals / locals:name引数をどのように解釈するかを決定します
- fromlist:名前を指定してインポートすべきオブジェクトやサブモジュール
- level:絶対インポートと相対インポートのどちらを使用するかを指定します
使用例
以下の例では、datetimeモジュールを__import__()関数を使って読み込み、プログラム内で必要な値を持つカスタムオブジェクトを作成しています。
dttime = __import__('datetime', globals(), locals(), [], 0)
print(dttime.datetime.now())
# dttimeのコピーを作成
x = dttime.datetime.now()
# カスタム結果を取得
print(x.strftime("%d-%B"))実行結果
上記のコードを実行すると、次のような結果が出力されます。
2021-01-12 07:38:54.903330 12-January
最初の出力では現在の日時が表示され、次の行ではstrftime()メソッドによって「日-月」形式でフォーマットされた結果が表示されています。
注意点
__import__()関数の直接使用は推奨されていません。パフォーマンスや可読性の観点から、モジュール全体をコードの冒頭でimport文を使って読み込む方が効率的です。__import__()関数は主に、importlibなどの内部で動的インポートを実現するために使われる低レベルの関数であり、特別な理由がない限り通常のimport文やimportlibモジュールの利用を検討しましょう。
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print
-
Pythonのgetpassモジュールとは?パスワード入力とユーザー名取得の基本を解説
Pythonの標準ライブラリには、ターミナル上で動作するアプリケーションにおいて、ユーザーの認証情報を検証してから処理を実行したい場合に役立つgetpassモジュールが用意されています。このモジュールには主に2つの関数が定義されており、セキュリティを意識したコマンドラインツールの開発に欠かせない存在です。 getpass() 関数:パスワードを安全に入力する getpass()関数は、ユーザーにパスワードの入力を促すための関数です。デフォルトでは、ターミナルに入力されたキーは画面に表示(エコー)されないため、第三者にパスワードを盗み見られる心配がありません。 また、プロンプトとして表示される