「Python」を使えるようになろう!
近年利用者数が増加している「Python」ですが、Pythonの利用者数が増えている理由にはデータ分析関連の需要が高まっていることも一因となっています。
「機械学習」などの人工知能分野でも活用されていますが、「Python」の特徴や仕組みについて見ていきましょう。
「Python」の利用用途
「Python」が得意な処理は一般的に「科学技術計算」「高等数学計算」とされていますが、「デスクトップ・WEBアプリケーション」などを開発することもできます。
「複雑な計算が得意なプログラム」と聞くと、「初心者には難しいんじゃないか?」と思われるかもしれませんが、初心者からでも入門できるシンプルな文法のプログラム言語となっています。
「Python」は、さまざまなアプリケーション内で動く「組み込み型スクリプト言語」としても活用されていて、単体だけでなく、さまざまなアプリケーション内でも活用されています。
「Micro Python」と呼ばれる、基盤組み込みの「Python」も発表されるなど、「IoT」時代を見据えたロードマップが伺えます。
「Python」は、クラスベースのオブジェクト指向言語です。
これまでにオブジェクト思考に触れたことがある方ならすぐに使い始めることができるでしょう。
- シンプルなルール
- 拡張性の高い言語仕様
- 描きやすい文法
他のプログラミング言語と比較して、これらの点でPythonは優位にありますが、まだ他のプログラム言語のシェアが高いことも事実です。
既存システムのプログラム言語を変更することは心理的にも金銭的にもハードルが高いため、Pythonのシェアが広がるのも時間がかかるのではないでしょうか。
近年Pythonの需要が著しいのは、やはり機械学習などの人口知能関連の分野です。
- NumPy
- SciPy
- Scikit-learn
など、「データ分析・高度演算・機械学習」ライブラリが勢ぞろいしているプログラム言語はあまり無く、この分野の開発などの行う場合は、Pythonに利があると言えます。
Googleの公式開発言語として採用されていたこともあり、運用実績と信頼性では既に定評があるプログラム言語でもあります。
「Python」の基本文法
Pythonの基本文法は他のプログラム言語の記法と異なるところも多くあり、他の言語を利用している人は違和感を感じる部分もあるかもしれません。
それもPythonを書いていくことで解消され、「Pythonの記法でないとプログラムが書きにくい」と感じる人もいるほどです。
それでは基本文法について見ていきましょう。
変数
Pythonでは全てのものを「オブジェクト」として扱うため、変数は「オブジェクトを格納する入れ物」の働きをします。
score = 100
「score」という名前の変数に「100」という数値オブジェクトを代入しています。
変数名の前に接頭辞のようなものはなく、直接変数名を書くことで、変数を利用することができます。
定数
Pythonには定数がありません。
定数を示したい場合は、大文字で変数名を書くことで暗黙的に「定数」を予見してもらうことはできますが、変数内のオブジェクトを変更することができてしまいます。
リスト
他の言語では複数の値を管理する方法として「配列」という機能がありますが、Pythonでは、「リスト」を使うことができます。
リストに格納できるのは、「あらゆるオブジェクト」で、格納するデータの種類を気にすることなく利用することができます。
my_list = [23, "思い出", "work", 38.2, "買い物"]
このように、リストの中には、数値であったり文字であったり自由にデータを格納することができます。
リストの中身を取り出すには、
my_list[0] ← 「23」 my_list[1] ← 「思い出」 my_list[2] ← 「work」 my_list[3] ← 「38.2」 my_list[4] ← 「買い物」
のようにインデックスを元に値を取り出すことができます。
インデックスは一番始めの要素を0として自動で割り振られます。
また、インデックスを負数で指定すると、リストの後方から値を取り出すこともできます。
my_list[-1] ← 「買い物」 my_list[-2] ← 「38.2」 my_list[-3] ← 「work」 my_list[-4] ← 「思い出」 my_list[-5] ← 「23」
タプル
タプルもリストと同様に1つの変数に複数の値を格納することができます。
my_touple = ("休日", 55, "ドライブ", 32, "田舎")
タプルもインデックスで要素を取り出すことができます。
my_touple[0]← 「休日」 my_touple[1] ← 「55」 my_touple[2] ← 「ドライブ」 my_touple[3] ← 「32」 my_touple[4] ← 「田舎」
タプルは一度作ると値を変更することができません。
もし値を変更しようとすると「TypeError: 'tuple' object does not support item assignment」というエラーが発生します。
値を変更する必要がある場合は「リスト」を使用し、値の変更が不要な場合は「タプル」を使うといいった形で使い分けると良いでしょう。
辞書
辞書は、他の言語の「連想配列・マップ」と同等の機能です。
my_dic = { 'name': 'hoge', 'job': 'hogehoge', 'gender': 'man' }
値には、「Pythonオブジェクト」なら何でも格納することができます。
値を取り出す際には
my_dic['name'] ← 「hoge」 my_dic['job'] ← 「hogehoge」 my_dic['gender'] ← 「man」
のようにキーを指定して値を取り出すことができます。
if文
if文は、条件によって処理を切り分けることができます。
if 条件1: 条件1が合致した場合の処理 elif 条件2: 条件2が合致した場合の処理 else: 条件1・2に合致しなかった場合の処理
次のように書くことができます。
score = 100 if score == 100: print("perfect!") elif score > 80: print("合格") else: print("不合格")
for文
繰り返し処理を行うことができるfor文ですが、Pythonでは次のように書きます。
for ループ内の変数名 in 繰り返し対象のオブジェクト
次のように利用していきます。
for num in [20, 32, 53, 23, 31]: print(num)
for文が終わった際に何か実行したい処理がある場合はelseを利用します。
for num in [20, 32, 53, 23, 31]: print(num) else: print("表示完了")
while文
while文もfor文と同じく繰り返し処理を行うことができます。
while 繰り返し条件: 繰り返し処理
whileの利用例は次のようになります。
num = 1 while num =< 100: print(num) num += 1
関数
Pythonでは、関数自体もオブジェクトとして扱われます。
関数を作る際は、下記のように書きます。
def 関数名(引数): 関数の実行処理 return 戻り値
例えば、足し算を行う関数は下記のようになります。
def sample(num1, num2): return num1 + num2 ret = sample(1, 2) print(ret)
クラス
クラスを作るには下記の書式でクラスの内容を記述します。
class クラス名: 属性 メソッド
クラスの利用する場合は、
class Employee: id = 1 name = "hoge" def work(self): print(self.name + "はたくさん仕事をしました。") emp = Employee() emp.work()
Pythonのクラス内に定義されたメソッドの第一引数は、「self」という引数名にすることで、メソッドが呼び出された際に、クラスのインスタンスを受け取ることができます。
「継承」を行いたい場合は、
class クラス名(親クラス名):
と書くことで継承を定義することができます。
Pythonでは、親クラスを指定しなかった場合には「Object型」を継承します。
親クラスを複数持つことができる少数派言語がPythonですが、名前の衝突が起こる可能性があるなど、利用時には注意が必要です。
多重継承を行う場合は、
class クラス名(親クラス名1, 親クラス名2):
のように記述します。
「Python」の発展と最新動向のキャッチアップ法
Pythonを発展させるコミュニティとして「PyCon JP」があります。
主な目的は「Pythonに関するカンファレンス(会議)」を実施し、国内外のさまざまなカンファレンス団体と連携を行い、Pythonの普及につなげることのようです。
一人でPythonを書いていても、なかなかPythonに関する情報は得られないことも多く、実務で培った「パーソナルノウハウ」は「個人の暗黙知」としてのみ蓄積されていき、他の人にとっても有益であるにも関わらず、なかなか公知にならないもの。
そのような知識にカンファレンスで触れることで、Pythonを利用するスキルも上がっていくのではないでしょうか。
日本でのPythonの利用例はまだまだ少ないのが現状です。
PHP・Rubyなどの言語の人気も根強く、さまざまなプログラム言語が群雄割拠している状態ですが、「個人の主観・感性」によって適切なプログラム言語も異なってくるため、「触らず嫌い」は止めて、ぜひPythonにも触れてみてはいかがでしょうか。