Contents
Python
Pythonは近年人気の高いプログラム言語の一つで汎用性の高いインタプリタ言語というRubyと似た特徴を持っていますが、海外で特に高い支持を得ている言語です。
Pythonの文法の特徴としてインデントの強制があります。Pythonはこのルールによって皆が似たコードを書く事を促すことで、初心者にも可読性の高いコードが書きやすいことからRaspberry Piなどのプログラミング初心者向けのプロジェクトにも広く採用・推奨されています。
また僕は専門家ではないので詳しく解らないのですが、科学の分野での計算や分析のためのライブラリなども充実している事から、そういった専門分野の人にも馴染みのある言語ようです。
https://www.scipy.org/
Pythonの開発者
Pythonを開発したのはオランダ人のグイド・ヴァン・ロッサム氏です。
ロッサム氏はGoogleがPythonを気に入っていて社内で多用しているため勤務時間の半分をPythonの開発費やすことを許されるというかなり羨ましい勤務状況で一時Googleに所属していましたが、後にGoogleを退社しその後はDropboxに所属している模様です。
「Python」開発 グイド・ヴァンロッサム氏/zakzak
Pythonのサイト
日本のコミュニティサイト
・目立つ所にPythonに関する求人情報が載っているのが珍しくておもしろいです。
バージョンの違い
Pythonは現在2.x系と3.x系の互換性の無い二つのバージョンが利用されており、どちらを使えばいいのか?というのがPython初心者の悩みどころになっています。
2つの中では3.xのほうが当然新しいのですが、僕の印象では2.xから3.xへの移行は手間取っていてあまり順調には済んでいないという印象がありました。
2016年7月現在での各バージョンの利用状況
実際Google.comの検索で今現在(2016/07/15)それぞれのバージョンでヒットするページ数を調べてみると。
「python2」が約2,560,000件
「python3」が約2,910,000件
と若干Pyton3のほうが多い程度の差が出ました。
が、しかし
GoogleトレンドでPython2とPython3の比較をしてみたところ、年々Python2とPython3の検索されている数は差が開いており特にここ2年でその傾向は顕著になっていて現在ではPython2とPython3で検索ワードの数で15対100の差がついていました
どうやら僕はPython業界からは取り残されていたようです…。
Googleでの検索ヒット数やGoogleトレンドのデータだけで正確な状況はわからないですし、人気の言語であるためPython2で書かれたコードでまだまだ現役なものもたくさんあるとは思いますが、最近のPython3の検索の伸び方をみると現在では新しいバージョンへの移行は活発に進んでいるようです。
バージョンの共存と使い分け
僕の環境では(ubuntu14.04)ではPython2、Python3共に標準でインストールされていました。
それぞれのコマンドでの使い分けは
Python2は
ython --version Python 2.7.6
Python3は
python3 --version Python 3.4.3
となっておりPython3を使いたい場合にはPython3用のコマンドを使います。
ubuntuでは標準で両方ともインストールされている事もあり、基本的な使い分けに関しては悩む所は少ないのではないかと思います。
追記:2016/10/13
ubuntuの最新のLTS版である16.04になって標準ではPython2はインストールされなくなりました。
最初からは入っていないだけでパッケージ管理システムからはインストールできますが、Ansibleを良く使うのでむしろPython2だけは最初から入れておいてよって感じなんですが、時代の変化の過渡期という事で我慢するしかないですね。
参照: 16.04 LTSの新機能/ubuntu wiki
インストール
インストールと書きましたがubuntuには最初からインストールされていますし、むしろubuntuのシステム自体がPythonに依存しているせいかパッケージ管理システムの通常の削除の方法ではPythonを消すことが出来ません。
$ sudo apt-get remove python ... Removeing python(2.7.5-5ubuntu3) ... $ python --version Python 2.7.6
消えてません。
無理矢理にアンインストールしようとするとデスクトップの表示がおかしくなるなどの不具合が出る場合もあるようなので、ubuntuのPythonはうかつに消去しないほうが良いでしょう。
またなんらかの理由でPythonを一度入れなおしたいという場合にはubuntuのaptであればreinstallのオプションが使えます。
$ sudo apt-get insatll --reinsatll python
Pythonの実行
対話モード
いよいよPythonを使ってみます。最初は対話モードを実行してみました。
対話モードはPython2,Python3ともターミナルから何も指定せずにそのままPythonコマンドを入力すれば実行できます。
$ Python3 [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
対話モードが起動したら入力が待機されるので、そのままコードを入力すればPythonが実行されます。
終了の際はexit()関数を呼び出すかCtr-Dを押します。
さて最初のプログラムという事でお約束通りにHello worldで実行したいのですがPython2とPython3で文字を出力するためのprintの挙動が異なります。
Python2の場合はprintは文として書けるので以下の形になります。
print "Hello World!!" Hello World!!
対してPython3はprintは関数に変更されたの以下のように書く必要があります。
print("Hello world!!") Hello world!!
個人的にRubyに慣れている事もあってprint文で書きたい所ですが、Python3の場合は文字列をきちんと()でくくる必要があります。
ファイルからの実行
対話モードの実行が出来た所で今度はファイルに書いたコード実行していきます。
まずコードを書くためのファイルを作成しますが、Pythonファイルの拡張子は.pyになります。
$ vi main.py
Python3で書いていきます。
print(10 + 5)
ファイル名を指定して実行します。
$ python3 main.py 15
無事実行出来ました。
さてPythonの特徴と言えばインデントの強制があります。
関数や条件分岐を書く際に多くの言語ではその処理を記述するブロック(複合文)を{}で括り、その中に処理を書きますがPythonでは{}を使用せずにインデントの強制によりブロックの中と外の区別をします。
javascriptの例
function square(number) { return number * number; } var x; x = square(5); console.log(x);
{}でブロックを括っている。
Ptyhonでブロックを使用する場合にはまずヘッダ部分の末尾に:をつけます。そしてその後のブロックの中身をインデントにより一段下げて記述していきます。
a = 4 if a % 2 == 0: print("a is even.")
適切なインデント。
$ python3 main.py a is even.
if文が実行されています。
このインデントによる字下げは強制のため必ず行わなければなりません。もし適切なインデントが行われていなかった場合はエラーが表示されます。
a = 4 if a % 2 == 0: print("a is even.")
適切でないインデント。
File "main.py", line 3 print("a is even.") ^ IndentationError: expected an indented block
エラーの表示。
最初は独特の構文に戸惑う事があるかもしれませんが、このインデントのルールによって慣れてくれば少ないタイプ数でコードが書けますし、他人のコードを読む際にもキレイにインデントされた読みやすいコードを読むことが出来ます。
まとめ
簡単にPython使い方についておさらいしてみました。
今回この記事を書くにあたって調べ直してみて色々発見もありました。特にPython2から3への移行は僕の知らない間にどんどん進んでいたようです。コミュニティの努力の成果なのか新しいバージョンへ完全に移行出来る日もそう遠く無いかもしれません。