


プログラミング言語Python は1980 年代後半に構想され[ 1 ] 、1989 年 12 月にオランダのCWIでGuido van Rossumによって実装が開始されました[ 2 ]。これは、例外処理が可能でAmoeba オペレーティングシステムとインターフェースできるABCの後継として開発されました[ 3 ]。Van Rossum は Python の主要な開発者であり、2018 年 7 月 12 日にリーダーを辞任するまで、Python の方向性を決定する上で中心的な役割を果たしました (Python コミュニティから彼に与えられた称号、終身慈悲深い独裁者(BDFL) [ 4 ] [ 5 ]にも反映されています)。[ 6 ] Python という名前は、BBC のテレビ番組「モンティ・パイソンの空飛ぶサーカス」にちなんで付けられました[ 7 ]。
Python 2.0は2000年10月16日にリリースされ、リスト内包表記、サイクル検出ガベージコレクタ、参照カウント、メモリ管理、 Unicodeのサポートなど多くの主要な新機能が追加され、開発プロセス自体もより透明でコミュニティ主導のプロセスへと変更されました。[ 8 ]
Python 3.0 は、長期間のテストを経て、2008 年 12 月 3 日にリリースされたメジャーな後方互換性のないリリースです[ 9 ] 。その主要な機能の多くは、 2020 年初頭に Python 2 のサポートが終了するまで、後方互換性のある Python バージョン 2.6 および 2.7 [ 10 ]にもバックポートされました。Python 3 の 3.12 までのリリースには、Python 2 コードを Python 3に自動的に変換するユーティリティが含まれています[ 11 ]。 2to3
2026年6月現在Python 3.14.6は最新の安定版リリースです。このバージョンは現在、完全なバグ修正とセキュリティアップデートを受けていますが、2024 年 10 月にリリースされた Python 3.13 は、2026 年 10 月までバグ修正を受け続け、その後は 2029 年の支援終了までセキュリティ修正のみを受けます。Python 3.10 は、サポートされている Python の最も古いブランチです (ただし、「セキュリティ サポート」フェーズにあります)。[ 12 ] [ 13 ]
ヴァン・ロッサムは、1991 年 2 月に alt.sources に (Python バージョン 0.9.1 用の) コードを初めて公開しました。[ 14 ] [ 15 ]この段階ですでに言語のいくつかの機能が存在しており、その中には継承を持つクラス、例外処理、関数、および 、 、 などのさまざまなコアデータ型が含まれていました。最初のリリースには、Modula-3から借用したモジュール システムも含まれていました。ヴァン・ロッサムは、モジュールを「Python の主要なプログラミング ユニットの 1 つ」と説明しています。[ 1 ] Python の例外モデルも Modula-3 のものに似ており、句が追加されています。[ 3 ] 1994 年に、Python の主要なディスカッション フォーラムであるcomp.lang.python が設立されました。[ 1 ]listdictstrelse
Pythonは1994年1月にバージョン1.0に到達しました。このリリースに含まれる主な新機能は、関数型プログラミングツールでlambdaあるlambda、reduce()、filter()、map()でした。Van Rossumはmap、 「Pythonは、これらの機能を見落としていたLispハッカーが動作するパッチを提出したおかげで、lambda、reduce()、filter()、map()を獲得した」と述べています。[ 16 ]filterreduce
ヴァン・ロッサムがCWIに在籍中にリリースした最後のバージョンはPython 1.2だった。1995年、ヴァン・ロッサムはバージニア州レストンの国立研究イニシアチブ公社(CNRI)でPythonの開発を続け、そこからいくつかのバージョンをリリースした。
Pythonはバージョン1.4までにいくつかの新機能を獲得した。中でも注目すべきは、Modula-3にインスパイアされたキーワード引数( Common Lispのキーワード引数にも似ている)と複素数の組み込みサポートである。また、名前マングリングによる基本的なデータ隠蔽機能も含まれているが、これは簡単に回避できる。[ 17 ]
ヴァン・ロッサムはCNRI在籍中に、プログラミングをより多くの人々に身近なものにするため、プログラミング言語の基本的な「リテラシー」を、ほとんどの雇用主が求める基本的な英語の読み書き能力や数学のスキルと同様に提供することを目的とした「Computer Programming for Everybody (CP4E)」イニシアチブを立ち上げた。Pythonはこのイニシアチブにおいて中心的な役割を果たした。簡潔な構文に重点を置いているため既に適しており、CP4Eの目標は前身であるABCと類似していたからである。このプロジェクトはDARPAの資金提供を受けた。[ 18 ] 2007年現在CP4Eプロジェクトは活動しておらず、Pythonは習得しやすく、構文や意味論が難解すぎないように努めているものの、プログラマー以外の人への普及は積極的に関心事ではない。[ 19 ]
2000年、Pythonコア開発チームはBeOpen.com [ 20 ]に移り、BeOpen PythonLabsチームを結成した[ 21 ] [ 22 ] 。CNRIは、開発チームがCNRIを離れるまでのPythonの開発をまとめたバージョン1.6のリリースを要求した。その結果、1.6と2.0のリリーススケジュールにはかなりの重複があった[ 8 ]。Python 2.0はBeOpen.comからの唯一のリリースだった。BeOpen.comがPython 2.0をリリースした後、Guido van Rossumと他のPythonLabs開発者はDigital Creationsに加わった。
Python 1.6 リリースには、以前のリリースで使用されていた CWI ライセンスよりも大幅に長い新しい CNRI ライセンスが含まれていました。新しいライセンスには、ライセンスがバージニア州の法律に準拠するという条項が含まれていました。フリーソフトウェア財団は、この準拠法条項がGNU 一般公衆ライセンスと互換性がないと主張しました。BeOpen、CNRI、および FSF は、Python のフリーソフトウェアライセンスをGPL 互換に変更する交渉を行いました。Python 1.6.1 は、いくつかのマイナーなバグ修正と新しい GPL 互換ライセンスを除けば、基本的に Python 1.6 と同じです。[ 23 ]
2000 年 10 月にリリースされた Python 2.0 [ 8 ]では、関数型プログラミング言語のSETLとHaskellから借用したリスト内包表記が導入されました。この構文の Python の構文は、Haskell の句読点文字の使用と Python のアルファベットキーワードの使用という点を除けば、Haskell の構文と非常によく似ています。Python 2.0 では、参照サイクルを収集できるガベージコレクタも導入されました。[ 8 ]
Python 2.1 は Python 1.6.1 や Python 2.0 とほぼ同じでした。ライセンスはPython Software Foundation Licenseに改名されました。Python 2.1 のアルファ版リリース以降に追加されたすべてのコード、ドキュメント、仕様は、Apache Software Foundationをモデルとして 2001 年に設立された非営利団体であるPython Software Foundation (PSF)が所有しています。[ 23 ]このリリースには、他の静的スコープ言語と同様にネストされたスコープをサポートするために言語仕様が変更されました。 [ 24 ] (この機能はデフォルトでは無効になっており、Python 2.2 までは必須ではありませんでした。)
Python 2.2 は 2001 年 12 月にリリースされました。[ 25 ]大きな革新は、Python の型 ( Cで記述された型) とクラス (Python で記述された型) を 1 つの階層に統合したことでした。この単一の統合により、Python のオブジェクト モデルは純粋かつ一貫したオブジェクト指向になりました。[ 26 ]また、Iconに触発されたジェネレータも追加されました。[ 27 ]
Python 2.5 は 2006 年 9 月にリリースされ[ 28 ]、withコード ブロックをコンテキストマネージャで囲むステートメントが導入されました (例えば、コード ブロックの実行前にロックを取得し、実行後にロックを解放したり、ファイルを開いてから閉じたり)。これにより、リソース取得は初期化(RAII) のような動作が可能になり、一般的な try/finally イディオムが置き換えられました。[ 29 ]
Python 2.6 は Python 3.0 と同時にリリースされ、そのリリースの一部の機能と、Python 3.0 で削除された機能の使用を強調表示する「警告」モードが含まれていました。[ 30 ] [ 10 ]同様に、Python 2.7 は Python 3.1 と同時にリリースされ、その機能が含まれていました。[ 31 ] Python 3.1は 2009 年 6 月 26 日にリリースされました。その後、並行して 2.x と 3.x のリリースは終了し、Python 2.7 は 2.x シリーズの最後のリリースとなりました。[ 32 ] 2014 年 11 月には、Python 2.7 は 2020 年までサポートされることが発表されましたが、ユーザーはできるだけ早く Python 3 に移行することが推奨されました。[ 33 ] Python 2.7 のサポートは、 2.7 開発ブランチのコード凍結とともに、2020 年 1 月 1 日に終了しました。最終リリースである2.7.18は2020年4月20日にリリースされ、重大なバグやリリースを阻害するバグの修正が含まれていました。[ 34 ]これにより、Python 2のサポートが終了しました。 [ 35 ]
Python 3.0(「Python 3000」または「Py3K」とも呼ばれる)は、2008 年 12 月 3 日にリリースされました。[ 9 ]これは、言語の根本的な設計上の欠陥を修正するために設計されました。必要な変更は、2.x シリーズとの完全な後方互換性を維持しながら実装することはできなかったため、新しいメジャー バージョン番号が必要になりました。Python 3 の基本原則は、「古いやり方をなくすことで機能の重複を減らす」ことでした。[ 36 ]
Python 3.0は、以前のバージョンと同じ理念に基づいて開発されました。しかし、Pythonでは同じタスクを実行するための新しい冗長な方法が蓄積されていたため、Python 3.0では、Pythonの禅の精神である「物事を行うには、明白な方法が一つ、できれば一つだけあるべきだ」に沿って、重複する構造やモジュールの削除に重点が置かれました。
とはいえ、Python 3.0は依然としてマルチパラダイム言語であった。プログラマーはオブジェクト指向、構造化プログラミング、関数型プログラミングなど、様々なプログラミングパラダイムに従うことができたが、こうした幅広い選択肢の中で、Python 3.0ではPython 2.xよりも詳細がより明確になるように意図されていた。
Python 3.0 は後方互換性を破壊し、多くの Python 2 コードは Python 3 上で修正なしでは実行できません。[ 37 ] Python の動的型付けと、たとえば辞書の特定のメソッドのセマンティクスを変更する計画が組み合わさって、Python 2.x から Python 3.0 への完全な機械的翻訳は非常に困難になりました。「」と呼ばれるツールは、2to3自動的に実行できる翻訳の部分を実行します。この時点では、は2to3かなり成功しているように見えましたが、初期のレビューでは、そのようなツールでは決して処理できない翻訳の側面があることが指摘されていました。[ 38 ] Python 3 の展開前には、2.x シリーズと 3.x シリーズの両方との互換性を必要とするプロジェクトは、1 つのソース (2.x シリーズ用) を持ち、を使用して Python 3.x プラットフォーム用のリリースを作成することが推奨されていました2to3。コードが Python 2.x 上で実行する必要がある限り、Python 3.x コードへの編集は推奨されませんでした。[ 10 ] これはもはや推奨されていません。 2012年時点では、互換性モジュールを使用してPython 2と3の両方で実行できる単一のコードベースを作成するのが好ましいアプローチでした。[ 39 ]
Python 3.0で含まれた主な変更点は以下のとおりです。
print変更し、ステートメントではなくなりました。これにより、モジュールを別の print 関数を使用するように変更することが容易になり、構文もより規則的になりました。Python 2.6 および 2.7 では組み込み関数として使用できますが、print ステートメント構文によって隠蔽されています。これは、ファイルの先頭に[ 40 ]と入力することで無効にできます。print()from__future__importprint_functioninput関数が削除され、関数名raw_inputが に変更されましたinput。Python 3 の関数は、入力が式として評価されるのではなく常に文字列として返されるという点で、inputPython 2 の関数と同様の動作をします。raw_inputreduce(ただし、mapやではない) を移動し、 (その根拠は、を使用するコードはfor ループとアキュムレータ変数を使用するコードよりも読みにくいというものである) [ 41 ] [ 42 ]filterfunctoolsreducestrと のunicode型を に統合しstr、テキストを表す と、別の不変bytes型 と、それとほぼ対応する可変型を導入します。bytearrayどちらもバイト配列を表します[ 44 ]5/2 is 2; whereas in Python 3, 5/2 is 2.5. (In both Python 2 –2.2 onwards –and Python 3, a separate operator exists to provide the old behavior: 5//2 is 2)smörgåsbordint and long into one integer type: int. Python 2 int limits integers between -2147483648 and 2147483647 inclusive. Any integers outside or inside this range have an L or l suffix such as -100000000000000L, 0l[46]Python 3.2 defined a stable ABI, allowing extension modules to rely on functions across different Python versions.
Python 3.5 added the typing module, which allows for type hints and function signature annotation. It additionally added the async/await syntax. Furthermore, .pyo files were removed, with .pyc files representing both unoptimized and optimized bytecode.
Python 3.6 followed with async generators and async comprehensions (for lists as well as dicts and sets), as well as formatted string literals (f-strings).[47]
Python 3.10 introduced structural pattern matching via match/case statements. Additionally it provided improved error messages which "were inspired by previous work in the PyPy interpreter" and added the |union type operator.[48]
Python 3.11 expanded exception handling functionality. Around this version, there has been a focus on making Python faster; 3.11 is claimed to be 10–60% faster than 3.10,[49] and 3.12 increases by an additional 5%.
Python 3.12 added the new keyword type and improved error messages.
Python 3.13 では、実験的なジャストインタイム (JIT) コンパイラ、グローバル インタプリタ ロックを無効にする機能、新しく改良された対話型インタプリタ ( REPL )、およびインクリメンタルガベージ コレクタが追加されました。[ 50 ] Python 3.13 以降、およびそれ以降のバージョンは、2 年間の完全サポート (1 年半から増加) を受け、その後 3 年間のセキュリティ サポートが続きます。これは、以前と同じサポート期間です。
Python 3.14では、オプトイン機能として新しい末尾呼び出しインタープリタが導入され、3~5%のパフォーマンス向上を実現しました。[ 51 ]
Python 3.15 では「UTF-8モードがデフォルトになります」[ 52 ]。このモードは現在のすべての Python バージョンでサポートされていますが、現時点ではオプトインする必要があります。UTF-8 は、ほとんどの用途でWindows (およびその他のオペレーティングシステム) ですでにデフォルトで使用されていますが、例外はファイルを開くことです。UTF-8 を有効にすると、コードが完全にクロスプラットフォームになります。
セキュリティアップデートは2021年に迅速化され、2022年にも2回迅速化されました。2023年と2024年9月(Pythonバージョン3.8.20~3.12.6)にはさらに多くの問題が修正されました。すべてのバージョン(2.7を含む)[ 53 ]は、リモートコード実行の可能性[ 54 ]やウェブキャッシュポイズニング[ 55 ]につながる問題のため、安全ではありませんでした。
番号付きバージョン以前のリリース:
表の注記:
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)2.6がPython 3.0の機能を取り入れたのと同様に、バージョン2.7はPython 3.1の新機能の一部を取り入れています。2.xシリーズは、3.xシリーズへの移行のためのツールを提供し続けています。