連載
» 2016年03月18日 05時00分 UPDATE

Dev Basics/Keyword:Python(プログラミング言語)

Pythonはオープンソースで開発されているオブジェクト指向スクリプト言語であり、シンプルなコードの記述、可読性の高さなどをその特徴とする。

[かわさきしんじ,Insider.NET編集部]
Dev Basics/Keyword
Insider.NET

 

「Dev Basics/Keyword」のインデックス

連載目次

 Pythonはオープンソースで開発されているオブジェクト指向スクリプト言語であり、シンプルなコードの記述、可読性の高さなどをその特徴とする。最近では、機械学習用の言語としても人気が高い。

Pythonとは

 Pythonはグイド・ヴァンロッサム氏が開発したオブジェクト指向のスクリプト言語で、オープンソースなライセンスの下で配布されている。その特徴としては、動的型付け/シンプルな構文規則/可読性が高い/バッテリー同梱などが挙げられる。

Python.org Python.org

 特に構文規則がシンプルなことから、初心者にも扱いやすく、プログラミング教育にも向いている。さらに記述性が高い(1行でより多くの意味を表現できる)ことから、プログラムコードもシンプルで可読性が高いものになる。

 また、Pythonの大きな特徴といえるのがインデントによってコードのブロック(プログラムコードの特定範囲)が決定することだ。C#などの言語における「{}」、Visual Basicにおける「End 〜」に慣れている人は、最初のうちは少々違和感を持つかもしれないが、これにはメリットもある。

可読性の高いコード

 Pythonはシンプルな構文規則を持つと共に、コードブロックをインデントによって表す。以下に例を示す。

# インデントでブロックが決定する
def foo(n):
  if n < 0:
    print("negative")
  else:
    print("zero or positive")
  print("end")

# 以下のようなコードは記述できない
def foo(n):
if n < 0:
print("negative")
else:
print("zero or positive")
print("end")


Pythonではインデントによりブロックが決定される

 これはfoo関数の定義だが、そのボディーにはインデントが一段付けられ(ここでは半角スペース2個)、if文の各節はさらに一段インデントされている。下に示した記述方法はPythonでは許されない。言語仕様のレベルでこのような規則を設けることで、おのずと誰にとっても読みやすい(=保守しやすい)コードを書けるのがPythonを使用することの大きなメリットといえる。

 このように、Pythonでは誰もが読めるコード、そして誰が書いても大体同じようになるコードが自然と書けるようになっている。これは「何かをする方法が1つ(できれば1つだけ)存在する」というPythonのモットーの1つを反映したものだ。

 この他にもコードが曖昧な場合には適当な推測を行わないなどの特徴がPythonにはある。例えば、Pythonでは次のようなコードは書けない。

print("200" + 10)


暗黙の型変換はできない
ただし、文字列と整数の乗算についてはこれらをオペランドにする演算子がサポートされているので可能だ。

 Pythonでは、文字列と数値を連結する演算子が定義されておらず、また暗黙の型変換も行ってくれない。どちらかの値をもう一方の値に変換する必要がある。

s = "200"
x = 10
print(int(s) + x)
print(s + str(x))


int関数により文字列を整数に/str関数により整数を文字列に変換

 このように、Pythonではコードで何を行っているのかを明示することも言語仕様のレベルで強制される。これはやはりPythonのモットーの1つである「暗黙的よりも明示的の方がよい」を反映したものだ。これもまたコードが何をしているのかを一目で理解できる可読性の高さにつながる要素といえる。

 なお、ここで紹介したモットーを含むPythonプログラミングの心構えは「The Zen of Python」としてまとめられている。

バッテリー同梱とPyPI、pip

 もう1つ、Pythonを特徴付けるキーワードとして「バッテリー同梱」がある。これはPythonをインストールすると同時にインストールされる標準ライブラリが幅広い分野をカバーしていることを表している。つまり、インストールした時点で、さまざまな種類のアプリの開発に取り掛かれることを意味している。

 その一方で、Pythonは標準ライブラリ以外にも多くのパッケージが提供されていることも大きな特徴の1つだ。どんなパッケージがあるかはPyPI(Python Package Index)を参照されたい。なお、最近ではPythonをインストールするとpipというユーティリティーもインストールされるようになっており、これを用いてパッケージ管理を行うのが主流となっている(デフォルトではpipはPyPIからパッケージをインストールする)。

2つのメジャーバージョン

 2016年3月16日の時点で、Pythonには2つのメジャーバージョン(Python 2とPython 3)が存在する。Python 2系の最新バージョン(かつ最終メジャーバージョン)はPython 2.7.x、Python 3系の安定版リリースのバージョンは3.5.xとなっている。

 ただし、2020年にはPython 2系のメンテンスが終了する予定なので(Python 2.7の初期リリース日である2010年7月3日から10年間はバグフィックスリリースが提供される予定)、Python 2をどうしても使う必要がない限り、これからPythonに取り組むのであれば素直にPython 3を選択するのがよいだろう。

 なお、Python 3とPython 2の間には互換性がない。このことから、Python 2からPython 3への移行を推進するためのツール(2to3)が提供されている。

機械学習のためのフレームワーク

 Pythonで機械学習を行うためのフレームワークとしては以下のようなものがある。詳細は個々のサイトを参照されたい。


 Pythonはオープンソースで開発されているオブジェクト指向スクリプト言語だ。本フォーラムの読者の多くが使っているであろうVisual Studioでも「Python Tools for Visual Studio」の形でPythonによるプログラム開発がサポートされているので、興味のある方はぜひ触ってみよう。

参考資料


「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。