Python

Python（パイソン）は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。 文法を極力単純化してコードの可読性を高め、読みやすく、また書きやすくしてプログラマの作業性とコードの信頼性を高めることを重視してデザインされた、汎用の高水準言語である。 核となる本体部分は必要最小限に抑えられている。一方で標準ライブラリやサードパーティ製のライブラリ、関数など、さまざまな領域に特化した豊富で大規模なツール群が用意され、インターネット上から無料で入手でき、自らの使用目的に応じて機能を拡張してゆくことができる。 またPythonは多くのハードウェアとOS (プラットフォーム) に対応しており、複数のプログラミングパラダイムに対応している。Pythonはオブジェクト指向、命令型、手続き型、関数型などの形式でプログラムを書くことができる。動的型付け言語であり、参照カウントベースの自動メモリ管理（ガベージコレクタ）を持つ。 これらの特性によりPythonは広い支持を獲得し、Webアプリケーションやデスクトップアプリケーションなどの開発はもとより、システム用の記述 (script) や、各種の自動処理、理工学や統計・解析など、幅広い領域における有力なプログラム言語となった。プログラミング作業が容易で能率的であることは、ソフトウェア企業にとっては投入人員の節約、開発時間の短縮、ひいてはコスト削減に有益であることから、産業分野でも広く利用されている。Googleなど主要言語に採用している企業も多い。 Pythonのリファレンス実装であるCPythonは、フリーかつオープンソースのソフトウェアであり、コミュニティベースの開発モデルを採用している。CPythonは、非営利団体であるPythonソフトウェア財団が管理している。その他の実装としては、PyPyやIronPythonなどが有名である。 Pythonは、オランダ人のグイド・ヴァンロッサムが開発した。名前の由来は、イギリスのテレビ局 BBC が製作したコメディ番組『空飛ぶモンティ・パイソン』である。Pythonという英単語が意味する爬虫類のニシキヘビがPython言語のマスコットやアイコンとして使われている。 Pythonはインタプリタ上で実行することを前提に設計している。以下の特徴をもっている: 動的な型付け ガベージコレクション マルチパラダイム モジュール、クラス、オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。 Pythonの最初のバージョンはAmoeba上で開発された。のちに多くの計算機環境上で動作するようになった。 Windows, Windows CE（9x系およびNT系は最新版、Windows 3.1およびMS-DOSは旧版のみ） Macintosh（Classic Mac OSおよびmacOSともに） iOS Pythonista for iOS（omz:software） Android　Pydroid3 for Android (IIEC) 各種UNIX Linux（Linux Standard Base3.2で標準仕様となった） Plan 9（Python 3.xは未移植） PalmOS S60 Javaプラットフォーム (Jython) .NET Frameworkプラットフォーム (IronPython) Pythonには複数の実装が存在する。 CPython - 作者によってC言語で書かれたバージョン。通常「Python」といえばこのCPythonを指す。 Stackless Python - Cスタックを使わずに独自のスタック（Pythonスタック）で実装したもの。 Unladen Swallow - GoogleのチームによるPythonの実装 Jython - Java仮想マシン上に移植したもの。PythonからJavaのライブラリを使うことができる。 IronPython - .NET Framework/Monoで動作するPython。C#で実装されている。.NET Frameworkのライブラリを使うことができる。動的言語ランタイム上に構築されているため、既存の.NETアプリケーションへマクロ言語として搭載することも可能となっている。 PyPy - Python (RPython) によるPythonの実装 Psyco - CPython向けのJITコンパイラ PyMite - 組み込み向けの実装、AVRなどに対応。 tinypy - 同じく組み込み向けの実装。ソースコードが64KB未満と非常に軽量なことが謳われている。 Python のリリースは全てオープンソースであり、PSF (Python Software Foundationライセンス)として配布されている。これはGPL互換であるが、GPLと異なり、変更したバージョンを配布する際に変更をオープンソースにしなくてもよい。 元々はAmoebaの使用言語であるABC言語に例外処理やオブジェクト指向を対応させるために作られた言語である。 1991年にヴァンロッサムがPython 0.90のソースコードを公開した。この時点ですでにオブジェクト指向言語の特徴である継承、クラス、例外処理、メソッドやさらに抽象データ型である文字列、リストの概念を利用している。これはModula-3のモジュールを参考にしていた。 1994年1月、Python 1.0を公開した。主な特徴として関数型言語の基本であるラムダ計算を実装、map関数、reduce関数などを組み込んだ。 バージョン1.4ではCommon Lispにある機能とよく似たキーワード引数を導入した。また簡易ながら名前修飾を用いたカプセル化も実装した。 2000年に公開。ガベージコレクションやUnicode、リストを導入した。一躍メジャーな言語となった。多くの機能はHaskellを参考にして導入している。 2.6以降のバージョンには、2.xから3.xへの移植を助ける「2to3 ツール」と「lib2to3 モジュール」を含んでいる。2.xのサポートは2020年までとされている。 2008年、長い試験期間を経てPython 3.0が公開された。 開発初期には、西暦3000年に公開予定の理想のPythonとして、Python 3000と呼んでいた。Py3Kと略すこともある。 しかし2.xとの後方互換性が損なわれている。当初は2.xに比べて3.xが利用できるライブラリ等が著しく少ないという問題点があったが、Djangoなど徐々に3.xに対応したフレームワークやライブラリなどが増えていったこともあり、2016年時点においては新規のプロジェクトについて3.xで開発することが多くなっている[信頼性要検証]。 2015年11月にリリースされたFedora 23や2016年4月にリリースされたUbuntu 16.04 LTSでは、デフォルトでインストールされるPythonのバージョンが2.xから3.xに変更されている。 3.0 print命令をprint関数へ変更 Unicodeを全面採用 整数をint型に一本化 3.1 順序付き辞書 単体テストフレームワーク「unittest」への機能追加 TkinterでのTile対応 import文のリファレンス実装となる、Pythonで実装したimportlibモジュール ネストしたwith文に対する新たな文法 3.2 単体テストモジュールのアップデートや拡張モジュール向け stable ABI pyc レポジトリディレクトリのサポート E-mail パッケージや SSL モジュールの改善 pdb (Python debugger) の改良 3.3 3.1リリースから2年間、言語仕様を凍結し変更を行わない「モラトリアム期間」を解除した。 新しい文法として、ジェネレータ関数内で別のジェネレータ関数を利用する「yield from」を追加。 「u」や「U」といったプレフィックスを用いたUnicodeリテラルシンタックスを復活 UCS-4文字列にも対応し、文字列表現の柔軟性を強化 仮想化Python実行環境を導入するためのvirtualenvパッケージの機能を「venv」機能としてコアに取り込んだ。 3.4 オブジェクト指向ファイルシステムパスを提供する「pathlib」モジュールの提供 列挙型を扱うためのenumモジュールの標準化 統計関数を提供するstatisticsモジュールの導入 Pythonが割り当てたメモリブロックを追跡するためのデバッグツールのtracemallocモジュールの導入 非同期I/Oを扱うためのフレームワークとなるasyncioモジュールの導入 Pythonの組み込み関数に関する分析情報を得るため機構の実装 3.5 zipアプリケーションサポートの改良 byte/bytearrayオブジェクトのための「%」フォーマット対応の追加 行列乗算演算子@の導入 高速ディレクトリトラバーサル機能os.scandir()の導入 割込がかかったシステムコールのオートリトライ機能追加 近似値であるかどうかをテストする機能の導入 .pyoファイルの削除 拡張モジュールをロードするための新しい仕組みの導入 3.6 文字列中に式を埋め込める「Formatted string literals」の導入 変数に対して型に関する情報（型ヒント）を与える「Syntax for variable annotations」の導入 「async」および「await」文法でコルーチンを利用可能にする「Asynchronous generators」の導入 標準ライブラリにsecretsモジュールを追加 DTraceおよびSystemTapプローブのサポートを追加 3.7 使用時点では宣言されていない型を使った型アノーテーション表記が可能となる 1990年代始め - オランダにあるStichting Mathematisch Centrum (CWI)で、グイド・ヴァンロッサムによってPythonの初期バージョンが作成される。 1995年 - ヴァンロッサムは米国ヴァージニア州レストンにあるCorporation for National Research Initiatives (CNRI) に移動。ここでPythonの開発に携わり、いくつかのバージョンを公開する。 2000年3月 - ヴァンロッサムとPythonのコア開発チームは BeOpen.com に移り、BeOpen PythonLabs チームを結成する。同年10月、PythonLabsチームはDigital Creations (現在のZope Corporation) に移る。 2001年 - Pythonに関する知的財産を保有するための非営利組織Pythonソフトウェア財団 (PSF) が立ち上がる。このときZope CorporationはPSFの賛助会員となる。 ABC（インデントによる構文） Modula-2, -3（モジュール機能、オブジェクト指向） Icon（辞書、スライス演算子など） SETL（リストの内包表現） C, C++（基本的な構文） Smalltalk（仮想マシン機構、動的性） Lisp, Scheme（関数型言語の機能） Pythonには、読みやすく、それでいて効率もよいコードをなるべく簡単に書けるようにするという思想が浸透しており、Pythonコミュニティでも単純で短いコードをよしとする傾向が強い。 Pythonの本体は、ユーザがいつも必要とする最小限の機能のみを提供する。基本機能以外の専門機能や拡張プログラムはインターネット上にライブラリとして提供されており、別途ダウンロードして保存し、必要なツールはこのツールキットからその都度呼び出して使用する。 またPythonでは、Perlの「あることを行うのに1つ以上の方法がある」という哲学とは逆に、ある動作をさせる方法は、基本的に1通りしかないように作られている。そのためPythonのプログラムは、誰が書いてもだいたいどれも同じようなコードになり、作成者以外が見ても動作を把握しやすい。また、Pythonではプログラムの文書化（ソフトウェアドキュメンテーション）が重視されており、言語の基本機能の一部となっている。 インデント（「オフサイドルール」）が特徴的である。 以下に、階乗を題材にC言語と比較した例を示す。 Pythonのコード: def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) わかりやすく整形されたC言語のコード: int factorial(int x) { if (x == 0) { return 1; } else { return x * factorial(x - 1); } } この例では、Pythonと整形されたC言語とでは、プログラムコードの間に違いがほとんど見られない。しかし、C言語のインデントはルール（構文規則上のもの）ではなく、単なるコンベンション（コーディングスタイル）でしかない。そのためC言語では全く同じプログラムを以下のように書くこともできる。 わかりにくいC: int factorial(int x) { if(x == 0) {return 1;} else {return x * factorial(x - 1); } } Pythonではインデントは構文規則として決められているため、こうした書き方は不可能である。Pythonではこのような強制を課すことによって、プログラムのスタイルがその書き手にかかわらずほぼ統一したものになり、その結果読みやすくなるという考え方が取り入れられている。これについては賛否両論があり、批判的立場の人々からは、これはプログラマがスタイルを選ぶ自由を制限するものだ、という意見も出されている。 インデントによる整形は、単に「見かけ」だけではなく品質そのものにも関係する。例として次のコードを示す。 間違えたC: if (x > 10) x = 10; y = 0; このコードはC言語の構文規則上は問題無いが、インデントによる見かけのifの範囲と、言語仕様によるifの実際の範囲とが異なっているため、プログラマの意図が曖昧になる。この曖昧さは、検知しにくいバグを生む原因になる。 ソースコードを読む際、多くの人はインデントのような空白によって明確に整列されたコードを目安として読み、コンパイラのように構文解析しながらソースを読むものではない。その結果、一見しただけでは原因を見つけられないバグを作成する危険がある。 Pythonではインデントをルールとすることにより、人間が目視するソースコードの理解とコンパイラの構文解析の間の誤差を少なくすることで、より正確に意図した通りにコーディングすることができると主張されている。 Pythonのデータは動的に型付けされる。値自身が型を持っており、変数はすべて値への参照である。 基本的なデータ型として、整数型・多倍長整数型・浮動小数点数型・複素数型・文字列型・Unicode文字列型・論理型、そして関数型がある。多倍長整数型は（メモリの許す限り）無制限の桁数で整数計算が可能である。 さらに組み込みのコンテナ型として、リスト型、タプル型、辞書型（連想配列）のほか、値の重複を許さない集合型（Python 2.3以降）がある。 Python 3.x以降では、整数型が多倍長整数型と統合され、従来の文字列型とUnicode文字列型に代わり、バイト列型と文字列型が導入された。 リスト型および辞書型は内部の値をあとから変えられる（mutable、変更可能）が、タプル型は一度構築したら内部の値は変わらない（immutable、変更不能）。タプル型とリスト型は、多くのプログラミング言語では配列と呼ばれるものに類似している。しかし、Pythonではタプル型は辞書のキーとして使うことができるが、リスト型は内容が変わるため辞書のキーとして使うことはできないという理由から、これら2つの型を区別している。集合型には変更可能なものと変更不能なものの2種類がある。 多くのオブジェクト指向プログラミング言語と同様、Pythonではユーザが新しく自分の型を定義することも可能である。この場合、組み込み型を含む既存の型を継承して新たな型（クラス）を定義する事も、ゼロから全く新しい型を作り出す事も出来る。 Pythonは基本的にメソッドや関数の引数に型を指定する必要がないので、内部で必要とする演算子やメソッドに対応していれば、関数やオブジェクトの設計時点で意図していなかったオブジェクトを引き渡すことも可能である（いわゆるダック・タイピングが可能）。 Pythonはガベージコレクションを内蔵しており、参照されなくなったオブジェクトは自動的にメモリから破棄される。CPythonでは、ガベージコレクションの方式として参照カウント方式とマーク・アンド・スイープ方式を併用している。マーク・アンド・スイープ方式のみに頼っている言語では、オブジェクトがいつ回収されるか保証されないので、ファイルのクローズなどをデストラクタに任せることができない。CPythonは参照カウント方式を併用することで、循環参照が発生しない限り、オブジェクトはスコープアウトした時点で必ずデストラクトされることを保証している。なおJythonおよびIronPythonではマーク・アンド・スイープ方式を採用しているため、スコープアウトした時点で必ずデストラクトされることが前提のコードだとJythonやIronPythonでは正しく動かない。 イテレータを実装するためのジェネレータが言語仕様に組み込まれており、Pythonでは多くの場面でイテレータを使うように設計されている。イテレータの使用はPython全体に普及していて、プログラミングスタイルの統一性をもたらしている。 Pythonでは扱えるデータの全てがオブジェクトである。単純な数値といった基本的なデータ型をはじめ、組み込みのコンテナ型、組み込み関数など、これらは全て統一的な継承関係をもつオブジェクトであり「型」をもっている。これらの組み込み型とユーザ定義型は区別されず、組み込み型を継承したクラスを定義できる。上の「データ型」の項で述べたように Pythonは静的な型チェックを持たないため、Javaのようなインターフェイスという言語上の仕組みは必要とされない。 クラスの継承 (inheritance) メカニズムでは、複数の基底クラスを持つことができ（多重継承）、導出されたクラスでは基底クラスの任意のメソッドをオーバライド（override、上書き）することが可能である。 また、オブジェクトには任意のデータを入れることができる。これらのメソッドやデータは、基本的に、すべてpublicであり、virtual（仮想）である。ただし、先頭にアンダースコアをもつメンバをprivateとすることができる。これは単なるマナーであるが、アンダースコアを2つもつ場合は、クラスの外部からメンバの名前を隠された状態（mangle、難号化）とすることでカプセル化を実現できる。また、利用者定義演算子が機能として用意されておりほとんどの組み込み演算子（算術演算子（arithmetic operator）や添字表記）はクラスインスタンスで使うために再定義することが可能となっている。 Pythonには「電池が付属しています（"Battery Included"）」の思想があり、プログラマがすぐに使えるようなライブラリや統合環境をあらかじめディストリビューションに含めるようにしている。このため標準ライブラリは非常に充実している。 正規表現、OSのシステムコール XML処理系 シリアライゼーション HTTP、FTP等の各種通信プロトコル 電子メールやCSVファイルの処理 データベース接続 (SQLiteを標準で扱える) GUIフレームワーク (Tkinter) HTMLのパーサー Python自身のコードの構文解析ツール サードパーティによるライブラリも豊富に存在する。 行列演算パッケージの NumPy 画像処理のための Python Imaging Library SDLのラッパである Pygame プログラミング数学、科学、工学のための数値解析 SciPy スクレイピングライブラリ Beautiful Soup クローリング、スクレイピング用のpythonフレームワーク Scrapy 数式処理機能の SymPy グラフ表示ソフト Matplotlib データ解析ソフト pandas 離散事象シミュレーション SimPy 機械学習ライブラリ scikit-learn Pythonアプリのコンパイルによる高速化 Numba OpenCLへのインタフェース pyOpenCL OpenGLへのインタフェース pyOpenGL OpenCVへのインタフェース pyOpenCV CUDAへのインタフェース pyCUDA 3Dグラフィックスやアニメーション VPyyhon PyODE Cython Python(x,y) マイナーなものまで含めると多すぎて収拾がつかない。 Python Package Index (PyPI) と呼ぶ公式のパッケージリポジトリを導入した。 Pythonは当初1バイト単位での文字列型のみ扱い、かな漢字のようなマルチバイト文字をサポートしていなかったが、Python 2.0からUnicode文字型が新たに導入された。 Python 3.0では、文字列型がバイト列型に、Unicode文字列型が文字列型に変更された。従来は文字列の表現方法として2通り（旧文字列型と旧Unicode文字列型）があったが、これを1通り（新文字列型=旧Unicode型）に統一し、旧文字列型は単なるバイト列型として再定義された。これにより、Python 3.0で文字列を扱う際には後述の変換処理を必ず行う必要がある。ファイル入出力などエンコードを明示しなければ標準エンコードを用いて暗黙に行われる場合も多い。これにより多言語の扱いを一貫したものにしている。 Pythonでは文字のバイト列表現（エンコーディング）とUnicodeの内部表現を明確に区別している。Unicode文字はメモリ中に保持される抽象的なオブジェクトであり、画面表示やファイルへの入出力の際には変換ルーチン（コーデック）を介して特定のエンコーディングのバイト列表現と相互変換する。また、ソースコード中の文字コードを認識する機能があり、これによって異なる文字コードで書かれたプログラムの動きが異なるという危険を解消している。 Pythonでは変換ルーチンをモジュールとして追加することで、さまざまなエンコーディングに対応できるようになっている。日本語の文字コード (EUC-JP, Shift_JIS, MS932, ISO-2022-JP) に対応したコーデックも作成されている。Python 2.4からは、日中韓国語用のコーデックが標準でディストリビューションに含まれるようになったため、現在では日本語の処理に問題はほとんどなくなった。ただしGUIライブラリであるTkinterや統合開発環境のIDLEは、プラットフォームにもよるが、まだきちんと日本語に対応していないものもある。 ソースコードの文字コードは、ASCIIと互換性があり、Pythonが対応しているものを使用する。デフォルトエンコーディング以外の文字コードを使う場合は、ソースファイルの 1行目か 2行目に一定の書式でコメントとして記述することになっており、しばしば以下のようにEmacsやVimなどのテキストエディタにも認識可能な書式で記述される（次の例は Emacs が認識できる書式）。 #! /usr/bin/python # -*- coding: utf-8 -*- s = '日本語の文字列' Pythonはおもに欧米の企業でよく使われている。大企業ではマイクロソフトやアップルなどのパッケージソフトウェア企業をはじめ、Google、Yahoo!、YouTube などの企業も利用している。また携帯電話メーカーのノキアでは、S60シリーズでPythonアプリケーションが動く。研究機関では、NASAや日本の高エネルギー加速器研究機構でPythonが使われている。 適応範囲はWebプログラミング、GUIベースのアプリケーション、CAD、3Dモデリング、数式処理など幅広い分野に及ぶ。さらにスクリプト言語としての特性から、従来Perlやシェルスクリプトが用いられることの多かったシステム管理用のスクリプトとして採用しているOSも複数ある。また、多くの異なる言語で書かれたモジュールをまとめるグルー言語としての利用例も多い。実際、多くの商用アプリケーションで Python は組み込みのスクリプト言語として採用されている。 またNumPy、SciPyなどの高速な数値計算ライブラリの存在により、科学技術コンピューティングにもよく用いられる。NumPy、SciPyの内部はC言語で書かれている為に動的スクリプト言語の欠点の一つである速度の遅さを補っている。 Pythonは教育目的で設計されたわけではないが、単純さから子供が最初に学ぶ、プログラミング教育用の言語としても利用が増えている。グイド・ヴァンロッサムはPython設計以前に教育用言語であるABCの開発にかかわり、教育用としての利用について期待感を示したこともあり、方針として非技術者向けといった利用を視野に入れているとされることもある。 私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。それを考えてくれ――次の世代の話だね。-- スラッシュドット・ジャパン『 Guido van Rossum へのインタビュー』 iPhone / iPad http://applion.jp/iphone/word/python/ android http://applion.jp/android/word/python/?md=f Bottle（ボトル） - http://bottlepy.org/ CherryPy（チェリーパイ） - http://cherrypy.org/ Django（ジャンゴ） - https://www.djangoproject.com/ Flask（フラスク） - http://flask.pocoo.org/ Pyramid（ピラミッド） - http://www.pylonsproject.org/projects/pyramid/ Plone（プローン） - http://plone.org/ Tornado (Webサーバ)（トルネード） - https://sites.google.com/site/tornadowebja/ Cyclone（1万同時アクセス対応)（サイクロン） - http://cyclone.io/ ^ Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. p. 3. ISBN 978-1-59059-881-8.  ^ Mark Summerfield. Rapid GUI Programming with Python and Qt. "Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java"  ^ “Code Complete, p. 100”. 2013年3月4日閲覧。 ^ Windows(MS)にPython(Anaconda)を導入する（6つの罠） https://qiita.com/kaizen_nagoya/items/7bfd7ecdc4e8edcbd679 ^ “Why was Python created in the first place?”. General Python FAQ. Python Software Foundation. 2007年3月22日閲覧。 ^ “Python 2 から Python 3 への移植”. Python Software Foundation. 2014年3月13日閲覧。 ^ 江添亮 (2014年4月14日). “Python 2.7のサポート期間が2020年まで延長”. Blogger.. 2016年9月21日閲覧。 ^ a b “Python Documentation by Version”. Python Software Foundation. 2014年3月20日閲覧。 ^ 佐野裕史. “【入門者必見】Python2と3、どっちを学習すべき？違いを徹底解説！”. 株式会社 侍. 2016年9月21日閲覧。 ^ “【Changes/Python 3 as Default”. Fedora Project. 2016年9月21日閲覧。 ^ kuromabo. “Ja”. Ubuntu.com. 2016年9月21日閲覧。 ^ “登場! Python 3.0 - 2系との違いを比較”. マイナビ (2009年1月1日). 2014年3月13日閲覧。 ^ “「Python 3.1」正式版リリース”. OSDN Corporation (2009年7月1日). 2014年3月13日閲覧。 ^ “Python 3.1リリース”. OSDN Corporation (2009年6月30日). 2014年3月13日閲覧。 ^ “Python 3.2リリース”. OSDN Corporation (2011年2月22日). 2014年3月13日閲覧。 ^ 末岡洋子 (2012年10月1日). “仕様変更凍結が解除され新機能が追加された「Python 3.3」、ついにリリース”. SourceForge.JP. 2014年3月13日閲覧。 ^ 後藤大地 (2014年3月18日). “Python 3.4登場”. マイナビニュース. 2014年3月20日閲覧。 ^ 末岡洋子 (2014年3月18日). “「Python 3.4」リリース、標準ライブラリを強化”. SourceForge.JP. 2014年3月20日閲覧。 ^ 後藤大地 (2015年9月13日). “Python 3.5.0登場”. マイナビニュース. 2015年11月5日閲覧。 ^ “「Python 3.5」正式版がリリース – 新機能が多数追加”. ソフトアンテナブログ (2015年9月14日). 2015年11月5日閲覧。 ^ 末岡洋子 (2016年12月26日). “「Python 3.6」がリリース”. OSDN. 2017年5月26日閲覧。 ^ 末岡洋子 (2018年6月29日). “「Python 3.7」リリース、型アノーテーションの強化などさまざまな機能が追加される”. OSDN. 2018年7月11日閲覧。 ^ Peters, Tim (2004年8月19日). “PEP 20 – The Zen of Python”. Python Enhancement Proposals. Python Software Foundation. 2008年11月24日閲覧。 ^ “About Python”. Python Software Foundation. 2012年4月24日閲覧。, second section "Fans of Python use the phrase "batteries included" to describe the standard library, which covers everything from asynchronous processing to zip files." ^ TIMTOWTDI。there's more than one way to do it ^ Lemburg, Marc-André (2000年3月10日). “PEP 100 -- Python Unicode Integration”. Python Enhancement Proposals. Python Software Foundation. 2014年2月12日閲覧。 ^ What’s New in Python 2.4 ^ デフォルトのデフォルトエンコーディングは、Python3.xではUTF-8、Python2.xではASCIIである。 ^ “PEP 0263 -- Defining Python Source Code Encodings”. Python Enhancement Proposals. Python Software Foundation (2001年6月6日). 2014年2月12日閲覧。 ^ a b “Quotes about Python”. 2007年1月15日閲覧。 ^ “Python for S60”. 2007年1月17日閲覧。 ^ “KEKB: An Asymmetric Electron-Positron Collider for B-Factory in KEK”. 2007年1月17日閲覧。 ^ “Python for Scientists and Engineers”. 2015年8月9日閲覧。 ^ http://www.rakunet.org/tsnet/TSpython/35/1067.html ^ “EDU-SIG: Python in Education”. 2011年5月16日閲覧。 IPython - Pythonのスニペットを実行できるノートパッド MyHDL - Python言語ベースのハードウェア記述言語 Anaconda (Pythonディストリビューション) スクリプト言語 オブジェクト指向プログラミング Python公式サイト （英語） 日本Pythonユーザ会 - マニュアル日本語訳の配布 Allen Downey、相川利樹(訳):「Think Python：コンピュータサイエンティストのように考えてみよう」