Pythonは 高水準 の汎用プログラミング言語 です。その設計理念は、大きなインデント を用いることでコードの可読性を 重視しています。[ 34 ] Pythonは動的型チェック とガベージコレクションを備えています。 構造化 プログラミング(特に手続き型 プログラミング)、オブジェクト指向 プログラミング、関数型プログラミング など、複数のプログラミングパラダイム をサポートしています。
Guido van Rossum は 1980年代後半にABC プログラミング言語の後継として Python の開発を始めました。2008年にリリースされた Python 3.0 はメジャーリビジョンであり、以前のバージョンとの下位互換性 が完全には保たれていませんでした。Python 3.5 以降、[ 35 ] 型付けの機能とキーワードが言語に追加され、オプションで静的型付け が可能になりました。[ 36 ] 2026年現在、Python Software Foundation はプロジェクトの年間リリースサイクルと5年間のサポートポリシーに従い、Python 3.10、3.11、3.12、3.13、3.14 をサポートしています。3.x シリーズの以前のバージョンはサポート終了となり、セキュリティアップデートは提供されなくなりました。
Pythonは機械学習 コミュニティで広く使用されています。[ 37 ] [ 38 ] [ 39 ] [ 40 ] 入門プログラミング言語として広く教えられています。[ 41 ] 2003年以来、Pythonは24のプラットフォームでの検索に基づいてランク付けされたTIOBEプログラミングコミュニティインデックス で最も人気のあるプログラミング言語のトップ10に一貫してランクインしています。[ 42 ]
歴史 Pythonの設計者、Guido van Rossum氏、 PyCon US 2024にて Pythonは1980年代後半にオランダの Centrum Wiskunde & Informatica (CWI)のGuido van Rossum によって考案されました。[ 43 ] これはSETL に触発されたABC プログラミング言語の後継として設計され、[ 45 ] 例外処理 とAmoeba オペレーティングシステムと の インターフェイスが可能でした。 [ 13 ] Python の実装は1989年12月に始まりました。[ 44 ] Van Rossumは1991年にPython 0.9.0として初めてリリースしました。[ 44 ] Van Rossumは2018年7月12日にPythonの「善意の終身独裁者 」(BDFL)としての職務から「永久休暇」することを発表するまで、主任開発者としてプロジェクトの単独責任者でした。この称号は、プロジェクトの最高意思決定者としての彼の長期にわたる関与を反映して、Pythonコミュニティから彼に贈られました。[ 46 ] (その後彼は引退から復帰し、「BDFL名誉会員」を名乗っている。)2019年1月、Pythonのコア開発者たちは、プロジェクトを率いる5人のメンバーからなる運営委員会を選出した。[ 47 ] [ 48 ]
Python という名前はイギリスのコメディシリーズ『空飛ぶモンティ・パイソン』 に由来しています。[ 49 ] (§ 命名を 参照)。
Python 2.0は2000年10月16日にリリースされ、リスト内包表記 、循環参照 ガベージコレクション、参照カウント 、Unicode サポートなど、多くの新機能を搭載していました。[ 50 ] Python 2.7のサポート終了は 当初2015年に予定されていましたが、既存のコードの大部分をPython 3に容易に移植できないという懸念から、2020年に延期されました。[ 51 ] [ 52 ] セキュリティパッチやアップデートは提供されなくなりました。[ 53 ] [ 54 ] Python 2.7以前のバージョンは公式にはサポートされていませんが、別の非公式Python実装であるPyPy はPython 2、つまり「2.7.18+」(プラス3.11)を引き続きサポートしており、プラスは(少なくとも一部)「バックポートされた セキュリティアップデート」を意味します。[ 55 ]
Python 3.0は2008年12月3日にリリースされましたが、これはメジャーリビジョンであり、いくつかの新しいセマンティクスと変更された構文が含まれており、以前のバージョンとの完全な下位互換性はあり ません。2020年にリリースされたPython 2.7.18は、Python 2の最後のリリースでした。[ 56 ] Python 3.xシリーズのいくつかのリリースでは、言語に新しい構文が追加され、いくつかの(非常に小さな)下位互換性のない変更が行われました。
2026年1月現在、Python 3.14.2が最新の安定リリースです。以前の3.xバージョンはすべて、Python 3.9.24までセキュリティアップデートが行われ、その後、3.9シリーズの最終バージョンである3.9.25までアップデートされました。Python 3.10は、2025年11月以降、最も古いサポート対象ブランチです。[ 57 ] Python 3.15はアルファ版がリリースされており、AndroidではPython 3.14の公式ダウンロード可能ファイルが提供されています。リリースには2年間の完全サポートと、その後3年間のセキュリティサポートが提供されます。
設計哲学と特徴 Pythonはマルチパラダイムプログラミング言語 です。オブジェクト指向プログラミングと構造化プログラミングが完全にサポートされており、その機能の多くは関数型プログラミングとアスペクト指向プログラミング (メタプログラミング [ 58 ] とメタオブジェクト [ 59 ] を含む)をサポートしています。他の多くのパラダイムは、契約による設計 [ 60 ] [ 61 ] や論理プログラミング [ 62 ] など、拡張機能によってサポートされています。Pythonは、他の言語で書かれたコンポーネントを統合できるように意図的に設計されているため、 「グルー言語」 [ 63 ] と呼ばれることがよくあります。
Pythonはメモリ管理のために動的型付けと 参照カウント と循環検出ガベージコレクターの組み合わせを使用します。[ 64 ] プログラム実行中にメソッド名と変数名をバインドする動的な名前解決 (遅延バインディング )を使用します。
Pythonの設計は、「 Lispの 伝統」に基づく関数型プログラミングをある程度サポートしています。関数filter、関数map、関数リスト内包表記 、辞書 、関数集合 、そしてジェネレータ 式を備えています。[ 65 ] 標準ライブラリには、Haskell とStandard ML から借用した関数型ツールを実装した2つのモジュール(と)があります。[ 66 ] reduceitertoolsfunctools
Pythonの核となる哲学は、ティム・ピーターズが書いた Zen of Python (PEP 20)に要約されており、次のような格言が含まれています。[ 67 ]
明示的なものは暗黙的なものよりも優れています。 複雑なものよりシンプルなもののほうが良い。 読みやすさが重要です。 特別なケースは、ルールを破るほど特別ではありません。 実用性は純粋さに勝りますが、明示的に沈黙させない限り、エラーは決して黙って放置されるべきではありません。 それを実行する明白な方法が 1 つ (できれば 1 つだけ) 必要です。 しかし、Pythonはこれらの原則に違反し、不必要な言語の肥大化を引き起こしているとして批判を受けています。[ 68 ] これらの批判に対する回答では、Pythonの禅はルールではなくガイドラインであると指摘されています。[ 69 ] いくつかの新機能の追加は物議を醸しました。Guido van RossumはPython 3.8で代入式演算子を追加することについての対立の後、終身慈悲深い独裁者を辞任しました 。 [ 70 ] [ 71 ]
しかしながら、Pythonはすべての機能をコアに組み込むのではなく、モジュールを介して高度に拡張できる ように設計されました。このコンパクトなモジュール性により、Pythonは既存のアプリケーションにプログラム可能なインターフェースを追加する手段として特に人気を博しました。ヴァン・ロッサムが構想した、大規模な標準ライブラリと容易に拡張可能なインタプリタを備えた、小さなコア言語という構想は、正反対のアプローチをとったABCに対する彼の不満から生まれたものでした。[ 43 ]
Pythonは、開発者にコーディング手法の選択肢を与えながら、よりシンプルで簡潔な構文と文法を目指していると主張しています。Pythonにはdo whileループがありませんが、Rossum氏は これを有害だと考えていました。[ 72 ] Perl のモットーである「複数の方法がある 」とは対照的に、Pythonは「1つの、できれば1つだけの、明白な方法があるべき」というアプローチを提唱しています。[ 67 ] しかし実際には、Pythonは特定の目的を達成するための多くの方法を提供しています。文字列リテラルをフォーマットする方法は少なくとも3つありますが、プログラマーがどれを使うべきかは明確ではありません。[ 73 ] Alex Martelliは Pythonソフトウェア財団 のフェローで あり、Pythonに関する書籍の著者でもあります。彼は「何かを『賢い』と表現することは、Python文化では褒め言葉とはみなされない」と書いています。 [ 74 ]
Pythonの開発者は、一般的にパフォーマンスよりも読みやすさを優先します。例えば、CPython リファレンス実装の重要でない部分へのパッチは、速度向上をもたらすものの、明瞭さと読みやすさのコストに見合わないため、拒否されます。[ 75 ] 実行速度は、速度が重要な関数をC などの言語で書かれた拡張モジュールに移動するか、PyPy のようなジャストインタイムコンパイラを使用することで向上できます。また、他の言語にトランスパイルすることも可能です。しかし、このアプローチでは、Pythonは非常に 動的な言語 であるため、期待される速度向上が達成されないか、Pythonの限定されたサブセットのみがコンパイルされます(ただし、意味がわずかに変更される可能性があります)。[ 76 ]
Pythonは楽しく使える言語を目指しています。この目標は、イギリスのコメディグループ「モンティ・パイソン」 [ 77 ] にちなんで名付けられたPythonの名前や、チュートリアルや参考資料への遊び心のあるアプローチに反映されています。例えば、一部のコード例では、一般的な「foo」や「bar」といった用語ではなく、 「spam」や「eggs」(モンティ・パイソンのスケッチ にちなむ)といった用語が使用されています 。[ 78 ] [ 79 ]
Pythonコミュニティでよく使われる新語は pythonic で、プログラムスタイルに関連した幅広い意味を持っています。PythonicコードはPythonのイディオムを うまく使用したり、自然であったり言語に堪能であったり、Pythonのミニマリスト哲学や読みやすさの重視に準拠している可能性があります。[ 80 ]
構文と意味論 Pythonは読みやすい言語を目指しています。書式設定は視覚的に整然としており、他の言語では句読点が使われるところを英語のキーワードで表現することがよくあります。他の多くの言語とは異なり、ブロックを区切るのに中括弧は使用せず、文の後にセミコロンを置くことは可能ですが、ほとんど使用されません。C 言語 やPascal に比べて、構文上の例外や特殊なケースは少ないです。[ 81 ]
インデント Pythonは、ブロックを 区切るために、中括弧やキーワードではなく、空白による インデントを使用します。インデントの増加は特定の文の後に発生し、インデントの減少は現在のブロックの終了を示します。[ 82 ] このように、プログラムの視覚的な構造は、その意味的な構造を正確に表します。[ 83 ] この機能は、オフサイドルール と呼ばれることもあります。他の言語でも同様にインデントを使用していますが、ほとんどの場合、インデントには意味的な意味はありません。推奨されるインデントサイズは4スペースです。[ 84 ]
ステートメントと制御フロー Python のステートメント には次のものが含まれます。
単一の等号を使用した代入 文= 文if は、条件付きでコードブロックを実行し、else およびelif( の短縮形else if )とともに実行されます。 反復可能な for オブジェクトを反復処理し、各要素を変数にキャプチャして、接続されたブロックで使用できるようにするステートメント。ループが終了しても変数は削除されません。while ブール条件が真である限りコードブロックを実行するステートメントこのtry 文は、そのコードブロック内で発生した例外を、except節(またはexcept*例外グループ用のPython 3.11の新しい構文)でキャッチして処理することを可能にする。[ 85 ] また、この文は、ブロックの終了方法に関係なく、ブロックtry内のクリーンアップコードが常に実行されることを保証する。finally raise指定された例外を発生させたり、キャッチされた例外を再発生させるために使用されるステートメントオブジェクト指向プログラミングで使用するために、classコードブロックを実行し、そのローカル名前空間をクラス にアタッチするステートメント 関数 またはメソッド defを定義するステートメント文with はコンテキストマネージャ内でコードブロックを囲むことで、リソース取得初期化 (RAII)のような動作を可能にし、一般的なtry/finallyイディオムを置き換えます[ 86 ] コンテキストの例としては、コードを実行する前にロック を取得し、その後ロックを解除することや、ファイルを開いて閉じることなどが挙げられます。 break ループを終了する文このcontinue文は、現在の反復の残りをスキップし、次の反復を続行します。 変数を削除する文del(名前から値への参照を削除し、変数が再定義される前に参照された場合はエラーを生成する) [ c ] NOP pass (つまり、何も操作しない)として機能するステートメント。これは、構文上、空のコードブロックを作成するために必要です。assert 適用すべき条件をチェックするためにデバッグで使用されるステートメントジェネレータ 関数(および演算子)yieldから値を返すステートメント。コルーチンを実装するために使用されます。 return関数から値を返すために使用されるステートメントおよびステートメントは、現在のプログラムで使用できる関数または変数を持つモジュールをインポートするために使用されますimport 。from and文はswitch文の 構造に似ており、制御フローの尺度として式を1つ以上のケースと比較しますmatch。case 代入文(=)は、名前を動的に割り当てられた別のオブジェクトへの 参照 として束縛します。変数はその後いつでも任意のオブジェクトに再束縛できます。Pythonでは、変数名は固定のデータ型を 持たない汎用的な参照ホルダーですが、常に型を持つオブジェクトを参照します。これは動的型付けと呼ばれ、 各変数 が特定の型の値のみを保持できる 静的型付け 言語とは対照的です。
Pythonは末尾呼び出し 最適化や第一級継続を サポートしていない。Van Rossumによれば、この言語は今後もサポートしないだろう。[ 87 ] [ 88 ] しかし、コルーチン のような機能に対するより良いサポートは、Pythonのジェネレータを拡張することで提供される。[ 89 ] 2.5より前のバージョンでは、ジェネレータは遅延 イテレータ であり、データはジェネレータから一方向に渡されていた。Python 2.5以降では、データをジェネレータ関数に返すことが可能になり、バージョン3.3以降では、データを複数のスタックレベルを介して渡すことができる。[ 90 ]
表現 Python の式に は次のようなものがあります。
数学的な加算、減算、乗算を行う 、、演算子は他の言語と似ていますが、除算の動作は異なります。Pythonには+、切り捨て除算 (または整数除算)と浮動小数点除算の2種類の除算があります。[ 91 ] Pythonでは、指数演算に 演算子を使用します。-*///** Pythonでは、+文字列の連結に演算子を使用します。また、*文字列を指定された回数だけ複製するためにも演算子を使用します。 中置演算子はNumPy @などのライブラリで行列の乗算 に使用することを目的としています。[ 92 ] [ 93 ] 「:=セイウチ演算子 はPython 3.8で導入されました。この演算子は、より大きな式の一部として変数に値を代入します。 [ 94 ] Pythonでは、==2つのオブジェクトを値で比較します。Pythonのis演算子は、オブジェクトの同一性を比較するために使用できます(つまり、参照による比較)。また、比較は連鎖的に実行できます(例:)。a <= b <= c Python ではand、、orをnotブール演算子として使用します。 Pythonにはリスト内包表記 と呼ばれる式と、ジェネレータ式 と呼ばれるより一般的な式があります。[ 65 ] 匿名関数は ラムダ式 を使用して実装されます。ただし、各本体には 1 つの式しか含めることができません。条件式は と書きます。[ 95 ] (これは他の多くの言語に共通する演算子とはオペランドの順序が異なります。)x if c else y c ? x : y Pythonでは、リスト とタプル を区別しています。リストは と表記され、可変であり、辞書のキーとして使用することはできません(Pythonでは辞書のキーは不変で なければならないため)。タプルは と表記され、不変であるため、タプルのすべての要素が不変であれば、辞書のキーとして使用できます。演算子は2つのタプルを連結するために使用できます。この演算子はタプルの内容を直接変更するのではなく、両方の要素を含む新しいタプルを生成します。例えば、最初に に等しい変数が与えられた場合、まず を実行すると が評価され、 が生成されます。この結果は に代入されます。これにより、タプルオブジェクトの不変の性質に従いながら、の内容を効果的に「変更」できます。明確なコンテキストでは、タプルの括弧はオプションです。[ 96 ] [ 1 , 2 , 3 ] ( 1 , 2 , 3 ) +t( 1 , 2 , 3 ) t = t + ( 4 , 5 ) t + ( 4 , 5 ) ( 1 , 2 , 3 , 4 , 5 ) ttPythonにはシーケンスアンパッキング という機能があり、複数の式を関連付け、それぞれが代入可能なもの(例えば変数や書き込み可能なプロパティ)に評価されるようにします。これはタプルリテラルを作成する場合と似ています。そして、その結果は代入文の等号の左側に配置されます。この文は、等号の右側にある反復可能な オブジェクトが、左側の書き込み可能な式と同じ数の値を生成することを期待しています。反復処理中、文は右側で生成された各値を、対応する左側の式に代入します。[ 97 ] Pythonには、C言語の文字列のフォーマット%と同様に機能する「文字列フォーマット」演算子があります。例えば、は と評価されます。Python 2.6以降および3以降では、この演算子は クラスのメソッドによって補完されました。例えば、 です。Python 3.6では「f-文字列」が追加されました。[ 98 ] printf "spam= %s eggs= %d " % ( "blah" , 2 ) "spam=blah eggs=2"format()str"spam= {0} eggs= {1} " . format ( "blah" , 2 ) spam = "blah" ; eggs = 2 ; f 'spam= { spam } eggs= { eggs } ' Pythonでは、文字列は「加算」することで連結 できます(整数や浮動小数点数を加算する場合と同じ演算子を使用します)。例:を返します。文字列に数値が含まれている場合は、整数ではなく文字列として連結されます。例:を返します。"spam" + "eggs" "spameggs""2" + "2" "22" Python はいくつかの方法で文字列リテラル をサポートしています。 一重引用符または二重引用符で区切られます。一重引用符と二重引用符は同等の機能を持ちます(Unixシェル 、Perl 、およびPerlの影響を受けた言語とは異なります)。どちらの引用符も、バックスラッシュ(\)をエスケープ文字 として使用します。文字列補間は、 Python 3.6で「フォーマットされた文字列リテラル」として利用可能になりました。[ 98 ] 三重引用符、つまり 3 つの一重引用符または二重引用符で始まり終わります。これは複数行にまたがることができ、シェル、Perl、およびRubyの ヒア ドキュメント のように機能します。 文字列リテラルの前に を付けることで表される、生の文字 r列の種類。エスケープシーケンスは解釈されないため、正規表現 やWindows スタイルのパスなど、リテラルのバックスラッシュが一般的に使用される場合には生の文字列が便利です。(C# @の「 -quoting」と比較してください。) Python には、リスト内の配列インデックス と配列 a[key]スライス式があり、 、 、または と記述されます。インデックスは0 から始まり 、負のインデックスは末尾からの相対位置です。スライスは、開始 インデックスから終了インデックスまでの要素を取得しますが、終了 インデックスは含まれません。3 番目のスライスパラメータ (オプション) は、step またはstride と呼ばれ、要素をスキップしたり、逆順に並べたりすることができます。スライスインデックスは省略可能です。たとえば、 はリスト全体のコピーを返します。スライスの各要素は、浅いコピー です。a [ start : stop ] a [ start : stop : step ] a [:] Pythonでは、 Common Lisp 、Scheme 、Ruby などの言語とは対照的に、式と文の区別が厳格に行われています。この区別により、一部の機能が重複することがあります。例えば、次のような場合です。
リスト内包表記 とforループ条件 式とifブロック組み込み関数と(Python 2では文)eval()の比較。前者は式用、後者は文用である。exec()exec 文は式の一部にすることはできません。この制限のため、リストやdict内包表記(およびラムダ式)などの式には文を含めることはできません。特殊な例として、代入文( など)は条件文の条件式の一部にすることはできません。 a = 1
タイピング Python 3の標準型階層 Pythonはダックタイピングを 採用しており、オブジェクトは型付けされていますが、変数名は型付けされていません。型制約は定義時にチェックされません。むしろ、オブジェクトに対する操作は使用時に失敗し、オブジェクトが適切な型ではないことが示される場合があります。Pythonは動的型付けで あるにもかかわらず、強い型付けを採用して おり、定義が不十分な操作(例:数値と文字列の加算)を暗黙的に解釈するのではなく、禁止しています。
Pythonでは、クラス を用いてプログラマーが独自の型を定義できます。これは主にオブジェクト指向プログラミング において用いられます。クラスの新しいインスタンスは 、例えばクラスを呼び出すことで作成されます(または)。クラスはメタクラス (それ自体のインスタンス)のインスタンスであるため、メタプログラミングやリフレクションが 可能になります。 SpamClass () EggsClass () type
バージョン3.0より前のPythonには、同じ構文を使用する古いスタイル と新しいスタイルの 2種類のクラスがありました。[ 99 ] 現在のPythonのバージョンでは、新しいスタイルのセマンティクスのみがサポートされています。
Pythonはオプションの型アノテーション をサポートしています。[ 5 ] [ 100 ] これらのアノテーションは言語によって強制されるものではありませんが、mypy typingなどの外部ツールでエラーをキャッチするために使用できます。Pythonには、型アノテーション用の複数の型名を含むモジュールが含まれています。 [ 101 ] [ 102 ] また、Mypyはmypycと呼ばれるPythonコンパイラをサポートしており、これは型アノテーションを最適化に活用します。[ 103 ]
Python 3の組み込み型の概要 タイプ 可変性 説明 構文例 bool不変 ブール値 True False bytearray可変 バイト のシーケンスbytearray ( b 'Some ASCII' ) bytearray ( b "Some ASCII" ) bytearray ([ 119 , 105 , 107 , 105 ]) bytes不変 バイトのシーケンス b 'Some ASCII' b "Some ASCII" bytes ([ 119 , 105 , 107 , 105 ]) complex不変 実数部と虚数部を持つ 複素数 3 + 2.7 j 3 + 2.7 j 5 j dict可変 キーと値のペアの連想配列 (または辞書)。混合型(キーと値)を含めることができます。キーはハッシュ可能な型である必要があります。 { 'key1' : 1.0 , 3 : False } {} types.EllipsisType不変 NumPy 配列 のインデックスとして使用される省略記号プレースホルダー ... Ellipsis float不変 倍精度 浮動小数点数 。精度は機種依存だが、実際には一般的に53ビットの精度を持つ64ビットIEEE 754 数値として実装されている。[ 104 ] 1.33333
frozenset不変 順序なしの集合 。重複は含まれません。ハッシュ可能な場合は、混合型を含めることができます。 frozenset ({ 4.0 , 'string' , True }) frozenset ()
int不変 無限大の整数 [ 105 ] 42 list可変 リスト 、混合型を含むことができる [ 4.0 , 'string' , True ] [] types.NoneType不変 値が存在しないことを表すオブジェクト。他の言語では nullと呼ばれることが多い。 None types.NotImplementedType不変 サポートされていないオペランド タイプを示すためにオーバーロードされた演算子 から返されることができるプレースホルダー。 NotImplemented range不変 不変の数値列 for。ループ内で特定の回数だけ繰り返すのによく使われる[ 106 ] range ( − 1 , 10 ) range ( 10 , − 5 , − 2 ) set可変 順序なしの集合 。重複は含まれません。ハッシュ可能な場合は、混合型を含めることができます。 { 4.0 , 'string' , True } set () str不変 文字列 :Unicodeコードポイントのシーケンス 'Wikipedia' "Wikipedia" tuple不変 タプル 、混合型を含むことができる ( 4.0 , 'string' , True ) ( 'single element' ,) ()
算術演算 Python には、算術演算子 (+、-、*、/)、切り捨て除算演算子//、モジュロ演算子 %などの従来の記号が含まれています。 (モジュロ演算子では、剰余は のように負になることがあります4 % -3 == -2。)また、Python では指数演算子 **(および)も提供しています。また、行列乗算演算子 も提供しています。[ 107 ] これらの演算子は従来の数学と同じように動作します。同じ優先順位規則 で、中置 演算子および は単項 、として使用して、それぞれ正の数と負の数を表すこともできます。 5**3 == 1259**0.5 == 3.0@+-
整数同士の割り算は浮動小数点数の結果を生成します。割り算の挙動は時代とともに大きく変化してきました。[ 108 ]
Python の現在のバージョン (つまり 3.0 以降) では、/演算子は常に浮動小数点除算を表すように変更されました (例: ) 。5 / 2 == 2.5 切り捨て除算//演算子が導入されました。これは7//3 == 2、、、、を意味します。Python 2.7 では、ステートメントを追加すると、-7//3 == -3Python 2.7 のモジュールで除算に Python 3.x の規則を使用できるようになります (上記を参照)。7.5//3 == 2.0-7.5//3 == -3.0from __future__ import division Python用語では、演算子は真の除算 (または単に除算 )/を表し、 演算子は切り捨て除算 を表します。バージョン3.0より前では、演算子は古典的な除算 を表します。[ 108 ] ///
負の無限大への丸めは 、他の多くの言語とは異なる方法ではありますが、Pythonに一貫性をもたらします。例えば、この丸めは、方程式が常に真であることを意味します。また、丸めは、方程式が の正負両方の値に対して有効であることを意味します。予想通り、 の結果は半開区間 [0, b )内にあります。ここでは正の整数です。しかし、方程式の有効性を維持するには、 が負の場合、結果が区間 ( b , 0]内になければなりません。[ 109 ] ( a + b ) // b == a // b + 1 b * ( a // b ) + a % b == a aa%bbb
Pythonにroundは、浮動小数点数を最も近い整数に丸める関数が用意されています。を同点にした場合の の丸め には、Python 3では偶数への丸め 方式が用いられます。round(1.5)と はround(2.5)どちらも を生成します2。[ 110 ] Python 3より前のバージョンでは、ゼロから丸める 方式が用いられていました。round(0.5)は1.0、 はround(-0.5)です−1.0。[ 111 ]
Pythonでは、複数の等式を含むブール式を数学の一般的な用法と整合させることができます。例えば、式 はが より小さく、かつ が より小さいa < b < cかどうかをテストします。[ 112 ] C言語由来の言語では、この式は異なる解釈をします。C言語では、この式はまず を評価し、その結果は0または1となり、その結果は と比較されます。[ 113 ] abbca < bc
Pythonはすべての整数演算に任意精度演算 Decimalを使用します。モジュール内の型/クラスは、複数の丸めモードをdecimal備えた、定義済みの任意精度の10進浮動小数点数を提供します。 [ 114 ] Fractionモジュール内のクラスは、有理数に対して fractions任意精度を提供します。[ 115 ]
Pythonの広範な数学ライブラリとサードパーティのライブラリNumPy のおかげで、この言語は数値データの処理や操作などのタスクにおける科学的なスクリプトに頻繁に使用されています。[ 116 ] [ 117 ]
関数の構文 Pythonでは、関数は キーワードを使って作成されますdef。関数の定義は、関数の呼び出し方法と同様に、まず関数名を指定し、次に必要なパラメータを指定します。以下は、入力を出力する関数の例です。
def printer ( input1 , input2 = "すでにそこにあります" ): print ( input1 ) print ( input2 ) プリンター ( "hello" ) # 出力例: # hello # すでにそこにあります 実行時に実際の値が提供されない場合に関数パラメータにデフォルト値を割り当てるには、関数ヘッダー内で変数定義構文を使用できます。
コード例 「Hello, World!」プログラム :
print ( 'Hello, World!' ) 非負整数の 階乗 を計算するプログラム:
text = input ( '数値を入力すると、その階乗が出力されます: ' ) n = int ( テキスト ) n < 0 の 場合 : ValueError を発生させます ( '負でない整数を入力する必要があります' ) 階乗 = 1 iが 範囲 ( 2 , n + 1 ) の 場合: 階乗 *= i 印刷 ( 階乗 )
図書館 Pythonの大規模な標準ライブラリ[ 118 ] は、その最大の強みの一つとして広く挙げられます。インターネット対応アプリケーション向けに、MIME やHTTPといった多くの標準フォーマットとプロトコルがサポートされています。この言語には、 グラフィカルユーザーインターフェース の作成、リレーショナルデータベース への接続、疑似乱数の生成 、任意精度小数点による算術演算[ 114 ] 、正規表現の 操作、ユニットテスト などのモジュールが含まれています。
標準ライブラリの一部は仕様でカバーされています。例えば、Web Server Gateway Interface (WSGI)の実装はwsgirefPEP 333 [ 119 ] に準拠しています。しかし、ほとんどの部分はコード、内部ドキュメント、テストスイート によって仕様が規定されています。しかし、標準ライブラリの大部分はクロスプラットフォームのPythonコードであるため、異なる実装のために変更または書き換えが必要なモジュールはごくわずかです。
2025年3月13日現在、サードパーティのPythonソフトウェアの公式リポジトリであるPython Package Index (PyPI)には、614,339を超える [ 120 ] パッケージが含まれています。
開発環境 ほとんどのPython実装(CPythonを含む)には、読み取り-評価-印刷ループ (REPL)が含まれています。これにより、環境はコマンドラインインタープリタ として機能することができ、ユーザーはステートメントを順番に入力してすぐに結果を受け取ることができます。[ 121 ]
また、CPythonには初心者向けの IDLE と呼ばれる統合開発環境(IDE) が バンドルされています[ 122 ] 。
IDLE やIPython などの他のシェルでは、改良された自動補完、セッション状態の保持、構文の強調表示 などの追加機能が追加されています。[ 122 ] [ 123 ]
標準的なデスクトップIDEにはPyCharm 、Spyder 、Visual Studio Codeなどがある [ 124 ] 。また、次のような Webブラウザ ベースのIDEもある。
実装
リファレンス実装 CPythonはPythonの リファレンス実装 です。この実装はCで記述されており、バージョン3.11以降はC11 標準[ 128 ] に準拠しています。旧バージョンではC89 標準といくつかのC99 機能を併用していますが、サードパーティの拡張機能は旧バージョンのCに限定されません。例えば、C11やC++を使用して実装することも可能です。[ 129 ] [ 130 ] CPythonはPythonプログラムを中間バイトコードに コンパイルし 、[ 131 ] 仮想マシン によって実行されます。[ 132 ] CPythonはCとネイティブPythonの組み合わせで記述された大規模な標準ライブラリとともに配布されています。
CPythonは、WindowsやmacOS(およびPython 3.9.1以降の実験的なインストーラを使用したApple M1 Mac)を含むほとんどの最近の Unix系システムを含む多くのプラットフォームで使用できます。Python 3.9以降、Pythonインストーラは意図的に Windows 7 と8へのインストールに失敗します。[ 133 ] [ 134 ] Windows XP はPython 3.5までサポートされ、VMSは非公式にサポートされ ていました。[135] プラットフォームの移植性は、Pythonの最も初期の優先事項の1つでした。[136 ] Python 1 と2 の 開発 中は、OS/2 とSolaris もサポートされていましたが、[ 8 ] その時以来、多くのプラットフォームでサポートが中止されています。
現在のすべての Python バージョン (3.7 以降) は、マルチスレッド機能を備えたオペレーティング システムのみをサポートしており、以前ほど多くのオペレーティング システムをサポートしていません (多くの古いバージョンは削除されています)。
リファレンス実装の制限 典型的なコードの場合、PythonとCPythonのエネルギー消費量はCよりも75.88倍も悪いです。[ 137 ] 典型的なコードの場合、PythonとCPythonのスループットはCよりも71.9倍悪くなります。[ 137 ] 一般的に書かれたコードにおけるCPythonの平均メモリ使用量はCよりも2.4倍悪いです。[ 137 ]
その他の実装 すべての代替実装は、少なくともわずかに異なるセマンティクスを持ちます。例えば、ある代替実装では、他の現在のPythonバージョンとは異なり、順序付けされていない辞書が含まれる場合があります。より大きなPythonエコシステムにおけるもう一つの例として、PyPyはC Python APIを完全にはサポートしていません。
Pythonで実行ファイルを作成する場合、多くの場合、Pythonインタープリタ全体を実行ファイルにバンドルします。そのため、小さなプログラムの場合、バイナリサイズが膨大になります。[ 138 ] しかし、Pythonを真にコンパイルできる実装も存在します。代替実装としては、以下のようなものがあります。
サポートされていない実装 Stackless Pythonは、 マイクロスレッド を実装したCPythonの重要なフォークです。この実装ではコールスタックの 使用方法が異なるため、大規模並列プログラムが可能になります。PyPyもスタックレス版を提供しています。[ 151 ]
Just-in-Time Python コンパイラは開発されましたが、現在はサポートされていません。
他の言語へのトランスパイラ 高水準オブジェクト言語用の コンパイラ/トランスパイラは いくつかあります。ソース言語は、制限のない Python、Python のサブセット、または Python に類似した言語です。
Brython [ 154 ] とTranscrypt [ 155 ] [ 156 ] はPythonをJavaScript にコンパイルします。 Cython は Python のスーパーセットを C にコンパイルします。結果のコードは、Python インタープリターへの直接の C レベル API 呼び出しを介して Python で使用できます。PyJLはPythonのサブセットを「人間が読みやすく、保守しやすく、高性能なJuliaソースコード」にコンパイル/トランスパイルします。[ 76 ] 開発者のパフォーマンスの主張にもかかわらず、これは任意の Pythonコードでは不可能です。つまり、より高速な言語または機械語へのコンパイルは、一般的には不可能であることが知られています。Pythonのセマンティクスは変更される可能性がありますが、多くの場合、Pythonコードにほとんど、あるいは全く変更を加えることなく高速化が可能です。高速化されたJuliaソースコードは、Pythonから使用したり、機械語にコンパイルしたりすることができます。 Nuitkaは PythonをC言語にコンパイルします。[ 157 ] このコンパイラは、Pythonの主要サポートプラットフォーム(Windows 7、Windows XPも含む)およびAndroidにおいて、Python 3.4から3.13(および2.6と2.7)で動作します。コンパイラ開発者は、Python 3.10を完全サポート、Python 3.11と3.12を部分的にサポート、Python 3.13を試験的にサポートしていると主張しています。NuitkaはApple Siliconベースのバージョンを含むmacOSをサポートしています。このコンパイラは無料ですが、商用アドオン(ソースコードの非表示など)があります。Numba はPythonから使用されるJITコンパイラです。このコンパイラは、PythonおよびNumPyコードのサブセットを高速なマシンコードに変換します。このツールは、関連するPythonコードにデコレータを追加することで有効になります。PythranはPython 3のサブセットをC++(C++11 )にコンパイルします。[ 158 ] RPython は C にコンパイルでき、Python 用の PyPy インタープリターを構築するために使用されます。Python → 11l → C++トランスパイラ[ 159 ] はPython 3のサブセットをC++(C++17 )にコンパイルします。 特殊なコンパイラも存在します。
いくつかの古いプロジェクトや、Python 3.x および関連する構文で使用するように設計されていないコンパイラも存在しました。
EuroSciPy '13では、非数値(組み合わせ)ワークロードを使用したさまざまなPython実装のパフォーマンス比較が発表されました。[ 166 ] さらに、Pythonの他のプログラミング言語と比較したパフォーマンスは、コンピュータ言語ベンチマークゲーム によってベンチマークされています。[ 167 ]
インタプリタ言語 特有の低速性にもかかわらず、Pythonのパフォーマンスを最適化する方法はいくつかあります。これらのアプローチには、以下の戦略やツールが含まれます。
ジャストインタイムコンパイル :Pythonプログラムの実行中にプログラムの一部を動的にコンパイルする手法。この手法は、Numba やPyPy などのライブラリで使用されています。静的コンパイル :Pythonコードは実行前に機械語にコンパイルできる場合があります。このアプローチの例として、PythonをC言語にコンパイルするCythonが挙げられます。 同時実行 と並列処理 :複数のタスクを同時に実行できます。Pythonには、この形式の並列処理をサポートする「multiprocessing」などのモジュールが含まれています。さらに、このアプローチはCPUタスクにおけるグローバルインタープリタロック (GIL)の制限を克服するのに役立ちます。効率的なデータ構造 Set:メンバーシップ テストやキュー操作などのデータ型を使用することで、パフォーマンスdequeを向上 させることもできます。collections NumPy などのライブラリを利用することで、パフォーマンスの向上が見られます。ほとんどの高性能Pythonライブラリは、 Pythonインタープリタではなく、 C またはFortranを 内部的に使用しています。[ 168 ]
言語発達 Pythonの開発は主にPython Enhancement Proposal (PEP)プロセスを通じて行われています。このプロセスは主要な新機能の提案、問題に関するコミュニティの意見の収集、Pythonの設計上の決定の文書化を行う主要なメカニズムです。[ 169 ] PythonのコーディングスタイルはPEP 8でカバーされています。[ 84 ] 優れたPEPはPythonコミュニティと運営委員会によってレビューされ、コメントが付けられます。[ 169 ]
言語の拡張は、CPythonリファレンス実装の開発と並行して行われています。メーリングリストpython-devは、言語開発の主要なフォーラムです。具体的な問題は、当初は財団がホストするRoundup バグトラッカーで議論されていました。 [ 170 ] 2022年には、すべての問題と議論はGitHub に移行されました。[ 171 ] Pythonの開発は当初、 Mercurialで動作する セルフホスト型 ソースコードリポジトリで行われていましたが、2017年1月にGitHubに移行しました。 [ 172 ]
CPython のパブリックリリースには 3 つのタイプがあり、バージョン番号のどの部分が増加するかによって区別されます。
後方互換性のないバージョン 。コードが壊れることが予想され、手動で移植 する必要があるバージョン。バージョン番号の最初の部分は増加します。このようなリリースはまれで、バージョン3.0はバージョン2.0の8年後にリリースされました。Guido van Rossum氏によると、バージョン4.0はおそらく存在しないでしょう。[ 173 ] メジャーリリースまたは「機能」リリースは 、以前のバージョンとほぼ互換性がありますが、新機能が導入されています。バージョン番号の2番目の部分は増加します。Python 3.9以降、これらのリリースは毎年行われる予定です。[ 174 ] [ 175 ] 各メジャーバージョンは、リリース後数年間、バグ修正によってサポートされます。[ 176 ] バグ修正リリース [ 177 ] は、新機能の追加はなく、約3ヶ月ごとに行われます。これらのリリースは、前回のリリース以降に十分な数のバグがアップストリームで 修正されたときに行われます。セキュリティ上の脆弱性もこれらのリリースで修正されます。バージョン番号の3番目と最後の部分は増加します。[ 177 ] 最終リリース前のプレビューやテスト用に、アルファ版、ベータ版、リリース候補版 も多数リリースされます。リリースには大まかなスケジュールが設定されていますが、コードがまだ準備できていない場合は遅れることがよくあります。Python開発チームは、開発中に大規模なユニットテスト スイートを実行することで、コードの状態を監視しています。[ 178 ]
Pythonに関する主要な学術会議は PyConです。また、 PyLadies のようなPythonに特化したメンタリングプログラムもあります。
ネーミング Pythonの名前は、Pythonの作者であるGuido van Rossumが言語開発中に楽しんでいたイギリスのコメディグループMonty Pythonに由来しています。Monty Pythonへの言及はPythonのコードや文化に頻繁に現れます。 [ 179 ] 例えば、Pythonの文献でよく使われるメタ構文変数は、従来の foo や bar ではなく、spam やeggs です。[ 179 ] [ 180 ] また、公式のPythonドキュメントには、Monty Pythonのルーチンへの様々な言及が含まれています。[ 182 ] Pythonユーザーは「Pythonistas」と呼ばれることもあります。[ 183 ]
Pythonの影響を受けた言語
参照
注記
参考文献 ^ 「General Python FAQ – Python 3 documentation」 . docs.python.org . 2024年 7月7日 閲覧 。^ “Python 0.9.1 part 01/21” . alt.sourcesアーカイブ. 2021年8月11日時点のオリジナルより アーカイブ。 2021年 8月11日 閲覧 。 ^ 「Python 3.14.2 と 3.13.11 が利用可能になりました!」 2025年12月5日. 2025年 12月5日 閲覧 。 ^ 「なぜPythonは動的言語であり、かつ強く型付けされた言語でもあるのか」 。Python Wiki 。 2021年3月14日時点のオリジナルより アーカイブ。 2021年 1月27日 閲覧 。 ^ a b van Rossum, Guido; Levkivskyi, Ivan. 「PEP 483 – 型ヒントの理論」 . Python Enhancement Proposals (PEPs) . 2020年6月14日時点のオリジナルより アーカイブ。 2018年 6月14日 閲覧 。 ^ von Löwis, Martin; Cannon, Brett. 「PEP 11 – CPython プラットフォームサポート」 . Python 拡張提案 (PEP) . 2024年 4月22日 閲覧 。 ^ "PEP 738 – サポート対象プラットフォームとして Android を追加 | peps.python.org" . Python 機能強化提案 (PEP) . 2024年 5月19日 閲覧 。 ^ a b 「他のプラットフォーム用のPythonをダウンロード」 Python.org 2020 年11月27日時点のオリジナルより アーカイブ 。 2023年 8月18日 閲覧 。 ^ "test – Python用回帰テストパッケージ" . Python 3.7.17ドキュメント . 2022年5月17日時点のオリジナルより アーカイブ。 2022年 5月17日 閲覧 。 ^ 「platform – 基盤となるプラットフォームの識別データへのアクセス」 。Python 3.10.4 ドキュメント 。 2022年5月17日時点のオリジナルより アーカイブ 。 2022年 5月17日 閲覧。 ^ Holth, Daniel; Moore, Paul (2014年3月30日). 「PEP 0441 – Python ZIPアプリケーションサポートの改善」 . Python Enhancement Proposals (PEPs) . 2018年12月26日時点のオリジナルより アーカイブ。 2015年 11月12日 閲覧 。 ^ “Starlark Language” . bazel.build . 2020年6月15日時点のオリジナルより アーカイブ。 2019年 5月25日 閲覧 。 ^ a b 「そもそもPythonはなぜ作られたのか?」 . Python全般に関するFAQ . Pythonソフトウェア財団. 2012年10月24日時点のオリジナルより アーカイブ。 2007年 3月22日 閲覧 。 私はCWIのABCグループでインタープリタ型言語の実装に豊富な経験を積み、このグループでの活動を通して言語設計について多くを学びました。これは、文のグループ化のためのインデントの使用や、非常に高水準なデータ型の組み込みなど、Pythonの多くの機能の起源となっています(ただし、Pythonでは細部はすべて異なります)。 ^ “Ada 83 リファレンスマニュアル (raise ステートメント)” . archive.adaic.com . 2019年10月22日時点のオリジナルより アーカイブ。 2020年 1月7日 閲覧 。 ^ a b Kuchling, Andrew M. (2006年12月22日). 「Guido van Rossum氏へのインタビュー(1998年7月)」 . amk.ca. オリジナル から2007年5月1日 アーカイブ。 2012年 3月12日 閲覧 。 私はDECのシステム研究センターで夏を過ごし、そこでModula-2+に触れました。Modula-3の最終報告書もほぼ同時期にそこで執筆されていました。そこで学んだことは、後にPythonの例外処理、モジュール、そしてメソッドのパラメータリストに明示的に「self」を含めるという点に活かされました。文字列のスライスはAlgol-68とIconに由来しています。 ^ a b c 「itertools – 効率的なループ処理のためのイテレータを作成する関数」 。Python 3.7.17 ドキュメント 。 2020年6月14日時点のオリジナルからの アーカイブ。 2016年 11月22日 閲覧 。 このモジュールは、APL、Haskell、SMLの構成要素に着想を得た、いくつかのイテレータ構成要素を実装しています。 ^ van Rossum, Guido (1993). 「UNIX/CプログラマのためのPython入門」. Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group) . CiteSeerX 10.1.1.38.2023 . C言語の設計は理想からは程遠いものですが、Pythonへの影響は計り知れません。 ^ a b 「クラス」 . Pythonチュートリアル . Pythonソフトウェア財団 . 2012年10月23日時点のオリジナルより アーカイブ。 2012年 2月20日 閲覧 。 これはC++とModula-3のクラスメカニズムを組み合わせたものである。 ^ Lundh, Fredrik. 「Call By Object」 . effbot.org . 2019年11月23日時点のオリジナルより アーカイブ 。 2017年 11月21日 閲覧。 「CLU」を「Python」、「レコード」を「インスタンス」、「プロシージャ」を「関数またはメソッド」に置き換えると、Pythonのオブジェクトモデルのかなり正確な説明が得られます。 ^ Simionato, Michele. 「Python 2.3 メソッド解決順序」 . Python Software Foundation. 2020年8月20日時点のオリジナルより アーカイブ 。 2014年 7月29日 閲覧。C3 メソッド自体はPythonとは何の関係もありません。これはDylanの開発者たちによって発明され、Lisper向けの論文で説明されているからです。 ^ Kuchling, AM 「関数型プログラミングHOWTO」 。Python v2.7.2ドキュメント 。Python Software Foundation。 2012年10月24日時点のオリジナルからの アーカイブ。 2012年 2月9日 閲覧 。 リスト内包表記とジェネレータ式[...]は、関数型プログラミング言語Haskellから借用した、このような演算のための簡潔な表記法です。 ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (2001年5月18日). 「PEP 255 – シンプルなジェネレータ」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月5日時点のオリジナルより アーカイブ。 2012年 2月9日 閲覧 。 ^ 「More Control Flow Tools」 . Python 3 ドキュメント . Python Software Foundation. 2016年6月4日時点のオリジナルからの アーカイブ。 2015年 7月24日 閲覧 。 ご要望にお応えして、Lispなどの関数型プログラミング言語でよく見られる機能がいくつかPythonに追加されました。lambdaキーワードを使用すると、小さな匿名関数を作成できます。 ^ 「re – 正規表現操作」 . Python 3.10.6 ドキュメント . 2018年7月18日時点のオリジナルからの アーカイブ。 2022年 9月6日 閲覧 。 このモジュールは、Perlと同様の正規表現マッチング操作を提供します。 ^ “CoffeeScript” . coffeescript.org . 2020年6月12日時点のオリジナルより アーカイブ。 2018年 7月3日 閲覧 。 ^ Rauschmayer, Axel (2013年2月24日). 「PerlとPythonのJavaScriptへの影響」 . 2ality.com . 2018年12月26日時点のオリジナルより アーカイブ 。 2015年 5月15日 閲覧。 ^ Rauschmayer, Axel. 「第3章 JavaScriptの性質と影響」 . Speaking JavaScript . O'Reilly. 2018年12月26日時点のオリジナルより アーカイブ。 2015年 5月15日 閲覧 。 ^ Bezanson, Jeff; Karpinski, Stefan; Shah, Viral B.; Edelman, Alan (2012年2月). 「Juliaを作った理由」 . Juliaウェブサイト . 2020年5月2日時点のオリジナルより アーカイブ. 2014年 6月5日 閲覧 . Pythonと同じくらい汎用的なプログラミング言語が欲しい [...] ^ a b Krill, Paul (2023年5月4日). 「Mojo言語、AI開発にPythonとMLIRを融合」 InfoWorld . 2023 年5月5日時点のオリジナルより アーカイブ 。 2023年 5月5日 閲覧。 ^ a b Ring Team (2017年12月4日). 「Ringとその他の言語」 . ring-lang.net . ring-lang . 2018年12月25日時点の オリジナル よりアーカイブ 。 2017年 12月4日 閲覧。 ^ a b Bini, Ola (2007). 『実践的なJRuby on Rails Web 2.0プロジェクト:Ruby on Rails を Javaプラットフォームに導入する』 . バークレー: APress. p. 3. ISBN 978-1-59059-881-8 。^ a b Lattner, Chris (2014年6月3日). 「Chris Lattnerのホームページ」 . Chris Lattner. 2018年12月25日時点のオリジナルより アーカイブ 。 2014年 6月3日 閲覧。Swift 言語は、言語専門家、ドキュメンテーションの達人、コンパイラ最適化の達人、そしてアイデアの洗練と実戦テストに役立つフィードバックを提供してくれた非常に重要な社内ドッグフーディンググループのたゆまぬ努力の成果です。もちろん、この分野の多くの言語が苦労して得た経験からも大きな恩恵を受けており、Objective-C、Rust、Haskell、Ruby、Python、C#、CLUなど、数え切れないほど多くの言語からアイデアを得ています。 ^ a b 「V ドキュメント(概要)」 . GitHub . 2024年 12月24日 閲覧 。 ^ Kuhlman, Dave. 「Python入門書:Python入門、Python上級編、Python演習」 第1.1節。 2012年6月23日時点の オリジナル (PDF) からアーカイブ。 ^ 「PEP 484 – 型ヒント」 . Python機能強化提案. 2025年 10月27日 閲覧 。 ^ "mypy – Pythonのオプションの静的型付け" . mypy-lang.org . 2025年 8月17日 閲覧 。 ^ “Stack Overflow Developer Survey 2022” . Stack Overflow . 2022年6月27日時点のオリジナルより アーカイブ。 2022年 8月12日 閲覧 。 ^ 「2020年の開発者エコシステムの現状インフォグラフィック」 JetBrains 。 2021年3月1日時点のオリジナルより アーカイブ 。 2021年 3月5日 閲覧 。 ^ "TIOBE Index" . TIOBE. 2018年2月25日時点のオリジナルより アーカイブ 。 2023年 1月3日 閲覧。TIOBE プログラミングコミュニティインデックスは、プログラミング言語の人気度を示す指標です。 必要に応じて更新されます。^ Healy, John; McInnes, Leland; Weir, Colin (2017). 「サイバー分析ギャップの橋渡し:データサイエンスの民主化」. サイバー ディフェンスレビュー . 2 (1): 109– 118. ISSN 2474-2120 . JSTOR 26267404. Pythonはデータサイエンスと機械学習の共通言語です。 ^ Sultana, Simon G.; Reed, Philip A. (2017). 「コンピュータサイエンス入門コースのカリキュラム:学界と産業界からの提言の特定」. The Journal of Technology Studies . 43 (2): 80– 92. doi : 10.21061/jots.v43i2.a.3 . ISSN 1071-6084 . JSTOR 90023144 . ^ "TIOBE Index" . TIOBE. 2018年2月25日時点のオリジナルより アーカイブ 。 2023年 1月3日 閲覧。TIOBE プログラミングコミュニティインデックスは、プログラミング言語の人気度を示す指標です。 ^ a b Venners, Bill (2003年1月13日). 「The Making of Python」 . Artima Developer . Artima. 2016年9月1日時点のオリジナルより アーカイブ。 2007年 3月22日 閲覧 。 ^ a b c van Rossum, Guido (2009年1月20日). 「A Brief Timeline of Python」 . The History of Python . 2020年6月5日時点のオリジナルより アーカイブ。 2009年 1月20日 閲覧 。 ^ van Rossum, Guido (2000年8月29日). 「SETL (以前は範囲リテラルについてぬるま湯的だった)」 . Python-Dev (メーリングリスト). 2018年7月14日時点のオリジナルより アーカイブ。 2011年 3月13日 閲覧 。 ^ Fairchild, Carlie (2018年7月12日). 「Guido van RossumがPythonの慈悲深い独裁者を終身退任」 . Linux Journal . 2018年7月13日時点のオリジナルより アーカイブ。 2018年 7月13日 閲覧 。 ^ Smith, Nathaniel J.; Durbin, Ee. 「PEP 8100 – 2019年1月運営協議会選挙」 . Python Enhancement Proposals (PEPs) . Python Software Foundation. 2020年6月4日時点のオリジナルより アーカイブ。 2019年 5月4日 閲覧 。 ^ Pythonコアチームとコミュニティ。 「PEP 13 – Python言語ガバナンス」 。Python 機能強化提案(PEP) 。 2021年5月27日時点のオリジナルより アーカイブ。 2021年 8月25日 閲覧 。 ^ ブリッグス、ジェイソン R.;リポヴァチャ、ミラン (2013)。 子供向けの Python: 遊び心あふれるプログラミング入門 。米国カリフォルニア州サンフランシスコ: スターチプレスはありません。 ISBN 978-1-59327-407-8 。LCCN 2012044047 。OCLC 825076499 。OL 26119645M 。^ Kuchling, AM; Zadka, Moshe (2000年10月16日). 「What's New in Python 2.0」 . Python Software Foundation. 2012年10月23日時点のオリジナルより アーカイブ。 2012年 2月11日 閲覧 。 ^ Peterson, Benjamin. 「PEP 373 – Python 2.7 リリーススケジュール」 . python.org . 2020年5月19日時点のオリジナルより アーカイブ。 2017年 1月9日 閲覧 。 ^ Coghlan, Alyssa. 「PEP 466 – Python 2.7.x のネットワークセキュリティ強化」 . Python 機能強化提案 (PEP) . 2020年6月4日時点のオリジナルより アーカイブ。 2017年 1月9日 閲覧 。 ^ “Sunsetting Python 2” . Python.org . 2020年1月12日時点のオリジナルより アーカイブ 。 2019年 9月22日 閲覧。 ^ Peterson, Benjamin. 「PEP 373 – Python 2.7 リリーススケジュール」 . Python Enhancement Proposals (PEPs) . 2020年1月13日時点のオリジナルより アーカイブ。 2019年 9月22日 閲覧 。 ^ マティップ (2023 年 12 月 25 日)。 「PyPy v7.3.14 リリース」 。 ピーピー 。 2024 年 1 月 5 日のオリジナルから アーカイブ 。 2024 年 1 月 5 日 に取得 。 ^ Peterson, Benjamin (2020年4月20日). 「Python 2.7.18、Python 2の最終リリース」 . Python Insider . 2020年4月26日時点のオリジナルより アーカイブ。 2020年 4月27日 閲覧 。 ^ 「Pythonバージョンのステータス」 . Python開発者ガイド. 2025年 11月12日 閲覧 。 ^ The Cain Gang Ltd. 「Pythonメタクラス:誰が?なぜ?いつ?」 (PDF) 。 2009年5月30日時点の オリジナル (PDF) からアーカイブ。 2009年 6月27日 閲覧 。 ^ 「3.3. 特殊メソッド名」 . Python言語リファレンス . Python Software Foundation. 2018年12月15日時点のオリジナルより アーカイブ 。 2009年 6月27日 閲覧。 ^ 「PyDBC: Pythonのメソッド事前条件、メソッド事後条件、クラス不変条件」 。 2019年11月23日時点のオリジナルより アーカイブ。 2011年 9月24日 閲覧 。 ^ “Contracts for Python” . 2020年6月15日時点のオリジナルより アーカイブ 。 2011年 9月24日 閲覧。 ^ “PyDatalog” . 2020年6月13日時点のオリジナルより アーカイブ 。 2012年 7月22日 閲覧。 ^ 「Glue it all together with Python」 . Python.org . 2024年 9月30日 閲覧 。 ^ 「参照カウント」 。Pythonインタープリタの拡張と埋め込み。Docs.python.org 。 2012年10 月 18日時点のオリジナルからの アーカイブ 。 2020年 6月5日 閲覧。Pythonは と を 頻繁に使用するため 、メモリリークと解放済みメモリの再利用を回避するための戦略が必要です。ここで選択された手法は 参照カウント と呼ばれます。 malloc()free()}^ a b Hettinger, Raymond (2002年1月30日). 「PEP 289 – ジェネレータ式」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月14日時点のオリジナルより アーカイブ。 2012年 2月19日 閲覧 。 ^ “6.5 itertools – 効率的なループ処理のためのイテレータを作成する関数” . Docs.python.org. 2020年6月14日時点のオリジナルより アーカイブ 。 2016年 11月22日 閲覧。 ^ a b Peters, Tim (2004年8月19日). 「PEP 20 – The Zen of Python」 . Python Enhancement Proposals . Python Software Foundation. 2018年12月26日時点のオリジナルより アーカイブ。 2008年 11月24日 閲覧 。 ^ Lutz, Mark (2022年1月). 「Python changes 2014+」 . Learning Python . 2024年3月15日時点のオリジナルより アーカイブ。 2024年 2月25日 閲覧 。 ^ 「『Pythonの禅』のルールに関する混乱」 " . ディスカッション. Python.org . Python ヘルプ. 2022年5月3日. 2024年2月25日時点のオリジナルよりアーカイブ。 2024年 2月25日 閲覧 。^ Ambi, Chetan (2021年7月4日). 「最も物議を醸したPythonの「セイウチ演算子」 " . Python の簡略化 (pythonsimplified.com) . 2023年8月27日時点のオリジナルよりアーカイブ 。2024年2月5日 閲覧。^ Grifski, Jeremy (2020年5月24日). 「Pythonにおける『セイウチ演算子』をめぐる論争」 . The Renegade Coder (therenegadecoder.com) . 2023年12月28日時点のオリジナルより アーカイブ。 2024年 2月25日 閲覧 。 ^ 「[Python-ideas] PEP 315: do-while」 2013年6月26日。 ^ Bader, Dan. 「Python 文字列フォーマットのベストプラクティス 」 Real Python (realpython.com) . 2024年2月18日時点のオリジナルより アーカイブ。 2024年 2月25日 閲覧 。 ^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2nd Edition . O'Reilly Media . p. 230. ISBN 978-0-596-00797-3 . 2020年2月23日時点のオリジナルよりアーカイブ 。2015年11月14日 閲覧。^ "Python Culture" . ebeab . 2014年1月21日. 2014年1月30日時点の オリジナル よりアーカイブ 。 ^ a b 「PyJLを使用したPythonからJuliaへのトランスパイル」 (PDF) 。 2023年11月19日時点のオリジナルから アーカイブ (PDF) 。 2023年 9月20日 閲覧 。 必要な型情報を指定してコードを1行手動で変更したところ、52.6倍の高速化が実現し、変換されたJuliaコードは元のPythonコードよりも19.5倍高速になりました。 ^ 「なぜPythonと呼ばれるのか?」 . Python全般に関するFAQ . Docs.python.org. 2012年10月24日時点のオリジナルより アーカイブ 。 2023年 1月3日 閲覧。 ^ 「PythonがWeb上で強力な力を発揮する15の方法」 。 2019年5月11日時点の オリジナル よりアーカイブ 。 2018年 7月3日 閲覧。 ^ “ – data pretty printer – Python 3.11.0 ドキュメント” . docs.python.org . 2021年1月22日時点のオリジナルより アーカイブ。 2022年 11月5日 閲覧 。 pprintstuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']^ “コードスタイル” . Pythonヒッチハイクガイド. docs.python-guide.org . 2021年1月27日時点のオリジナルより アーカイブ。 2021年 1月20日 閲覧 。 ^ 「Pythonは初心者プログラマーにとって良い言語ですか?」 . Pythonに関する一般的なFAQ . Python Software Foundation. 2012年10月24日時点のオリジナルより アーカイブ 。 2007年 3月21日 閲覧。 ^ 「Pythonのインデントに関する神話」 Secnetix.de。 2018年2月18日時点の オリジナルよりアーカイブ 。 2011年 4月19日 閲覧。 ^ Guttag, John V. (2016年8月12日). Pythonを使った計算とプログラミング入門:データ理解への応用 . MIT Press. ISBN 978-0-262-52962-4 。^ a b van Rossum, Guido; Warsaw, Barry. 「PEP 8 – Pythonコードのスタイルガイド」 . Python拡張提案 (PEP) . 2019年4月17日時点のオリジナルより アーカイブ。 2019年 3月26日 閲覧 。 ^ “8. エラーと例外 – Python 3.12.0a0 ドキュメント” . docs.python.org . 2022年5月9日時点のオリジナルより アーカイブ。 2022年 5月9日 閲覧 。 ^ “Highlights: Python 2.5” . Python.org . 2019年8月4日時点のオリジナルより アーカイブ 。 2018年 3月20日 閲覧。 ^ van Rossum, Guido (2009年4月22日). 「末尾再帰の除去」 . Neopythonic.blogspot.be. 2018年5月19日時点のオリジナルより アーカイブ 。 2012年 12月3日 閲覧。 ^ van Rossum, Guido (2006年2月9日). 「言語設計はパズルを解くだけではない」 . Artimaフォーラム . Artima. 2020年1月17日時点のオリジナルより アーカイブ。 2007年 3月21日 閲覧 。 ^ van Rossum, Guido; Eby, Phillip J. (2005年5月10日). 「PEP 342 – 拡張ジェネレータによるコルーチン」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月29日時点のオリジナルより アーカイブ。 2012年 2月19日 閲覧 。 ^ "PEP 380" . Python.org. 2020年6月4日時点のオリジナルより アーカイブ 。 2012年 12月3日 閲覧。 ^ "division" . python.org . 2006年7月20日時点のオリジナルより アーカイブ。 2014年 7月30日 閲覧 。 ^ “PEP 0465 – 行列乗算専用の中置演算子” . python.org . 2020年6月4日時点のオリジナルより アーカイブ。 2016年 1月1日 閲覧 。 ^ “Python 3.5.1 リリースと変更ログ” . python.org . 2020年5月14日時点のオリジナルより アーカイブ 。 2016年 1月1日 閲覧。 ^ “What's New in Python 3.8” . 2020年6月8日時点のオリジナルより アーカイブ 。 2019年 10月14日 閲覧。 ^ van Rossum, Guido; Hettinger, Raymond (2003年2月7日). 「PEP 308 – 条件式」 . Python Enhancement Proposals . Python Software Foundation. 2016年3月13日時点のオリジナルより アーカイブ。 2011年 7月13日 閲覧 。 ^ “4. 組み込み型 – Python 3.6.3rc1 ドキュメント” . python.org . 2020年6月14日時点のオリジナルより アーカイブ。 2017年 10月1日 閲覧 。 ^ “5.3. タプルとシーケンス – Python 3.7.1rc2 ドキュメント” . python.org . 2020年6月10日時点のオリジナルより アーカイブ。 2018年 10月17日 閲覧 。 ^ a b “PEP 498 – リテラル文字列補間” . python.org . 2020年6月15日時点のオリジナルより アーカイブ 。 2017年 3月8日 閲覧。 ^ 「Python言語リファレンス、セクション3.3. 新しいスタイルと従来のクラス、リリース2.7.1用」 。 2012年10月26日時点の オリジナル よりアーカイブ。 2011年 1月12日 閲覧 。 ^ "PEP 484 – Type Hints | peps.python.org" . peps.python.org . 2023年11月27日時点のオリジナルより アーカイブ。 2023年 11月29日 閲覧 。 ^ "typing — 型ヒントのサポート" . Pythonドキュメント . Python Software Foundation. 2020年2月21日時点のオリジナルより アーカイブ。 2023年 12月22日 閲覧 。 ^ 「mypy – Pythonのオプションの静的型付け」 。 2020年6月6日時点のオリジナルより アーカイブ 。 2017年 1月28日 閲覧。 ^ “Introduction” . mypyc.readthedocs.io . 2023年12月22日時点のオリジナルより アーカイブ。 2023年 12月22日 閲覧 。 ^ “15. 浮動小数点演算:問題点と制限事項 – Python 3.8.3 ドキュメント” . docs.python.org . 2020年6月6日時点のオリジナルからの アーカイブ。 2020年 6月6日 閲覧 。 現在(2000年11月)のほぼすべてのマシンはIEEE-754浮動小数点演算を使用しており、ほぼすべてのプラットフォームはPythonの浮動小数点数をIEEE-754の「倍精度」にマッピングしています。 ^ Zadka, Moshe; van Rossum, Guido (2001年3月11日). 「PEP 237 – 長整数と整数の統合」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月28日時点のオリジナルより アーカイブ。 2011年 9月24日 閲覧 。 ^ “Built-in Types” . 2020年6月14日時点のオリジナルより アーカイブ 。 2019年 10月3日 閲覧。 ^ “PEP 465 – 行列乗算専用の中置演算子” . python.org . 2020年5月29日時点のオリジナルより アーカイブ 。 2018年 7月3日 閲覧。 ^ a b Zadka, Moshe; van Rossum, Guido (2001年3月11日). 「PEP 238 – 除算演算子の変更」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月28日時点のオリジナルより アーカイブ。 2013年 10月23日 閲覧 。 ^ 「なぜPythonの整数除算は切り捨てられるのか」 2010年8月24日。 2020年6月5日時点のオリジナルより アーカイブ。 2010年 8月25日 閲覧 。 ^ "round" 、 Python標準ライブラリ、リリース3.2、§2:組み込み関数 、 2012年10月25日時点のオリジナルから アーカイブ、 2011年 8月14日 閲覧。 ^ "round" 、 Python標準ライブラリ、リリース2.7、§2:組み込み関数 、 2012年10月27日時点のオリジナルから アーカイブ、 2011年 8月14日 閲覧。 ^ Beazley, David M. (2009). Python Essential Reference (第4版). Addison-Wesley Professional. p . 66. ISBN 978-0-672-32978-4 。^ カーニハン, ブライアン・W.; リッチー, デニス・M. (1988). 『プログラミング言語C』 (第2版)p. 206 . ^ a b Batista, Facundo (2003年10月17日). 「PEP 327 – Decimal Data Type」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月4日時点のオリジナルより アーカイブ。 2008年 11月24日 閲覧 。 ^ 「What's New in Python 2.6」 。Python v2.6.9 ドキュメント 。2013年10月29日。 2019年12月23日時点のオリジナルより アーカイブ 。 2015年 9月26日 閲覧。 ^ 「Pythonが研究に最適である10の理由(そしてそうでないいくつかの理由) - Hoyt Koepke」 ワシントン 大学統計学部 。 2020年5月31日時点の オリジナル よりアーカイブ。 2019年 2月3日 閲覧 。 ^ Shell, Scott (2014年6月17日). 「科学計算のためのPython入門」 (PDF) . 2019年2月4日時点のオリジナルより アーカイブ (PDF) . 2019年 2月3日 閲覧 。 ^ Piotrowski, Przemyslaw (2006年7月). 「Python Server PagesとOracle向けの迅速なWeb開発環境の構築」 . Oracle Technology Network . Oracle. 2019年4月2日時点のオリジナルより アーカイブ 。 2012年 3月12日 閲覧。 ^ Eby, Phillip J. (2003年12月7日). 「PEP 333 – Python Web Server Gateway Interface v1.0」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月14日時点のオリジナルより アーカイブ。 2012年 2月19日 閲覧 。 ^ “PyPI” . PyPI . 2025年3月13日 . 2025年2月22日時点のオリジナルより アーカイブ。 ^ 「用語集: インタラクティブ」 . Pythonドキュメント . v3.13.7 . 2025年 8月31日 閲覧 。 ^ a b 「IDLE — Python エディタとシェル」 . Python ドキュメント . v3.13.7 . 2025年 8月31日 閲覧 。IDLE は Python の統合開発学習環境です。 ^ 「IPythonドキュメント」 v9.5.0。2025年8月29日。 2025年8月31日時点のオリジナルより アーカイブ 。 2025年 8月31日 閲覧。 ^ 「Visual Studio CodeでのPython」 code.visualstudio.com . 2025年 12月1日 閲覧 。 ^ “Project Jupyter” . Jupyter.org . 2023年10月12日時点のオリジナルより アーカイブ 。 2025年 4月2日 閲覧。 ^ Harper, Doug (2024年春). "Enthought Canopy" . WKU Physics 316. Western Kentucky University . 2024年8月18日時点のオリジナルより アーカイブ。 2025年 8月31日 閲覧 。 ^ “Enthought Canopy” . Enthought . 2017年7月15日時点の オリジナル よりアーカイブ 。 2016年 8月20日 閲覧。 ^ “PEP 7 – Cコードのスタイルガイド | peps.python.org” peps.python.org . 2022年4月24日時点のオリジナルより アーカイブ 。 2022年 4月28日 閲覧 。 ^ “4. CおよびC++拡張機能のビルド – Python 3.9.2ドキュメント” . docs.python.org . 2021年3月3日時点のオリジナルより アーカイブ。 2021年 3月1日 閲覧 。 ^ van Rossum, Guido (2001年6月5日). 「PEP 7 – Cコードのスタイルガイド」 . Python拡張提案 . Pythonソフトウェア財団. 2020年6月1日時点のオリジナルより アーカイブ。 2008年 11月24日 閲覧 。 ^ 「CPython バイトコード」 . Docs.python.org. 2020年6月5日時点のオリジナルより アーカイブ 。 2016年 2月16日 閲覧。 ^ 「Python 2.5 内部構造」 (PDF) 。 2012年8月6日時点のオリジナルより アーカイブ (PDF) 。 2011年 4月19日 閲覧 。 ^ “Changelog – Python 3.9.0 ドキュメント” . docs.python.org . 2021年2月7日時点のオリジナルより アーカイブ 。 2021年 2月8日 閲覧。 ^ “Download Python” . Python.org . 2020年12月8日時点のオリジナルより アーカイブ。 2020年 12月13日 閲覧 。 ^ “history [vmspython]” . www.vmspython.org . 2020年12月2日時点のオリジナルより アーカイブ。 2020年 12月4日 閲覧 。 ^ 「Guido van Rossumへのインタビュー」 Oreilly.com。 2014年7月16日時点のオリジナルより アーカイブ 。 2008年 11月24日 閲覧。 ^ a b c ペレイラ、ルイ;コウト、マルコ。リベイロ、フランシスコ。ルア、ルイ。クーニャ、ジャコム。フェルナンデス、ジョアンパウロ。ジョアン州サライバ(2017年10月23日)。 「プログラミング言語間のエネルギー効率: エネルギー、時間、メモリはどのように関係しているのでしょうか?」 。 ソフトウェア言語エンジニアリングに関する第 10 回 ACM SIGPLAN 国際会議の議事録 。 SLE 2017。米国ニューヨーク州ニューヨーク: コンピューティング機械協会。 pp. 256–267 。 土井 : 10.1145/3136014.3136031 。 ISBN 978-1-4503-5525-4 。^ 「PyInstaller の機能とその仕組み」 。 ^ “PyPyの互換性” . Pypy.org. 2020年6月6日時点のオリジナルより アーカイブ 。 2012年 12月3日 閲覧。 ^ Team, The PyPy (2019年12月28日). 「ダウンロードとインストール」 . PyPy . 2022年1月8日時点のオリジナルより アーカイブ。 2022年 1月8日 閲覧 。 ^ 「CPythonとPypyの速度比較」 Speed.pypy.org。 2021年5月10日時点のオリジナルより アーカイブ 。 2012年 12月3日 閲覧。 ^ “Codon: Pythonとの違い” . 2023年5月25日時点のオリジナルより アーカイブ 。 2023年 8月28日 閲覧。 ^ Lawson, Loraine (2023年3月14日). 「MITが開発したコンパイラがPythonコードを高速化」 . The New Stack . 2023年4月6日時点のオリジナルより アーカイブ 。 2023年 8月28日 閲覧。 ^ "Python-for-EV3" . LEGO Education . 2020年6月7日時点のオリジナルより アーカイブ。 2019年 4月17日 閲覧 。 ^ Yegulalp, Serdar (2020年10月29日). 「Pystonが復活、Pythonの高速化に貢献」 InfoWorld . 2021 年1月27日時点のオリジナルより アーカイブ。 2021年 1月26日 閲覧 。 ^ 「cinder: Instagram のパフォーマンス重視の CPython フォーク」 GitHub . 2021 年5月4日時点のオリジナルより アーカイブ。 2021年 5月4日 閲覧 。 ^ Aroca, Rafael (2021年8月7日). 「Snek Lang: ArduinosでPythonのような感覚」 Yet Another Technology Blog . 2024年1月5日時点のオリジナルより アーカイブ 。 2024年 1月4日 閲覧。 ^ Aufranc (CNXSoft), Jean-Luc (2020年1月16日). 「SnekboardがCircuitPythonまたはSnekプログラミング言語でLEGO Power Functionsを制御(クラウドファンディング)– CNX Software」 . CNX Software – 組み込みシステムニュース . 2024年1月5日時点のオリジナルより アーカイブ。 2024年 1月4日 閲覧 。 ^ Kennedy (@mkennedy), Michael. 「Gitで有名かどうか調べる準備はできましたか?」 pythonbytes.fm . 2024 年1月5日時点のオリジナルより アーカイブ 。 2024年 1月4日 閲覧。 ^ Packard, Keith (2022年12月20日). 「Snekプログラミング言語:Pythonにインスパイアされた組み込みコンピューティング言語」 (PDF) . 2024年1月4日時点のオリジナルより アーカイブ (PDF) . 2024年 1月4日 閲覧 。 ^ 「アプリケーションレベルのスタックレス機能 - PyPy 2.0.2ドキュメント」 . Doc.pypy.org. 2020年6月4日時点のオリジナルより アーカイブ 。 2013年 7月17日 閲覧。 ^ 「Pythonの最適化計画」 Google Project Hosting 2009年12月15日. 2016年4月11日時点のオリジナルより アーカイブ。 2011年 9月24日 閲覧 。 ^ 「Nokia N900上のPython」 。Stochastic Geometry 。2010年4月29日。 2019年6月20日時点のオリジナルより アーカイブ。 2015年 7月9日 閲覧 。 ^ “Brython” . brython.info . 2018年8月3日時点のオリジナルより アーカイブ。 2021年 1月21日 閲覧 。 ^ “Transcrypt – Python in the browser” . transcrypt.org . 2018年8月19日時点のオリジナルより アーカイブ 。 2020年 12月22日 閲覧。 ^ 「Transcrypt: PythonからJavaScriptへのコンパイラの解剖学」 InfoQ 2020 年12月5日時点のオリジナルより アーカイブ 。 2021年 1月20日 閲覧 。 ^ “Nuitka Home | Nuitka Home” . nuitka.net . 2020年5月30日時点のオリジナルより アーカイブ。 2017年 8月18日 閲覧 。 ^ Guelton, Serge; Brunet, Pierrick; Amini, Mehdi; Merlini, Adrien; Corbillon, Xavier; Raynaud, Alan (2015年3月16日). 「Pythran:科学計算用Pythonプログラムの静的最適化を可能にする」 . Computational Science & Discovery . 8 (1) 014001. IOP Publishing. Bibcode : 2015CS&D....8a4001G . doi : 10.1088/1749-4680/8/1/014001 . ISSN 1749-4699 . ^ “The Python → 11l → C++ transpiler” . 2022年9月24日時点のオリジナルより アーカイブ 。 2022年 7月17日 閲覧。 ^ “google/grumpy” . 2020年4月10日. 2020年4月15日時点のオリジナルより アーカイブ 。 2020年 3月25日 閲覧– GitHub経由。 ^ “プロジェクト” . opensource.google . 2020年4月24日時点のオリジナルより アーカイブ 。 2020年 3月25日 閲覧。 ^ Francisco, Thomas Claburn in San. "Google's Grumpy code makes Python Go" . www.theregister.com . 2021年3月7日時点のオリジナルより アーカイブ。 2021年 1月20日 閲覧 。 ^ “IronPython.net /” . ironpython.net . 2021年4月17日時点のオリジナルより アーカイブ。 ^ 「GitHub – IronLanguages/ironpython3: Dynamic Language Runtime をベースに構築された .NET Framework 向け Python 3.x の実装」 GitHub . 2021 年9月28日時点のオリジナルより アーカイブ。 ^ “Jython FAQ” . www.jython.org . 2021年4月22日時点のオリジナルより アーカイブ 。 2021年 4月22日 閲覧。 ^ Murri, Riccardo (2013). 非数値科学コードにおけるPythonランタイムのパフォーマンス . European Conference on Python in Science (EuroSciPy). arXiv : 1404.6388 . Bibcode : 2014arXiv1404.6388M . ^ “The Computer Language Benchmarks Game” . 2020年6月14日時点のオリジナルより アーカイブ 。 2020年 4月30日 閲覧。 ^ Python、Real. 「ママ、forループは不要:NumPyを使った配列プログラミング - Real Python」 realpython.com . 2025年 10月15日 閲覧 。 ^ a b Warsaw, Barry; Hylton, Jeremy; Goodger, David (2000年6月13日). 「PEP 1 – PEPの目的とガイドライン」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月6日時点のオリジナルより アーカイブ。 2011年 4月19日 閲覧 。 ^ Cannon, Brett. 「Guido、仲間たち、そしてメーリングリスト:Pythonの開発方法」 . python.org . Python Software Foundation. 2009年6月1日時点の オリジナルよりアーカイブ。 2009年 6月27日 閲覧 。 ^ Edge, Jake (2022年2月23日). “Moving Python's bugs to GitHub [LWN.net]” . 2022年10月2日時点のオリジナルより アーカイブ。 2022年 10月2日 閲覧 。 ^ “Python Developer's Guide – Python Developer's Guide” . devguide.python.org . 2020年11月9日時点のオリジナルより アーカイブ 。 2019年 12月17日 閲覧。 ^ Hughes, Owen (2021年5月24日). 「プログラミング言語:Python 4.0が開発者によると登場しないかもしれない理由」 . TechRepublic . 2022年7月14日時点のオリジナルより アーカイブ。 2022年 5月16日 閲覧 。 ^ 「PEP 602 – Pythonの年次リリースサイクル」 Python.org . 2020年6月14日時点のオリジナルより アーカイブ 。 2019年 11 月6日 閲覧。 ^ Edge, Jake (2019年10月23日). 「Pythonのリリース周期の変更 [LWN.net]」 . lwn.net . 2019年11月6日時点のオリジナルより アーカイブ。 2019年 11月6日 閲覧 。 ^ Norwitz, Neal (2002年4月8日). 「[Python-Dev] Release Schedules (旧 Stability & change)」 . 2018年12月15日時点のオリジナルより アーカイブ 。 2009年 6月27日 閲覧。 ^ a b Aahz; Baxter, Anthony (2001年3月15日). 「PEP 6 – バグ修正リリース」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月5日時点のオリジナルより アーカイブ。 2009年 6月27日 閲覧 。 ^ "Python Buildbot" . Python開発者ガイド . Python Software Foundation. 2020年6月5日時点のオリジナルより アーカイブ。 2011年 9月24日 閲覧 。 ^ a b 「Whetting Your Appetite」 . Pythonチュートリアル . Python Software Foundation. 2012年10月26日時点のオリジナルより アーカイブ 。 2012年 2月20日 閲覧。 ^ 「Pythonでは、ifブロック内のreturnの後にelseを使うべきでしょうか?」 Stack Overflow 、Stack Exchange、2011年2月17日。 2019年6月20日時点のオリジナルより アーカイブ。 2011年 5月6日 閲覧 。 ^ フェヒリー、クリス (2002). Python . Peachpit Press. p. xv. ISBN 978-0-201-74884-0 . 2017年7月17日時点のオリジナルよりアーカイブ 。2017年5月9日 閲覧。^ ルバノビッチ、ビル (2014). 『Python入門 』 カリフォルニア州セバストポル: オライリーメディア. p. 305. ISBN 978-1-4493-5936-2 . 2023年7月31日 閲覧 。^ Esterbrook, Charles. 「謝辞」 . cobra-language.com . Cobra Language. 2008年2月8日時点の オリジナルよりアーカイブ。 2010年 4月7日 閲覧 。 ^ “Proposals: iterators and generators [ES4 Wiki]” . wiki.ecmascript.org. 2007年10月20日時点の オリジナルよりアーカイブ 。 2008年 11月24日 閲覧。 ^ Kincaid, Jason (2009年11月10日). 「GoogleのGo:PythonとC++が融合した新しいプログラミング言語」 . TechCrunch . 2010年1月18日時点のオリジナルより アーカイブ。 2010年 1月29日 閲覧 。 ^ 「Juliaを作った理由」 Julia ウェブサイト 。2012年2月。 2020年5月2日時点のオリジナルから アーカイブ。 2014年 6月5日 閲覧 。 私たちは、Pythonと同じくらい一般的なプログラミングに使えるものを望んでいます[...] ^ "Modular Docs – Why Mojo" . docs.modular.com . 2023年5月5日時点のオリジナルより アーカイブ 。 2023年 5月5日 閲覧。 Pythonファミリーの一員としてのMojo [..] Pythonを採用することで、ほとんどの構文がすでに指定されているため、設計作業が大幅に簡素化されます。 [..] Mojoの適切な長期目標は、Pythonのスーパーセット(つまり、既存のプログラムと互換性がある)を提供し、ロングテールエコシステムを実現するためにCPythonをすぐに採用することだと判断しました。Pythonプログラマーにとって、Mojoがすぐに使い慣れたものになることを期待し、願っています。また、PythonがCやC++にフォールバックするようなことを可能にするシステムレベルのコード開発用の新しいツールも提供されます。 ^ Spencer, Michael (2023年5月4日). 「Mojoプログラミング言語とは?」 . datasciencelearningcenter.substack.com . 2023年5月5日時点のオリジナルより アーカイブ 。 2023年 5月5日 閲覧。 ^ "GDScript" . gdscript.com . 2025年 11月24日 閲覧 。
出典
さらに読む
外部リンク