【Python】import と from import *の違いについて

プログラム
スポンサーリンク

はじめに

今回はPythonのimportとに関する事を紹介します。
Pythonの導入が済んでおり、基本操作が行えることを前提で進めます。

↓前提知識はこちらをご覧ください↓

※おさらい

importとは、外部のプログラミング(.py)ファイルなどを読み込んで
その処理を使えるようにする機能です。

import ○○について

もっとも一般的なImportの形です。
読み込んだモジュールは「プレフィックス」という名前を打ち込んで使う形になります。
プレフィックスの後に「.****()」の関数名を打ち込んで使う形になります。

この形のメリットは「関数名の衝突」を回避できる事です。
mathとcmathには同じ「.sqrt()」という関数があります。
が、プレフィックスがあるので、問題無く使えます。

同じ名前の「sqrt()」でも頭に「math.」と「cmath.」があるので
違いが分かり、エラーが出なくなります。

あと、プレフィックスの名前は「import ○○ as ◇◇」という形で自由に変更できます。

できますが…
他のモジュールと名前を被らせてしまうとエラーが出るので注意。

大規模な開発を行う場面では、なるべく変えない事が無難。

以上が「import」についての解説です。

from ○○ import *について

モジュールはfrom ○○ import *という形でも読み込めます。
fromでモジュールを指定、import *で全ての関数を読み込みという流れです。

「*」はワイルドカードと呼ばれるもので…
ここでは “すべて” を読み込むという意味で使われてます。

※ただし「*」の使用はプログラム的には避けた方が良いとされてます。(詳細

この方法で書くと「プレフィックス」を省略できます。

また「*」を使わず、必要な関数だけ設定すれば必要な関数だけ読み込めます。

デメリットは、意図しないところで名前が衝突する可能性がある事です。

mathとcmathはプレフィックスが消えると… 「sqrt()」だけになります。
そして、どちらの「sqrt()」なのかが分からなくなります。

このような状態を「名前空間の汚染」と呼びます。
エラーが出たり、出ないにしてもどちらを実行するかが選べない。
意図しない方が実行されたりという… 問題に繋がります。

なので、from ○○ import ◇◇はやや動作が不安定です。
「import ○○」を使うのがおすすめ。

コードが長すぎて、読みづらい場合は名前の重複に注意しながら…
「import ○○ as □□」のような形で設定します。

from ○○ import [必要な関数名]だけで指定すれば…
ちょっと負荷が軽くなるかもしれませんが、安定性の観点では微妙のようです。

まとめ

今回はPythonのモジュールの読み込み方、importとfrom import *の違いについて解説しました。

・モジュール = 外部のプログラム(.py)ファイル
・improtなどを使うと、外部プログラムから “関数” を読み込める
・import ○○ がもっとも一般的な読み込み方
・import ○○ だと、関数の前に「モジュール名.」のプレフィックスが必要
・from ○○ import * という形でも、読み込み可能
・from ○○ import * を使えば、プレフィックスを省略できる
・from ○○ import * は別モジュールの関数名と名前が被ることがあるので注意
・安定性を考えると「import ○○ 」がおすすめ
・モジュール名が長くて読みずらい場合は「import ○○ as ◇◇」で省略表示可能

また、他にもプログラムについて解説してます。

ぜひ、こちらもご覧ください。

コメント

タイトルとURLをコピーしました