はじめに
今回は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 ◇◇」で省略表示可能
また、他にもプログラムについて解説してます。
ぜひ、こちらもご覧ください。
コメント