|
|
Python(パイソン)は、GuidoVanRossum によって作られたオブジェクト指向スクリプト言語。
イギリスのテレビ局 BBC が製作したコメディ番組であるモンティ・パイソンにちなんで名付けられた。
インタプリタ(あるいはランタイムコンパイラ)により動作する。インタプリタの実装は、元になったCPython の他に、スタックを排除した実装のStackless Python、JavaによるJythonなど複数ある。
マイクロソフトウインドウズ、マッキントッシュ、各種UNIX、Linux、PalmOSなど非常に多くのオペレーティングシステムで動作する。
構文がわかりやすいことと、初心者向けから専門家向けまで多くの説明文書があることから、一部の中学〜大学で教育に利用されている。
多くのプラットフォームをサポートしており、豊富なライブラリがあるため産業界でもその利用は増えてきている。
動的な型付け、インデントによるブロックの指定、オブジェクトのメンバに対するアクセスが基本的に制限されないことなどが特徴。
利用目的は汎用で、方向性としてはJavaに近い。 しかし lambda式 をとり入れるなど、Lisp からの影響もみられる。 「一つのことを明らかに行う方法は一つだけ」になるように設計されている点は、 Scheme やUNIXの最小主義にも共通する。 (ひとつの操作に対し多数のアプローチを用意するPerlとは、この点で対照的である)
Python の文法は、C あるいは C++ を基本としているが、式ベースではなく文ベースであり、また、源流である ABC言語からの性質である「インデントブロック(インデントの深さによってブロックのネストの深さを表現する)」を採用している。
その他にも、Modula-2 から簡素にして強力なモジュール機能を、ICON から連想配列(辞書)やスライス演算子などを、Haskell からリスト内包の構文(最近のバージョン)など、多彩な特徴を取り入れている。
言語の要素(モジュール、クラス、オブジェクト)は全て辞書のインターフェースを提供しており、リフレクションを利用した記述が簡明に記述できることも特徴である。
(Python のオリジナルの構文は、ほぼ皆無である・・・これは、独特の文法を言語の特徴としてアピールする言語群とは一線を画し、奇をてらうことなく徹底的に直感性と実用性を重視した結果といえよう)
| Table of contents |
|
2 文法 3 ライブラリ 4 Pythonによって実装されているアプリケーション 5 Pythonに影響を与えた言語 6 外部リンク |
Python の基本的なデータ型としては、整数型、多倍長整数型、浮動小数点数型、複素数型、文字型、UNICODE文字型がある。多倍長整数型は、メモリの許す限り無制限桁数の整数計算が可能である。
さらに、組み込みのコンテナ型として、リスト、タプルと辞書型が、またモジュールオプションとして重複を許さない集合型などがある。リスト、辞書と集合は変更可能 (mutable) で、タプルは変更できない (immutable)。
Python は動的な型付けを行う言語である。
値が型を持ち、変数は全て値へのリファレンスである。
過去には参照カウント方式によるガベージコレクタが実装されていたが、現在はマークアンドスイープ方式のガベージコレクタが実装されている。
Python の文法は可読性に重点を置いて設計されている。
他の言語では記号を使っている部分についてもキーワードを設定している。
C、Java、Perl などの言語に比べて非常に予約語が少ない。
たとえばループの形式は2通りで、リストまたはイテレータについてループを行うfor文と、条件判定文が真である限りループし続ける while 文しかない。
インデントによる見た目のブロック構造と実際のブロック構造を結びつけることで視覚に訴えるインターフェースを提供しているので「プログラミング言語版のGUI」と呼ばれることもある。
以下に、C と Python で再帰呼び出しを用いて階乗を計算する例を示す。
C:
Python(lambda ver.):
try: except による例外処理をサポートしている。
raise によって明示的に発生する例外以外にも、Python 上で起こるエラーは全て例外として処理される。
Python の標準ライブラリは非常に充実している。C 言語のシステムコールをモジュールに分けたOS インターフェース、XML処理系、シリアライズ、ネットワークの各種プロトコル(HTTP,FTPなど)、文字列処理、データベース接続、Tk を利用した GUIフレームワーク、HTML、Python 設定ファイルなどの構文解析など。
さらに、サートパーティによるライブラリも、欧米での普及を反映して非常に多い。
数学パッケージの Numeric PythonやPython Imaging Library、SDL などが有名。
その他、3DCG や可視化ソフトウエア、ゲームなどに組み込まれてスクリプト言語として利用されている。
データ型とデータ構造
文法
インデント
Python の構文の特徴として、インデントを用いてブロックを定義することがある。int factorial(int x) {
if (x == 0) {
return(1);
} else {
return(x * factorial(x-1));
}
}Python:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x-1)なお、Pythonではlambda演算子を用いることにより、以下のような書き方もできないことはない(推奨されてはいないが) factorial=lambda x:(x and factorial(x-1)* x) or 1
例外処理
ライブラリ
Pythonによって実装されているアプリケーション
Pythonに影響を与えた言語
外部リンク