Pythonの基本 モジュールとは??

f:id:wataru_boss:20180526143327p:plain
こんにちは。BOSSです。
Pythonは機械学習の分野においては非常に人気の高い言語です。

が、その理由のひとつに非常にたくさんのモジュールあるいはパッケージが公開されており、自由に使うことができるという点にあります。

ここでモジュールやパッケージという言葉が出てきました。本記事ではモジュールあるいはパッケージとはなんなのかということについてまとめておきます。

モジュールとは?

他のプログラムに機能を分離して再利用できるようにしたファイルのことを「モジュール」と呼びます。

また、そのモジュールが複数まとまって構成されたものを「パッケージ」と言います。

これだけだとちょっとわかりにくいですね。プログラムのイメージの図はこんな感じです。

f:id:wataru_boss:20180510101900j:plain

左側がモジュールを使用しない場合。右側がモジュールを使用した場合。

左側の図のように、基本的には1つのプログラムにいろんな機能を自分で書いて詰め込むことができます。

が、そうしてしまうとプログラム行数が多くなり非常に読みにくくなります。

また自分がほんとにつけたい機能とは全然違うプログラムも書かないといけないなんてことも出てくるかもしれません。

そこで必要な機能ごとにそれぞれ分離しておいて、その機能を使うときだけ呼び出すというのがモジュールの基本的な考え方です。

たとえば上の図で言えば、ファイルを探す機能やグラフを描く機能などは分離しており使うときだけこのモジュールを使うよ!ってプログラムで描くだけで良いのです。

このモジュール。種類で言えば「組み込みモジュール」と「通常のモジュール」と大別することができます。

以下それぞれの意味と使い方について説明します。

組み込みモジュール

これはPythonをインストールすれば利用することができるモジュールとなっています。

たとえば

int('123456789')

int()は整数型にするモジュールで、この場合は「123456789」という文字列を整数の「123456789」という値に変換しています。

他にもたくさん組み込みモジュールはありますが、***()という形で使用することができます。

通常のモジュール

def plus_one(x):
    return x + 1

例えば上記のようなコードを書いてplus.pyで保存してみましょう。

そして、今保存したファイルと同じディレクトリーに次のようなファイルをmain.pyとして作成してみましょう。

# モジュールplusの関数plus_oneを利用
from plus import plus_one #これからモジュールを使いたいんだ!という宣言

# 実行
result = plus_one(1) #今からモジュール内のplus_one関数を使うよ!という部分
print(result)

これでmain.pyを実行すると2という結果が表示されるかと思います。

そうです。これはplusというモジュールのplus_oneという関数は、受け取った値に1足した数を返す物になっています。

main.pyの方にはplus_one(1)と()の中にモジュールに受け渡す数字を入力しています。

そして1足された2がresultという変数に代入されるわけですね。

ここで重要なことは以下の二点を覚えておくことです。

  • これからこんなモジュールを使いたいんだ!という宣言  → from モジュール名 import 関数名

  • 今からモジュール使うぞ!渡す値はこれだ!という宣言  →関数名()

便利なモジュールはたくさんある

先ほどは自分でモジュールを作りましたが、Pythonの非常に優れているところはもう誰かえらいひとたちが便利なモジュールをたくさん作ってくれています。

たとえば

import pandas as pd #これからこんなモジュールを使いたいんだ!という宣言

とするとPandasというパッケージを使用することができます。(ただしPandasをインストールしておかないといけません)

このPandasはデータ分析を支援するためのツールで、例えば

#今からモジュール使うぞ!渡す値はこれだ!という宣言
df = pd.read_csv('CSVファイルのパス', encoding = 'shift_jis')

とするとCSVファイルをデータフレームという形式で扱うことができます。

Pandas以外にもたくさん公開されていて、しかもモジュール内でどういう処理がされてるのか知らなくてもプログラムを組むことが出来るのです。

つまり、こういう値を渡してあげたらこういう値が返ってくる!

だけがわかっていれば十分扱えるのです。

まとめ

本記事ではモジュールの扱い方について説明していきました。

プログラミングはレゴブロックのように、すでに誰かが作ってくれた機能を組み合わせていくことでプロダクトを作っていくことができます。

知らなくていいことは知らないままで。

初学者はこのスタンスでPythonでプログラミングができる、そういうところ目指して勉強していけば良いのかなと考えています。