第19回.import文(パッケージ・モジュールのインポート)
Pythonで使う関数には、
・組み込み関数
・標準ライブラリ
・外部ライブラリ
・自作モジュール
等々、いろいろな形態があります。
これらのうち、組み込み関数以外はimport(インポート)して使う必要があります。
import文の文法と使い方についてみていきます。
目次
Pythonの用語
厳密な定義できなく、あくまで理解する上での簡易的な説明です。
組み込み関数
標準ライブラリ
importが必要
外部ライブラリ
pipでインストールします。
モジュール
ファイルの拡張子は「.py」です。
このファイルをモジュールと呼びます。
ファイル名がモジュール名、つまり名前空間になります。
パッケージ
ディレクトリ名がパッケージ名、つまり名前空間になります。
ライブラリ
厳密な定義ははっきりしないようです。
名前空間(namespace)
名前の集合が区切られた空間に入ります。
そして名前空間は、ディレクトリのような階層になっています。
同一の名前でも、名前空間が違えば全く別のものになります。
Pythonでは、モジュール名やパッケージ名が名前空間になります。
import文の構文
モジュールの読み込みに使うのがimport文です。
import文の構文
import モジュール
モジュール.関数()
import モジュール as 別名
別名.関数()
from モジュール import 関数
関数()
from モジュール import 関数 as 別名
別名()
from モジュール import *
関数()
import パッケージ.モジュール
パッケージ.モジュール.関数()
import パッケージ.モジュール as 別名
別名.関数()
from パッケージ.モジュール import 関数
関数()
from パッケージ.モジュール import 関数 as 別名
別名()
from パッケージ.モジュール import *
関数()
import モジュール1, モジュール2
名前空間の指定に注意すれば問題ないと思います。
* を使った場合は、モジュール内の全てがローカルの名前空間に直接バインドされます。
名前の競合が起きやすく名前空間の仕組みが有効に使えなくなってしまうと思います。
ただし、そもそも私の環境(Visual StudioとIDLE)ではエラーとなって実行できませんでした。
「unexpected EOF while parsing」
Visual Studioでの警告表示
ただし、上記のような日本語名の場合はそれでも消えませんでした。
ですが、実行すれば問題なく実行できます。
これはIDEの問題でありPythonの問題ではありません。
作業ディレクトリの設定等、何らかの対処で回避できるはずですが、ここは追及せずに進みます。
標準ライブラリのインポート
いきなりこれらを覚えようとしてもさすがに無理だと思います。
必要になった時に調べながら使っていけばよいと思います。
以下に目についたものをいくつかピックアップしました。
ライブラリ | 説明 |
string | 一般的な文字列操作 |
json | JSON エンコーダおよびデコーダ |
pprint | データ出力の整然化 |
re | 正規表現操作 |
copy | 浅いコピーおよび深いコピー操作 |
datetime | 基本的な日付型および時間型 |
time | 時刻に関するさまざまな関数 |
calendar | 一般的なカレンダーに関する関数群 |
enum | 列挙型のサポート |
math | 数学関数 |
random | 擬似乱数を生成する |
glob | Unix 形式のパス名のパターン展開 |
pathlib | オブジェクト指向のファイルシステム |
csv | CSV ファイルの読み書き |
os | 雑多なオペレーティングシステムインタフェース |
io | ストリームを扱うコアツール |
sys | システムパラメータと関数 |
標準ライブラリをインポート
import math, datetime
print(math.fabs(-5)) #絶対値
print(datetime.date(2020, 9, 24)) #日付の作成
ライブラリ名.関数()
標準ライブラリに別名を指定してインポート
import math as m
import datetime as d
print(m.fabs(-5)) #絶対値
print(d.date(2020, 9, 24)) #日付の作成
標準ライブラリの特定の関数だけをインポート
from math import fabs as f #別名指定
from datetime import date
print(f(-5)) #絶対値
print(date(2020, 9, 24)) #日付の作成
したがって、関数名または別名だけで呼び出すことができます。
自作モジュールのインポート
┗ import_mod.py
┗ fnc1 ・・・ 関数
┗ fnc2 ・・・ 関数
┗ \import_dir ・・・ ディレクトリ
┗ import_dir_mod.py
┗ fnc1 ・・・ 関数
┗ fnc2 ・・・ 関数
import inspect
def fnc1(s="fnc1"):
print(f"{__name__}:{s}")
def fnc2(s="fnc2"):
print(f"{__name__}:{s}")
if __name__ == "__main__":
fnc1()
fnc2()
__name__には、
メインで実行した場合は、"__main__"が入り、
他から呼ばれたときは、モジュール名が入ります。
__init__.py
このモジュールを入れたりしますが、今回のサンプルではその必要性もなく、
あくまで、直下のディレクトリにモジュールを入れた場合という事で理解しておいてください。
自作モジュールをインポート
import import_mod
import_mod.fnc1()
import_mod.fnc2("fnc2")
モジュール名.関数()
自作モジュールに別名を指定してインポート
import import_mod as mod
mod.fnc1()
mod.fnc2("fnc2")
自作モジュールの特定の関数だけをインポート
from import_mod import fnc1
from import_mod import fnc2 as f2
fnc1()
f2("fnc2")
したがって、関数名または別名だけで呼び出すことができます。
直下のディレクトリのモジュールをインポート
import import_dir.import_dir_mod
import_dir.import_dir_mod.fnc1()
import_dir.import_dir_mod.fnc2("fnc2")
from import_dir import import_dir_mod
import_dir_mod.fnc1()
import_dir_mod.fnc2("fnc2")
呼び出す時の名前空間が違ってきます。
importは、
ディレクトリ名.モジュール名.関数()
from...importは、
モジュール名.関数()
直下のディレクトリのモジュールに別名を指定してインポート
import import_dir.import_dir_mod as mod
mod.fnc1()
mod.fnc2("fnc2")
from import_dir import import_dir_mod as mod
mod.fnc1()
mod.fnc2("fnc2")
直下のディレクトリのモジュールの特定の関数だけをインポート
from import_dir.import_dir_mod import fnc1
from import_dir.import_dir_mod import fnc2 as f2
fnc1()
f2("fnc2")
したがって、関数名または別名だけで呼び出すことができます。
同じテーマ「Python入門」の記事
第16回.Pythonの引数は参照渡しだが・・・
第17回.リスト内包表記
第18回.例外処理(try文)とexception一覧
第19回.import文(パッケージ・モジュールのインポート)
第20回.フォルダとファイルの一覧を取得(os,glob,pathlib)
第21回.CSV読み込みとopen()関数とwith文
第22回.CSV読み書き(csvモジュール)
第23回.pipコマンド(外部ライブラリのインストール)
第24回.エクセルを操作する(openpyxl)
第24回.エクセルを操作する(pywin32:win32com)
第26回.WEBスクレイピング(selenium)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.条件分岐(Select Case)|VBA入門
9.メッセージボックス(MsgBox関数)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。