こんにちはPyQチームです。
興味を持つと、「もっと知りたい」という探究心が湧いてきますよね。
今回は、「Pythonのことをもっと知りたい」と思ったあなたに、Pythonのすこし深い話として、歴史や特徴について紹介します。
※このページは、PyQチームが作成した「10分で解るPythonとは」をベースに執筆しています
「Pythonの人気な理由」や「Pythonの使われている分野」などPythonの大要を知りたい方は、以下の記事もぜひ読んでみてください。
Pythonの歴史
Pythonは1990年代の始めに、オランダ人のGuido van Rossumによって開発されました。
1989年のクリスマス休暇中に、趣味のプログラミングプロジェクトとして開発を開始したのがきっかけだと言われています。
Pythonという名称は、イギリスで大人気だったテレビ番組「空飛ぶモンティ・パイソン」(Monty Python’s Flying Circus)が由来です。
2001年には、Pythonソフトウェア財団(PythonSoftwareFoundation,PSF)が組織されました。
PSFはPython関連の知的所有権を所有するために作られた非営利団体で、Pythonのリリースはすべてオープンソースです。
Pythonの言語仕様
言語仕様とは、その言語がどのような設計で作られているかを表すものです。
Pythonでは、Python言語リファレンスで明示されています。
Pythonの特徴
Pythonは、インタプリタ言語
Pythonの可読性の高さでも説明したとおり、Pythonはコンピュータ言語への翻訳(コンパイル)を実行しながら随時行うインタプリタ言語です( 標準インストールにより「Pythonインタプリタ(以降インタプリタ)」が利用できるため)。
Pythonはやりたいことをシンプルに記述でき、インタプリタによりちょっと書いて確認が簡単にできます。
インタプリタ言語に対するものとして、コンパイラ言語があります。 コンパイラ言語は、実行するのにコンパイルという作業が必要になります。
一手間かかりますが、コンパイルにより実行前にコードの間違いを確認できるという面もあります。 Pythonでは、コンパイルとは違いますが、コードをチェックするコマンドとしてflake8やpylintなどがあります。
Flake8
Flake8(フレーク8)は、エラーチェッカーのpyflakes、 Pythonコードスタイルガイドチェッカーのpycodestyle、循環的複雑度を測れるmccabeを実行します。
$ pip install flake8
でインストールできます。
URL:http://flake8.pycqa.org/en/latest/
pylint
pylint(パイリント)により、エラーチェックとPythonコードスタイルガイドチェックができます。
pyflakesよりもチェック項目が多く、さらにコードを厳密にチェックできます。
$ pip install pylint
でインストールできます。
URL:http://pylint.pycqa.org/en/latest/
Pythonはオブジェクト指向
オブジェクト指向とは、プログラミングに用いられる考え方で、現在のプログラミングでは必須とも言われている概念です。
Pythonは、オブジェクト指向をサポートする言語です。言語の機能面では、クラスが使える言語と考えるとよいでしょう。
クラスとは、同じような構造を持つデータの元になる型です。データをすべてモノ(すなわちオブジェクト)と捉えた時に、クラスはオブジェクトの設計図のような役割を果たします。
この時、設計図に書かれている属性をプロパティ、設計図を元にして作ったモノをインスタンスと言います。
Pythonは、このクラスという機能が最小限の構文・意味付けを用いて実装されています。
Pythonの機能を一部紹介
文字列処理 | Pythonは本格的なプログラミング言語ですが、ちょっとした文字列処理でも便利に使えます。 たとえば、2つの文字列の変数s とt があったときに、s + t は連結した文字列になります。 |
数値演算 | Pythonでは、Cなどの他のプログラミング言語のように数値演算ができます。 Pythonでは整数は何桁でも計算できます。 実数は有限の有効桁数ですが、sympyなどのライブラリーを使うと何桁でも計算できます。 | if文 | プログラムの制御構造の条件分岐の文法があります。 条件分岐とは「晴れていたら庭に水をまく」のように条件に当てはまれば処理を実行し、条件に当てはまらない場合は処理を実行しなかったり、別の処理を行うことです。 | for文 | プログラムの制御構造の「繰り返し処理」の文法があります。 繰り返し処理とは「1から100までの数値を順番に足し算する」のように、対象になるいくつかのデータを1つ1つ処理することです。 何度も繰り返し行う処理について何度もプログラムを書かなくてよくなります。 | 正規表現 | 正規表現を使うと、似たような表現をまとめて処理できます。 たとえばre.findall('@([^.]+).co.jp', text) のようにすると、text中の '@XXX.co.jp' からXXXを抜き出せます。 |
デコレーター | 関数を修飾(デコレート)するものです。 デコレーターを関数に設定することで、関数の前後に処理を追加できます。 | with文 | Pythonのwith文を使うと、ブロックの開始、終了時に処理を追加できます。 たとえばwith open() とファイルを開くと、withブロック終了時にファイルが自動でクローズされ便利です。 |
モジュールインポート | Pythonは他のPythonファイルから関数やクラスをインポートして活用できます。 Pythonではファイルを分割してプログラムを設計できます。 Pythonはインポートの仕組みがよくできているので、大規模なプログラムでも破綻せずに設計できます。 | 日付処理 | Pythonでは、日付や時間データを操作するためのクラスを提供しています。 単なる数値で日付を扱うと「月またぎ」のときなど計算が必要になりますが、datetimeモジュールを使うと11月30日の「次の日」は12月1日だとすぐに計算できます。 | カレンダー処理 | calendarライブラリーを使うと、カレンダーを表示したり、カレンダーに関係する色々な計算ができたりします。 具体的には1年分のカレンダーを表示したり、今年はうるう年か調べたり、2019年11月5日は何曜日かを計算できます。 | 可変長引数 | Pythonの関数には可変長引数を使って、任意の個数の引数を受け取れます。 |
まとめ
今回はPythonの歴史や具体的な機能について紹介しました。
Pythonはやりたいことをシンプルに記述でき、インタプリタによりちょっと書いて確認できます。ぜひ、実際に動かしてみてください。
もしも「環境を構築するのが面倒」だと思う方は、ブラウザーだけで気軽にPython学習ができるPyQをチェックしてみてください。
このページは、PyQチームが作成した「10分で解るPython とは」をベースに執筆しています
PyQチームが公式ドキュメントの掲載内容をベースに、「Pythonってどんな言語なんだろう」という疑問を持つ皆様に対し、学習を支援する補足的なページとして作成しました。
「Pythonをゼロから網羅的に知れる」「気になった時、すぐに情報にたどり着ける」「深く調査する為のインデックスになる」ようなページを目指しています。