pythonを始めて、色々なサイトを参考にさせて頂いているとimportの書き方がバラバラで混乱してきたので初心者向けにまとめてみました。
はい、私向けです(笑)
import の書き方/種類
私が確認した限りですが、下記3種類の記載方法があるようです。例として、「誰でも出来る」編で使用した pyautogui を使ってご紹介します。
import pyautogui
import pyautogui as ag
from pyautogui import moveTo, position
シンプルなimport
>>> import pyatuogui
>>> pyautogui.position
Point(x=1291, y=531)
>>>
最初に説明される用法ですね。import後、使用する際にはパッケージを指定して使用する必要があります。(pyautoguiのposition関数といった感じです)
import 別名を指定する方法
>>> import pyautogui as ag
>>> as.position()
Point(x=1291, y=531)
>>>
パッケージをimportする際に別名を指定してやる方法です。上記サンプルはpyautogui を ag という別名を指定し、使用する際には ag.position() と別名でpyautogui内の関数をCallできているのがわかります。 では、下記のパターンはどうでしょうか。
>>> import pyautogui as ag
>>> pyautogui.position()
Traceback (most recent call last):
File "<stdin> line 1, in <module>
Name Error: name pyautogui is not defined
>>>
エラーになりました。「pyautogui」が見つからないと出ています。つまり別名を指定した場合には、元のパッケージ名 pyautogui は定義されない(使えない)ということになります。
パッケージ内の特定クラス/関数のみimportする方法
>>> from pyautogui import position, moveTo
>>> position()
Point(x=1291, y=531)
>>>
pyautogui のうち、特定の関数のみ指定してimportする方法です。この方法では、使用する際にパッケージ名を指定する必要がなくなります。上記サンプルではpyautogui内のpositionとmoveTo関数のみインポートし、position をパッケージ名なしで実行できていることが確認できます。
ちなみにimport対象はアスタリスク * を使用してすべてを対象にすることが可能です。
>>> from pyautogui import *
>>> position()
Point(x=1291, y=531)
>>>
では、パッケージ名を指定して実行するとどうなるでしょう。
>>> from pyautogui import position, moveTo
>>> pyautogui.position()
Traceback (most recent call last):
File "<stdin> line 1, in <module>
Name Error: name pyautogui is not defined
>>>
やはりエラーとなりました。こちらのimportを使用した際にもパッケージ名 pyautogui は定義されない(使えない)ということになります。
まとめ
今回は import についてまとめてみました。記載方法によって使い方が変わるためプロジェクト開始時の命名規約やルール付けが大事ですね。
素人な私個人の感想としては、from ~ の方式はデバッグや後のメンテナンスに影響しそうなので、import ~ または import ~ as ~ の方式がいい気がします。
他のimportの記載方法やメリット/デメリットなどありましたらコメント頂けると嬉しいです。
では。
コメント