Python(プログラミング言語)

ページは半保護されています

パイソン
パラダイムマルチパラダイムオブジェクト指向[ 1 ]手続き型命令型)、関数型構造化反射型
デザイン:グイド・ヴァン・ロッサム
開発者Pythonソフトウェア財団
初登場1991年2月20日[ 2 ] (1991年2月20日
安定版リリース
3.14.2 [ 3 ] ウィキデータで編集する / 2025年12月5日 (2025年12月5日
タイピングの規律Duckdynamicstrong ; [ 4 ]オプションの型注釈[ a ]
メモリ管理ガベージコレクション
OS32ビット版Windows 10およびモバイル向けegを含むクロスプラットフォーム、 AndroidおよびiOS (いずれも64ビット)[ b ]
ライセンスPythonソフトウェア財団ライセンス
ファイル名拡張子.py、.pyw、.pyz、[ 11 ] .pyi、.pyc、.pyd
Webサイトpython.org
主要な実装
CPythonPyPyMicroPythonCircuitPythonIronPythonJythonStackless Python
方言
CythonRPythonStarlark [ 12 ]
影響を受けた
ABC[ 13 ] Ada[ 14 ] ALGOL 68[ 15 ] APL[ 16 ] C[ 17 ] C++[ 18 ] CLU[ 19 ] Dylan[ 20 ] Haskell[ 21 ] [ 16 ] Icon[ 22 ] Lisp[ 23 ] Modula-3[ 15 ] [ 18 ] Perl[ 24 ]標準ML [ 16 ]
影響を受けた
Apache GroovyBooCobraCoffeeScript[ 25 ]、DF#GDScriptGoJavaScript[ 26 ] [ 27 ] 、 Julia[ 28 ] 、 Mojo[ 29 ]、NimRing[ 30 ] 、 Ruby[ 31 ]、Swift[ 32 ]、 V [ 33 ]

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 ]標準ライブラリには、HaskellStandard 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 ]
  • NOPpass (つまり、何も操作しない)として機能するステートメント。これは、構文上、空のコードブロックを作成するために必要です。
  • assert適用すべき条件をチェックするためにデバッグで使用されるステートメント
  • ジェネレータ関数(および演算子)yieldから値を返すステートメント。コルーチンを実装するために使用されます。
  • return関数から値を返すために使用されるステートメント
  • およびステートメントは、現在のプログラムで使用できる関数または変数を持つモジュールをインポートするために使用されますimportfrom
  • and文はswitch文の構造に似ており、制御フローの尺度として式を1つ以上のケースと比較しますmatchcase

代入文(=)は、名前を動的に割り当てられた別のオブジェクトへの参照として束縛します。変数はその後いつでも任意のオブジェクトに再束縛できます。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、、ornotブール演算子として使用します。
  • Pythonにはリスト内包表記と呼ばれる式と、ジェネレータ式と呼ばれるより一般的な式があります。[ 65 ]
  • 匿名関数はラムダ式を使用して実装されます。ただし、各本体には 1 つの式しか含めることができません。
  • 条件式は と書きます。[ 95 ](これは他の多くの言語に共通する演算子とはオペランドの順序が異なります。)xifcelseyc ? 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)tt
  • Pythonにはシーケンスアンパッキングという機能があり、複数の式を関連付け、それぞれが代入可能なもの(例えば変数や書き込み可能なプロパティ)に評価されるようにします。これはタプルリテラルを作成する場合と似ています。そして、その結果は代入文の等号の左側に配置されます。この文は、等号の右側にある反復可能なオブジェクトが、左側の書き込み可能な式と同じ数の値を生成することを期待しています。反復処理中、文は右側で生成された各値を、対応する左側の式に代入します。[ 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 LispSchemeRubyなどの言語とは対照的に、式と文の区別が厳格に行われています。この区別により、一部の機能が重複することがあります。例えば、次のような場合です。

  • リスト内包表記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 ]これらのアノテーションは言語によって強制されるものではありませんが、mypytypingなどの外部ツールでエラーをキャッチするために使用できます。Pythonには、型アノテーション用の複数の型名を含むモジュールが含まれています。 [ 101 ] [ 102 ]また、Mypyはmypycと呼ばれるPythonコンパイラをサポートしており、これは型アノテーションを最適化に活用します。[ 103 ]

Python 3の組み込み型の概要
タイプ 可変性説明 構文例
bool不変 ブール値TrueFalse
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.7j3+2.7j5j
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__importdivision

Python用語では、演算子は真の除算(または単に除算/を表し、 演算子は切り捨て除算を表します。バージョン3.0より前では、演算子は古典的な除算を表します。[ 108 ]///

負の無限大への丸めは、他の多くの言語とは異なる方法ではありますが、Pythonに一貫性をもたらします。例えば、この丸めは、方程式が常に真であることを意味します。また、丸めは、方程式が の正負両方の値に対して有効であることを意味します。予想通り、 の結果は半開区間[0, b )内にあります。ここでは正の整数です。しかし、方程式の有効性を維持するには、 が負の場合、結果が区間 ( b , 0]内になければなりません。[ 109 ](a+b)//b==a//b+1b*(a//b)+a%b==aaa%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を発生させます( '負でない整数を入力する必要があります' )階乗= 1iが範囲( 2 , n + 1 )場合:階乗*= i印刷(階乗)

図書館

Pythonの大規模な標準ライブラリ[ 118 ]は、その最大の強みの一つとして広く挙げられます。インターネット対応アプリケーション向けに、MIMEHTTPといった多くの標準フォーマットとプロトコルがサポートされています。この言語には、グラフィカルユーザーインターフェースの作成、リレーショナルデータベースへの接続、疑似乱数の生成、任意精度小数点による算術演算[ 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 ] 。

IDLEIPythonなどの他のシェルでは、改良された自動補完、セッション状態の保持、構文の強調表示などの追加機能が追加されています。[ 122 ] [ 123 ]

標準的なデスクトップIDEにはPyCharmSpyderVisual 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 12開発中は、OS/2Solarisもサポートされていましたが、[ 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を真にコンパイルできる実装も存在します。代替実装としては、以下のようなものがあります。

  • PyPyはPython 2.7と3.10のより高速で準拠したインタープリタです。[ 139 ] [ 140 ] PyPyのジャストインタイムコンパイラはCPythonに比べて速度が大幅に向上することが多いですが、PyPyはCで書かれた一部のライブラリをサポートしていません。 [ 141 ] PyPyはRISC-V命令セットアーキテクチャをサポートしています。
  • Codonは事前(AOT)コンパイラを使用した実装であり、静的に型付けされたPythonのような言語をコンパイルします。その「構文とセマンティクスはPythonとほぼ同じですが、いくつか注目すべき違いがあります」[ 142 ]。たとえば、Codonは速度のために64ビットのマシン整数を使用しますが、Pythonのように任意ではありません。Codonの開発者は、CPythonに比べて通常10倍から100倍の速度向上があると主張しています。Codonはマシンコードにコンパイルされ( LLVM経由)、ネイティブマルチスレッドをサポートしています。[ 143 ] CodonはPythonからインポートして使用できるPython拡張モジュールにコンパイルすることもできます。
  • MicroPythonCircuitPythonは、レゴマインドストームEV3を含むマイクロコントローラ向けに最適化されたPython 3の亜種です。[ 144 ]
  • PystonはPythonランタイムの変種であり、ジャストインタイムコンパイルを使用してPythonプログラムの実行を高速化します。[ 145 ]
  • CinderはCPython 3.8のパフォーマンス重視のフォークであり、バイトコードのインラインキャッシュ、コルーチンの積極的な評価、メソッド毎のJIT、実験的なバイトコードコンパイラなど、多くの最適化を特徴としています。[ 146 ]
  • Snek [ 147 ] [ 148 ] [ 149 ]組み込みコンピューティング言語は「Pythonにヒントを得ていますが、Pythonではありません。完全なPythonシステムで実行されるSnekプログラムを作成することは可能ですが、ほとんどのPythonプログラムはSnekでは実行されません。」[ 150 ] Snekは、 ATmega 328PベースのArduinoなどの8ビットAVRマイクロコントローラ、およびMicroPythonと互換性のあるより大型のマイクロコントローラと互換性があります。 Snekは命令型言語であり、(Pythonとは異なり)オブジェクト指向プログラミングを省略しています。 Snekは、32ビット単精度JavaScriptの数値に似ていますが、より小さい)を特徴とする1つの数値データ型のみをサポートしています。

サポートされていない実装

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 および関連する構文で使用するように設計されていないコンパイラも存在しました。

  • GoogleのGrumpyはPython 2をGoにトランスパイルします[ 160 ] [ 161 ] [ 162 ]最新リリースは2017年でした。
  • IronPythonは .NET共通言語ランタイムを使用してPython 2.7プログラムを実行できます。[ 163 ]アルファ版(2021年にリリース)は「Python 3.4」で利用可能ですが、それ以降のバージョンの機能や動作が含まれる場合があります。[ 164 ]
  • JythonはPython 2.7をJavaバイトコードにコンパイルし、PythonプログラムからJavaライブラリを使用できるようにします。[ 165 ]
  • Pyrex (最後にリリースされたのは 2010 年) とShed Skin (最後にリリースされたのは 2013 年) は、それぞれ C と C++ にコンパイルされます。

パフォーマンス

EuroSciPy '13では、非数値(組み合わせ)ワークロードを使用したさまざまなPython実装のパフォーマンス比較が発表されました。[ 166 ]さらに、Pythonの他のプログラミング言語と比較したパフォーマンスは、コンピュータ言語ベンチマークゲームによってベンチマークされています。[ 167 ]

インタプリタ言語特有の低速性にもかかわらず、Pythonのパフォーマンスを最適化する方法はいくつかあります。これらのアプローチには、以下の戦略やツールが含まれます。

  • ジャストインタイムコンパイル:Pythonプログラムの実行中にプログラムの一部を動的にコンパイルする手法。この手法は、NumbaPyPyなどのライブラリで使用されています。
  • 静的コンパイル: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の文献でよく使われるメタ構文変数は、従来のfoobarではなく、spameggsです。[ 179 ] [ 180 ]また、公式のPythonドキュメントには、Monty Pythonのルーチンへの様々な言及が含​​まれています。[ 181 ] [ 182 ] Pythonユーザーは「Pythonistas」と呼ばれることもあります。[ 183 ]

Pythonの影響を受けた言語

参照

注記

  1. ^ 3.5以降では、非公式ツールを除いてこれらのヒントは無視されます[ 5 ]
  2. ^
  3. Python の^は、 C++などの言語ではdel同じようには動作しませんでは、このような単語はデストラクタを呼び出してヒープ メモリの割り当てを解除するために使用されます。delete

参考文献

  1. ^ 「General Python FAQ – Python 3 documentation」 . docs.python.org . 2024年7月7日閲覧
  2. ^ “Python 0.9.1 part 01/21” . alt.sourcesアーカイブ. 2021年8月11日時点のオリジナルよりアーカイブ。 2021年8月11日閲覧
  3. ^ 「Python 3.14.2 と 3.13.11 が利用可能になりました!」 2025年12月5日. 2025年12月5日閲覧
  4. ^ 「なぜPythonは動的言語であり、かつ強く型付けされた言語でもあるのか」。Python Wiki2021年3月14日時点のオリジナルよりアーカイブ。 2021年1月27日閲覧
  5. ^ a b van Rossum, Guido; Levkivskyi, Ivan. 「PEP 483 – 型ヒントの理論」 . Python Enhancement Proposals (PEPs) . 2020年6月14日時点のオリジナルよりアーカイブ。 2018年6月14日閲覧
  6. ^ von Löwis, Martin; Cannon, Brett. 「PEP 11 – CPython プラットフォームサポート」 . Python 拡張提案 (PEP) . 2024年4月22日閲覧
  7. ^ "PEP 738 – サポート対象プラットフォームとして Android を追加 | peps.python.org" . Python 機能強化提案 (PEP) . 2024年5月19日閲覧
  8. ^ a b「他のプラットフォーム用のPythonをダウンロード」 Python.org 2020年11月27日時点のオリジナルよりアーカイブ2023年8月18日閲覧
  9. ^ "test – Python用回帰テストパッケージ" . Python 3.7.17ドキュメント. 2022年5月17日時点のオリジナルよりアーカイブ。 2022年5月17日閲覧
  10. ^ 「platform – 基盤となるプラットフォームの識別データへのアクセス」。Python 3.10.4 ドキュメント2022年5月17日時点のオリジナルよりアーカイブ2022年5月17日閲覧。
  11. ^ Holth, Daniel; Moore, Paul (2014年3月30日). 「PEP 0441 – Python ZIPアプリケーションサポートの改善」 . Python Enhancement Proposals (PEPs) . 2018年12月26日時点のオリジナルよりアーカイブ。 2015年11月12日閲覧
  12. ^ “Starlark Language” . bazel.build . 2020年6月15日時点のオリジナルよりアーカイブ。 2019年5月25日閲覧
  13. ^ a b「そもそもPythonはなぜ作られたのか?」 . Python全般に関するFAQ . Pythonソフトウェア財団. 2012年10月24日時点のオリジナルよりアーカイブ。 2007年3月22日閲覧私はCWIのABCグループでインタープリタ型言語の実装に豊富な経験を積み、このグループでの活動を通して言語設計について多くを学びました。これは、文のグループ化のためのインデントの使用や、非常に高水準なデータ型の組み込みなど、Pythonの多くの機能の起源となっています(ただし、Pythonでは細部はすべて異なります)。
  14. ^ “Ada 83 リファレンスマニュアル (raise ステートメント)” . archive.adaic.com . 2019年10月22日時点のオリジナルよりアーカイブ。 2020年1月7日閲覧
  15. ^ 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に由来しています。
  16. ^ a b c「itertools – 効率的なループ処理のためのイテレータを作成する関数」。Python 3.7.17 ドキュメント2020年6月14日時点のオリジナルからのアーカイブ。 2016年11月22日閲覧このモジュールは、APL、Haskell、SMLの構成要素に着想を得た、いくつかのイテレータ構成要素を実装しています。
  17. ^ van Rossum, Guido (1993). 「UNIX/CプログラマのためのPython入門」. Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group) . CiteSeerX 10.1.1.38.2023 . C言語の設計は理想からは程遠いものですが、Pythonへの影響は計り知れません。 
  18. ^ a b「クラス」 . Pythonチュートリアル. Pythonソフトウェア財団 . 2012年10月23日時点のオリジナルよりアーカイブ。 2012年2月20日閲覧これはC++とModula-3のクラスメカニズムを組み合わせたものである。
  19. ^ Lundh, Fredrik. 「Call By Object」 . effbot.org . 2019年11月23日時点のオリジナルよりアーカイブ2017年11月21日閲覧。「CLU」を「Python」、「レコード」を「インスタンス」、「プロシージャ」を「関数またはメソッド」に置き換えると、Pythonのオブジェクトモデルのかなり正確な説明が得られます。
  20. ^ Simionato, Michele. 「Python 2.3 メソッド解決順序」 . Python Software Foundation. 2020年8月20日時点のオリジナルよりアーカイブ2014年7月29日閲覧。C3メソッド自体はPythonとは何の関係もありません。これはDylanの開発者たちによって発明され、Lisper向けの論文で説明されているからです。
  21. ^ Kuchling, AM 「関数型プログラミングHOWTO」。Python v2.7.2ドキュメント。Python Software Foundation。2012年10月24日時点のオリジナルからのアーカイブ。 2012年2月9日閲覧リスト内包表記とジェネレータ式[...]は、関数型プログラミング言語Haskellから借用した、このような演算のための簡潔な表記法です。
  22. ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (2001年5月18日). 「PEP 255 – シンプルなジェネレータ」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月5日時点のオリジナルよりアーカイブ。 2012年2月9日閲覧
  23. ^ 「More Control Flow Tools」 . Python 3 ドキュメント. Python Software Foundation. 2016年6月4日時点のオリジナルからのアーカイブ。 2015年7月24日閲覧ご要望にお応えして、Lispなどの関数型プログラミング言語でよく見られる機能がいくつかPythonに追加されました。lambdaキーワードを使用すると、小さな匿名関数を作成できます。
  24. ^ 「re – 正規表現操作」 . Python 3.10.6 ドキュメント. 2018年7月18日時点のオリジナルからのアーカイブ。 2022年9月6日閲覧このモジュールは、Perlと同様の正規表現マッチング操作を提供します。
  25. ^ “CoffeeScript” . coffeescript.org . 2020年6月12日時点のオリジナルよりアーカイブ。 2018年7月3日閲覧
  26. ^ Rauschmayer, Axel (2013年2月24日). 「PerlとPythonのJavaScriptへの影響」 . 2ality.com . 2018年12月26日時点のオリジナルよりアーカイブ2015年5月15日閲覧。
  27. ^ Rauschmayer, Axel. 「第3章 JavaScriptの性質と影響」 . Speaking JavaScript . O'Reilly. 2018年12月26日時点のオリジナルよりアーカイブ。 2015年5月15日閲覧
  28. ^ Bezanson, Jeff; Karpinski, Stefan; Shah, Viral B.; Edelman, Alan (2012年2月). 「Juliaを作った理由」 . Juliaウェブサイト. 2020年5月2日時点のオリジナルよりアーカイブ. 2014年6月5日閲覧. Pythonと同じくらい汎用的なプログラミング言語が欲しい [...]
  29. ^ a b Krill, Paul (2023年5月4日). 「Mojo言語、AI開発にPythonとMLIRを融合」 InfoWorld . 2023年5月5日時点のオリジナルよりアーカイブ2023年5月5日閲覧。
  30. ^ a b Ring Team (2017年12月4日). 「Ringとその他の言語」 . ring-lang.net . ring-lang . 2018年12月25日時点のオリジナルよりアーカイブ2017年12月4日閲覧。
  31. ^ a b Bini, Ola (2007). 『実践的なJRuby on Rails Web 2.0プロジェクト:Ruby on RailsJavaプラットフォームに導入する』 . バークレー: APress. p.  3. ISBN 978-1-59059-881-8
  32. ^ 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など、数え切れないほど多くの言語からアイデアを得ています。
  33. ^ a b「V ドキュメント(概要)」 . GitHub . 2024年12月24日閲覧
  34. ^ Kuhlman, Dave. 「Python入門書:Python入門、Python上級編、Python演習」第1.1節。 2012年6月23日時点のオリジナル(PDF)からアーカイブ。
  35. ^ 「PEP 484 – 型ヒント」 . Python機能強化提案. 2025年10月27日閲覧
  36. ^ "mypy – Pythonのオプションの静的型付け" . mypy-lang.org . 2025年8月17日閲覧
  37. ^ “Stack Overflow Developer Survey 2022” . Stack Overflow . 2022年6月27日時点のオリジナルよりアーカイブ。 2022年8月12日閲覧
  38. ^ 「2020年の開発者エコシステムの現状インフォグラフィック」JetBrains2021年3月1日時点のオリジナルよりアーカイブ2021年3月5日閲覧
  39. ^ "TIOBE Index" . TIOBE. 2018年2月25日時点のオリジナルよりアーカイブ2023年1月3日閲覧。TIOBEプログラミングコミュニティインデックスは、プログラミング言語の人気度を示す指標です。必要に応じて更新されます。
  40. ^ Healy, John; McInnes, Leland; Weir, Colin (2017). 「サイバー分析ギャップの橋渡し:データサイエンスの民主化」.サイバーディフェンスレビュー. 2 (1): 109– 118. ISSN 2474-2120 . JSTOR 26267404. Pythonはデータサイエンスと機械学習の共通言語です。  
  41. ^ 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 .  
  42. ^ "TIOBE Index" . TIOBE. 2018年2月25日時点のオリジナルよりアーカイブ2023年1月3日閲覧。TIOBEプログラミングコミュニティインデックスは、プログラミング言語の人気度を示す指標です。
  43. ^ a b Venners, Bill (2003年1月13日). 「The Making of Python」 . Artima Developer . Artima. 2016年9月1日時点のオリジナルよりアーカイブ。 2007年3月22日閲覧
  44. ^ a b c van Rossum, Guido (2009年1月20日). 「A Brief Timeline of Python」 . The History of Python . 2020年6月5日時点のオリジナルよりアーカイブ。 2009年1月20日閲覧
  45. ^ van Rossum, Guido (2000年8月29日). 「SETL (以前は範囲リテラルについてぬるま湯的だった)」 . Python-Dev (メーリングリスト). 2018年7月14日時点のオリジナルよりアーカイブ。 2011年3月13日閲覧
  46. ^ Fairchild, Carlie (2018年7月12日). 「Guido van RossumがPythonの慈悲深い独裁者を終身退任」 . Linux Journal . 2018年7月13日時点のオリジナルよりアーカイブ。 2018年7月13日閲覧
  47. ^ Smith, Nathaniel J.; Durbin, Ee. 「PEP 8100 – 2019年1月運営協議会選挙」 . Python Enhancement Proposals (PEPs) . Python Software Foundation. 2020年6月4日時点のオリジナルよりアーカイブ。 2019年5月4日閲覧
  48. ^ Pythonコアチームとコミュニティ。「PEP 13 – Python言語ガバナンス」。Python機能強化提案(PEP)2021年5月27日時点のオリジナルよりアーカイブ。 2021年8月25日閲覧
  49. ^ブリッグス、ジェイソン R.;リポヴァチャ、ミラン (2013)。子供向けの Python: 遊び心あふれるプログラミング入門。米国カリフォルニア州サンフランシスコ: スターチプレスはありません。ISBN 978-1-59327-407-8LCCN  2012044047OCLC  825076499OL  26119645M
  50. ^ Kuchling, AM; Zadka, Moshe (2000年10月16日). 「What's New in Python 2.0」 . Python Software Foundation. 2012年10月23日時点のオリジナルよりアーカイブ。 2012年2月11日閲覧
  51. ^ Peterson, Benjamin. 「PEP 373 – Python 2.7 リリーススケジュール」 . python.org . 2020年5月19日時点のオリジナルよりアーカイブ。 2017年1月9日閲覧
  52. ^ Coghlan, Alyssa. 「PEP 466 – Python 2.7.x のネットワークセキュリティ強化」 . Python 機能強化提案 (PEP) . 2020年6月4日時点のオリジナルよりアーカイブ。 2017年1月9日閲覧
  53. ^ “Sunsetting Python 2” . Python.org . 2020年1月12日時点のオリジナルよりアーカイブ2019年9月22日閲覧。
  54. ^ Peterson, Benjamin. 「PEP 373 – Python 2.7 リリーススケジュール」 . Python Enhancement Proposals (PEPs) . 2020年1月13日時点のオリジナルよりアーカイブ。 2019年9月22日閲覧
  55. ^マティップ (2023 年 12 月 25 日)。「PyPy v7.3.14 リリース」ピーピー2024 年 1 月 5 日のオリジナルからアーカイブ2024 年1 月 5 日に取得
  56. ^ Peterson, Benjamin (2020年4月20日). 「Python 2.7.18、Python 2の最終リリース」 . Python Insider . 2020年4月26日時点のオリジナルよりアーカイブ。 2020年4月27日閲覧
  57. ^ 「Pythonバージョンのステータス」 . Python開発者ガイド. 2025年11月12日閲覧
  58. ^ The Cain Gang Ltd. 「Pythonメタクラス:誰が?なぜ?いつ?」(PDF) 。 2009年5月30日時点のオリジナル(PDF)からアーカイブ。 2009年6月27日閲覧
  59. ^ 「3.3. 特殊メソッド名」 . Python言語リファレンス. Python Software Foundation. 2018年12月15日時点のオリジナルよりアーカイブ2009年6月27日閲覧。
  60. ^ 「PyDBC: Pythonのメソッド事前条件、メソッド事後条件、クラス不変条件」2019年11月23日時点のオリジナルよりアーカイブ。 2011年9月24日閲覧
  61. ^ “Contracts for Python” . 2020年6月15日時点のオリジナルよりアーカイブ2011年9月24日閲覧。
  62. ^ “PyDatalog” . 2020年6月13日時点のオリジナルよりアーカイブ2012年7月22日閲覧。
  63. ^ 「Glue it all together with Python」 . Python.org . 2024年9月30日閲覧
  64. ^ 「参照カウント」。Pythonインタープリタの拡張と埋め込み。Docs.python.org 。 2012年1018日時点のオリジナルからのアーカイブ2020年6月5日閲覧。Pythonはと を頻繁に使用するため、メモリリークと解放済みメモリの再利用を回避するための戦略が必要です。ここで選択された手法は参照カウントと呼ばれます。malloc()free()}
  65. ^ a b Hettinger, Raymond (2002年1月30日). 「PEP 289 – ジェネレータ式」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月14日時点のオリジナルよりアーカイブ。 2012年2月19日閲覧
  66. ^ “6.5 itertools – 効率的なループ処理のためのイテレータを作成する関数” . Docs.python.org. 2020年6月14日時点のオリジナルよりアーカイブ2016年11月22日閲覧。
  67. ^ 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日閲覧
  68. ^ Lutz, Mark (2022年1月). 「Python changes 2014+」 . Learning Python . 2024年3月15日時点のオリジナルよりアーカイブ。 2024年2月25日閲覧
  69. ^ 「『Pythonの禅』のルールに関する混乱」" . ディスカッション. Python.org . Python ヘルプ. 2022年5月3日. 2024年2月25日時点のオリジナルよりアーカイブ。 2024年2月25日閲覧
  70. ^ Ambi, Chetan (2021年7月4日). 「最も物議を醸したPythonの「セイウチ演算子」" . Python の簡略化 (pythonsimplified.com) . 2023年8月27日時点のオリジナルよりアーカイブ。2024年2月5日閲覧。
  71. ^ Grifski, Jeremy (2020年5月24日). 「Pythonにおける『セイウチ演算子』をめぐる論争」 . The Renegade Coder (therenegadecoder.com) . 2023年12月28日時点のオリジナルよりアーカイブ。 2024年2月25日閲覧
  72. ^ 「[Python-ideas] PEP 315: do-while」 2013年6月26日。
  73. ^ Bader, Dan. 「Python 文字列フォーマットのベストプラクティスReal Python (realpython.com) . 2024年2月18日時点のオリジナルよりアーカイブ。 2024年2月25日閲覧
  74. ^ 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日閲覧。
  75. ^ "Python Culture" . ebeab . 2014年1月21日. 2014年1月30日時点のオリジナルよりアーカイブ
  76. ^ a b「PyJLを使用したPythonからJuliaへのトランスパイル」(PDF)2023年11月19日時点のオリジナルからアーカイブ(PDF) 。 2023年9月20日閲覧必要な型情報を指定してコードを1行手動で変更したところ、52.6倍の高速化が実現し、変換されたJuliaコードは元のPythonコードよりも19.5倍高速になりました。
  77. ^ 「なぜPythonと呼ばれるのか?」 . Python全般に関するFAQ . Docs.python.org. 2012年10月24日時点のオリジナルよりアーカイブ2023年1月3日閲覧。
  78. ^ 「PythonがWeb上で強力な力を発揮する15の方法」 。 2019年5月11日時点のオリジナルよりアーカイブ2018年7月3日閲覧。
  79. ^ – data pretty printer – Python 3.11.0ドキュメント” . docs.python.org . 2021年1月22日時点のオリジナルよりアーカイブ。 2022年11月5日閲覧pprintstuff = ['spam', 'eggs', 'lumberjack', 'knights', 'ni']
  80. ^ “コードスタイル” . Pythonヒッチハイクガイド. docs.python-guide.org . 2021年1月27日時点のオリジナルよりアーカイブ。 2021年1月20日閲覧
  81. ^ 「Pythonは初心者プログラマーにとって良い言語ですか?」 . Pythonに関する一般的なFAQ . Python Software Foundation. 2012年10月24日時点のオリジナルよりアーカイブ2007年3月21日閲覧。
  82. ^ 「Pythonのインデントに関する神話」 Secnetix.de。2018年2月18日時点のオリジナルよりアーカイブ2011年4月19日閲覧。
  83. ^ Guttag, John V. (2016年8月12日). Pythonを使った計算とプログラミング入門:データ理解への応用. MIT Press. ISBN 978-0-262-52962-4
  84. ^ a b van Rossum, Guido; Warsaw, Barry. 「PEP 8 – Pythonコードのスタイルガイド」 . Python拡張提案 (PEP) . 2019年4月17日時点のオリジナルよりアーカイブ。 2019年3月26日閲覧
  85. ^ “8. エラーと例外 – Python 3.12.0a0 ドキュメント” . docs.python.org . 2022年5月9日時点のオリジナルよりアーカイブ。 2022年5月9日閲覧
  86. ^ “Highlights: Python 2.5” . Python.org . 2019年8月4日時点のオリジナルよりアーカイブ2018年3月20日閲覧。
  87. ^ van Rossum, Guido (2009年4月22日). 「末尾再帰の除去」 . Neopythonic.blogspot.be. 2018年5月19日時点のオリジナルよりアーカイブ2012年12月3日閲覧。
  88. ^ van Rossum, Guido (2006年2月9日). 「言語設計はパズルを解くだけではない」 . Artimaフォーラム. Artima. 2020年1月17日時点のオリジナルよりアーカイブ。 2007年3月21日閲覧
  89. ^ van Rossum, Guido; Eby, Phillip J. (2005年5月10日). 「PEP 342 – 拡張ジェネレータによるコルーチン」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月29日時点のオリジナルよりアーカイブ。 2012年2月19日閲覧
  90. ^ "PEP 380" . Python.org. 2020年6月4日時点のオリジナルよりアーカイブ2012年12月3日閲覧。
  91. ^ "division" . python.org . 2006年7月20日時点のオリジナルよりアーカイブ。 2014年7月30日閲覧
  92. ^ “PEP 0465 – 行列乗算専用の中置演算子” . python.org . 2020年6月4日時点のオリジナルよりアーカイブ。 2016年1月1日閲覧
  93. ^ “Python 3.5.1 リリースと変更ログ” . python.org . 2020年5月14日時点のオリジナルよりアーカイブ2016年1月1日閲覧。
  94. ^ “What's New in Python 3.8” . 2020年6月8日時点のオリジナルよりアーカイブ2019年10月14日閲覧。
  95. ^ van Rossum, Guido; Hettinger, Raymond (2003年2月7日). 「PEP 308 – 条件式」 . Python Enhancement Proposals . Python Software Foundation. 2016年3月13日時点のオリジナルよりアーカイブ。 2011年7月13日閲覧
  96. ^ “4. 組み込み型 – Python 3.6.3rc1 ドキュメント” . python.org . 2020年6月14日時点のオリジナルよりアーカイブ。 2017年10月1日閲覧
  97. ^ “5.3. タプルとシーケンス – Python 3.7.1rc2 ドキュメント” . python.org . 2020年6月10日時点のオリジナルよりアーカイブ。 2018年10月17日閲覧
  98. ^ a b “PEP 498 – リテラル文字列補間” . python.org . 2020年6月15日時点のオリジナルよりアーカイブ2017年3月8日閲覧。
  99. ^ 「Python言語リファレンス、セクション3.3. 新しいスタイルと従来のクラス、リリース2.7.1用」 。 2012年10月26日時点のオリジナルよりアーカイブ。 2011年1月12日閲覧
  100. ^ "PEP 484 – Type Hints | peps.python.org" . peps.python.org . 2023年11月27日時点のオリジナルよりアーカイブ。 2023年11月29日閲覧
  101. ^ "typing — 型ヒントのサポート" . Pythonドキュメント. Python Software Foundation. 2020年2月21日時点のオリジナルよりアーカイブ。 2023年12月22日閲覧
  102. ^ 「mypy – Pythonのオプションの静的型付け」2020年6月6日時点のオリジナルよりアーカイブ2017年1月28日閲覧。
  103. ^ “Introduction” . mypyc.readthedocs.io . 2023年12月22日時点のオリジナルよりアーカイブ。 2023年12月22日閲覧
  104. ^ “15. 浮動小数点演算:問題点と制限事項 – Python 3.8.3 ドキュメント” . docs.python.org . 2020年6月6日時点のオリジナルからのアーカイブ。 2020年6月6日閲覧現在(2000年11月)のほぼすべてのマシンはIEEE-754浮動小数点演算を使用しており、ほぼすべてのプラットフォームはPythonの浮動小数点数をIEEE-754の「倍精度」にマッピングしています。
  105. ^ Zadka, Moshe; van Rossum, Guido (2001年3月11日). 「PEP 237 – 長整数と整数の統合」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月28日時点のオリジナルよりアーカイブ。 2011年9月24日閲覧
  106. ^ “Built-in Types” . 2020年6月14日時点のオリジナルよりアーカイブ2019年10月3日閲覧。
  107. ^ “PEP 465 – 行列乗算専用の中置演算子” . python.org . 2020年5月29日時点のオリジナルよりアーカイブ2018年7月3日閲覧。
  108. ^ a b Zadka, Moshe; van Rossum, Guido (2001年3月11日). 「PEP 238 – 除算演算子の変更」 . Python Enhancement Proposals . Python Software Foundation. 2020年5月28日時点のオリジナルよりアーカイブ。 2013年10月23日閲覧
  109. ^ 「なぜPythonの整数除算は切り捨てられるのか」 2010年8月24日。2020年6月5日時点のオリジナルよりアーカイブ。 2010年8月25日閲覧
  110. ^ "round"Python標準ライブラリ、リリース3.2、§2:組み込み関数2012年10月25日時点のオリジナルからアーカイブ、 2011年8月14日閲覧。
  111. ^ "round"Python標準ライブラリ、リリース2.7、§2:組み込み関数2012年10月27日時点のオリジナルからアーカイブ、 2011年8月14日閲覧。
  112. ^ Beazley, David M. (2009). Python Essential Reference (第4版). Addison-Wesley Professional. p  . 66. ISBN 978-0-672-32978-4
  113. ^カーニハン, ブライアン・W.; リッチー, デニス・M. (1988). 『プログラミング言語C』(第2版)p.  206 .
  114. ^ a b Batista, Facundo (2003年10月17日). 「PEP 327 – Decimal Data Type」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月4日時点のオリジナルよりアーカイブ。 2008年11月24日閲覧
  115. ^ 「What's New in Python 2.6」。Python v2.6.9 ドキュメント。2013年10月29日。2019年12月23日時点のオリジナルよりアーカイブ2015年9月26日閲覧。
  116. ^ 「Pythonが研究に最適である10の理由(そしてそうでないいくつかの理由) - Hoyt Koepke」ワシントン大学統計学部。 2020年5月31日時点のオリジナルよりアーカイブ。 2019年2月3日閲覧
  117. ^ Shell, Scott (2014年6月17日). 「科学計算のためのPython入門」(PDF) . 2019年2月4日時点のオリジナルよりアーカイブ(PDF) . 2019年2月3日閲覧
  118. ^ Piotrowski, Przemyslaw (2006年7月). 「Python Server PagesとOracle向けの迅速なWeb開発環境の構築」 . Oracle Technology Network . Oracle. 2019年4月2日時点のオリジナルよりアーカイブ2012年3月12日閲覧。
  119. ^ 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日閲覧
  120. ^ “PyPI” . PyPI . 2025年3月13日. 2025年2月22日時点のオリジナルよりアーカイブ。
  121. ^ 「用語集: インタラクティブ」 . Pythonドキュメント. v3.13.7 . 2025年8月31日閲覧
  122. ^ a b「IDLE — Python エディタとシェル」 . Python ドキュメント. v3.13.7 . 2025年8月31日閲覧。IDLEは Python の統合開発学習環境です。
  123. ^ 「IPythonドキュメント」 v9.5.0。2025年8月29日。2025年8月31日時点のオリジナルよりアーカイブ2025年8月31日閲覧。
  124. ^ 「Visual Studio CodeでのPython」 code.visualstudio.com . 2025年12月1日閲覧
  125. ^ “Project Jupyter” . Jupyter.org . 2023年10月12日時点のオリジナルよりアーカイブ2025年4月2日閲覧。
  126. ^ Harper, Doug (2024年春). "Enthought Canopy" . WKU Physics 316. Western Kentucky University . 2024年8月18日時点のオリジナルよりアーカイブ。 2025年8月31日閲覧
  127. ^ “Enthought Canopy” . Enthought . 2017年7月15日時点のオリジナルよりアーカイブ2016年8月20日閲覧。
  128. ^ “PEP 7 – Cコードのスタイルガイド | peps.python.org” peps.python.org . 2022年4月24日時点のオリジナルよりアーカイブ2022年4月28日閲覧
  129. ^ “4. CおよびC++拡張機能のビルド – Python 3.9.2ドキュメント” . docs.python.org . 2021年3月3日時点のオリジナルよりアーカイブ。 2021年3月1日閲覧
  130. ^ van Rossum, Guido (2001年6月5日). 「PEP 7 – Cコードのスタイルガイド」 . Python拡張提案. Pythonソフトウェア財団. 2020年6月1日時点のオリジナルよりアーカイブ。 2008年11月24日閲覧
  131. ^ 「CPython バイトコード」 . Docs.python.org. 2020年6月5日時点のオリジナルよりアーカイブ2016年2月16日閲覧。
  132. ^ 「Python 2.5 内部構造」(PDF)2012年8月6日時点のオリジナルよりアーカイブ(PDF) 。 2011年4月19日閲覧
  133. ^ “Changelog – Python 3.9.0 ドキュメント” . docs.python.org . 2021年2月7日時点のオリジナルよりアーカイブ2021年2月8日閲覧。
  134. ^ “Download Python” . Python.org . 2020年12月8日時点のオリジナルよりアーカイブ。 2020年12月13日閲覧
  135. ^ “history [vmspython]” . www.vmspython.org . 2020年12月2日時点のオリジナルよりアーカイブ。 2020年12月4日閲覧
  136. ^ 「Guido van Rossumへのインタビュー」 Oreilly.com。2014年7月16日時点のオリジナルよりアーカイブ2008年11月24日閲覧。
  137. ^ a b cペレイラ、ルイ;コウト、マルコ。リベイロ、フランシスコ。ルア、ルイ。クーニャ、ジャコム。フェルナンデス、ジョアンパウロ。ジョアン州サライバ(2017年10月23日)。「プログラミング言語間のエネルギー効率: エネルギー、時間、メモリはどのように関係しているのでしょうか?」ソフトウェア言語エンジニアリングに関する第 10 回 ACM SIGPLAN 国際会議の議事録。 SLE 2017。米国ニューヨーク州ニューヨーク: コンピューティング機械協会。 pp.  256–267土井10.1145/3136014.3136031ISBN 978-1-4503-5525-4
  138. ^ 「PyInstaller の機能とその仕組み」
  139. ^ “PyPyの互換性” . Pypy.org. 2020年6月6日時点のオリジナルよりアーカイブ2012年12月3日閲覧。
  140. ^ Team, The PyPy (2019年12月28日). 「ダウンロードとインストール」 . PyPy . 2022年1月8日時点のオリジナルよりアーカイブ。 2022年1月8日閲覧
  141. ^ 「CPythonとPypyの速度比較」 Speed.pypy.org。2021年5月10日時点のオリジナルよりアーカイブ2012年12月3日閲覧。
  142. ^ “Codon: Pythonとの違い” . 2023年5月25日時点のオリジナルよりアーカイブ2023年8月28日閲覧。
  143. ^ Lawson, Loraine (2023年3月14日). 「MITが開発したコンパイラがPythonコードを高速化」 . The New Stack . 2023年4月6日時点のオリジナルよりアーカイブ2023年8月28日閲覧。
  144. ^ "Python-for-EV3" . LEGO Education . 2020年6月7日時点のオリジナルよりアーカイブ。 2019年4月17日閲覧
  145. ^ Yegulalp, Serdar (2020年10月29日). 「Pystonが復活、Pythonの高速化に貢献」 InfoWorld . 2021年1月27日時点のオリジナルよりアーカイブ。 2021年1月26日閲覧
  146. ^ 「cinder: Instagram のパフォーマンス重視の CPython フォーク」 GitHub . 2021年5月4日時点のオリジナルよりアーカイブ。 2021年5月4日閲覧
  147. ^ Aroca, Rafael (2021年8月7日). 「Snek Lang: ArduinosでPythonのような感覚」 Yet Another Technology Blog . 2024年1月5日時点のオリジナルよりアーカイブ2024年1月4日閲覧。
  148. ^ Aufranc (CNXSoft), Jean-Luc (2020年1月16日). 「SnekboardがCircuitPythonまたはSnekプログラミング言語でLEGO Power Functionsを制御(クラウドファンディング)– CNX Software」 . CNX Software – 組み込みシステムニュース. 2024年1月5日時点のオリジナルよりアーカイブ。 2024年1月4日閲覧
  149. ^ Kennedy (@mkennedy), Michael. 「Gitで有名かどうか調べる準備はできましたか?」 pythonbytes.fm . 2024年1月5日時点のオリジナルよりアーカイブ2024年1月4日閲覧。
  150. ^ Packard, Keith (2022年12月20日). 「Snekプログラミング言語:Pythonにインスパイアされた組み込みコンピューティング言語」(PDF) . 2024年1月4日時点のオリジナルよりアーカイブ(PDF) . 2024年1月4日閲覧
  151. ^ 「アプリケーションレベルのスタックレス機能 - PyPy 2.0.2ドキュメント」 . Doc.pypy.org. 2020年6月4日時点のオリジナルよりアーカイブ2013年7月17日閲覧。
  152. ^ 「Pythonの最適化計画」 Google Project Hosting 2009年12月15日. 2016年4月11日時点のオリジナルよりアーカイブ。 2011年9月24日閲覧
  153. ^ 「Nokia N900上のPython」。Stochastic Geometry。2010年4月29日。2019年6月20日時点のオリジナルよりアーカイブ。 2015年7月9日閲覧
  154. ^ “Brython” . brython.info . 2018年8月3日時点のオリジナルよりアーカイブ。 2021年1月21日閲覧
  155. ^ “Transcrypt – Python in the browser” . transcrypt.org . 2018年8月19日時点のオリジナルよりアーカイブ2020年12月22日閲覧。
  156. ^ 「Transcrypt: PythonからJavaScriptへのコンパイラの解剖学」 InfoQ 2020年12月5日時点のオリジナルよりアーカイブ2021年1月20日閲覧
  157. ^ “Nuitka Home | Nuitka Home” . nuitka.net . 2020年5月30日時点のオリジナルよりアーカイブ。 2017年8月18日閲覧
  158. ^ 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 . 
  159. ^ “The Python → 11l → C++ transpiler” . 2022年9月24日時点のオリジナルよりアーカイブ2022年7月17日閲覧。
  160. ^ “google/grumpy” . 2020年4月10日. 2020年4月15日時点のオリジナルよりアーカイブ2020年3月25日閲覧– GitHub経由。
  161. ^ “プロジェクト” . opensource.google . 2020年4月24日時点のオリジナルよりアーカイブ2020年3月25日閲覧。
  162. ^ Francisco, Thomas Claburn in San. "Google's Grumpy code makes Python Go" . www.theregister.com . 2021年3月7日時点のオリジナルよりアーカイブ。 2021年1月20日閲覧
  163. ^ “IronPython.net /” . ironpython.net . 2021年4月17日時点のオリジナルよりアーカイブ。
  164. ^ 「GitHub – IronLanguages/ironpython3: Dynamic Language Runtime をベースに構築された .NET Framework 向け Python 3.x の実装」 GitHub . 2021年9月28日時点のオリジナルよりアーカイブ。
  165. ^ “Jython FAQ” . www.jython.org . 2021年4月22日時点のオリジナルよりアーカイブ2021年4月22日閲覧。
  166. ^ Murri, Riccardo (2013).非数値科学コードにおけるPythonランタイムのパフォーマンス. European Conference on Python in Science (EuroSciPy). arXiv : 1404.6388 . Bibcode : 2014arXiv1404.6388M .
  167. ^ “The Computer Language Benchmarks Game” . 2020年6月14日時点のオリジナルよりアーカイブ2020年4月30日閲覧。
  168. ^ Python、Real. 「ママ、forループは不要:NumPyを使った配列プログラミング - Real Python」realpython.com . 2025年10月15日閲覧
  169. ^ 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日閲覧
  170. ^ Cannon, Brett. 「Guido、仲間たち、そしてメーリングリスト:Pythonの開発方法」 . python.org . Python Software Foundation. 2009年6月1日時点のオリジナルよりアーカイブ。 2009年6月27日閲覧
  171. ^ Edge, Jake (2022年2月23日). “Moving Python's bugs to GitHub [LWN.net]” . 2022年10月2日時点のオリジナルよりアーカイブ。 2022年10月2日閲覧
  172. ^ “Python Developer's Guide – Python Developer's Guide” . devguide.python.org . 2020年11月9日時点のオリジナルよりアーカイブ2019年12月17日閲覧。
  173. ^ Hughes, Owen (2021年5月24日). 「プログラミング言語:Python 4.0が開発者によると登場しないかもしれない理由」 . TechRepublic . 2022年7月14日時点のオリジナルよりアーカイブ。 2022年5月16日閲覧
  174. ^ 「PEP 602 – Pythonの年次リリースサイクル」Python.org . 2020年6月14日時点のオリジナルよりアーカイブ2019年11月6日閲覧。
  175. ^ Edge, Jake (2019年10月23日). 「Pythonのリリース周期の変更 [LWN.net]」 . lwn.net . 2019年11月6日時点のオリジナルよりアーカイブ。 2019年11月6日閲覧
  176. ^ Norwitz, Neal (2002年4月8日). 「[Python-Dev] Release Schedules (旧 Stability & change)」 . 2018年12月15日時点のオリジナルよりアーカイブ2009年6月27日閲覧。
  177. ^ a b Aahz; Baxter, Anthony (2001年3月15日). 「PEP 6 – バグ修正リリース」 . Python Enhancement Proposals . Python Software Foundation. 2020年6月5日時点のオリジナルよりアーカイブ。 2009年6月27日閲覧
  178. ^ "Python Buildbot" . Python開発者ガイド. Python Software Foundation. 2020年6月5日時点のオリジナルよりアーカイブ。 2011年9月24日閲覧
  179. ^ a b「Whetting Your Appetite」 . Pythonチュートリアル. Python Software Foundation. 2012年10月26日時点のオリジナルよりアーカイブ2012年2月20日閲覧。
  180. ^ 「Pythonでは、ifブロック内のreturnの後にelseを使うべきでしょうか?」 Stack Overflow、Stack Exchange、2011年2月17日。2019年6月20日時点のオリジナルよりアーカイブ。 2011年5月6日閲覧
  181. ^ Lutz 2013、17ページ。
  182. ^フェヒリー、クリス (2002). Python . Peachpit Press. p. xv. ISBN 978-0-201-74884-0. 2017年7月17日時点のオリジナルよりアーカイブ。2017年5月9日閲覧。
  183. ^ルバノビッチ、ビル (2014). 『Python入門』 カリフォルニア州セバストポル: オライリーメディア. p. 305. ISBN 978-1-4493-5936-2. 2023年7月31日閲覧
  184. ^ Esterbrook, Charles. 「謝辞」 . cobra-language.com . Cobra Language. 2008年2月8日時点のオリジナルよりアーカイブ。 2010年4月7日閲覧
  185. ^ “Proposals: iterators and generators [ES4 Wiki]” . wiki.ecmascript.org. 2007年10月20日時点のオリジナルよりアーカイブ2008年11月24日閲覧。
  186. ^ Kincaid, Jason (2009年11月10日). 「GoogleのGo:PythonとC++が融合した新しいプログラミング言語」 . TechCrunch . 2010年1月18日時点のオリジナルよりアーカイブ。 2010年1月29日閲覧
  187. ^ 「Juliaを作った理由」 Juliaウェブサイト。2012年2月。2020年5月2日時点のオリジナルからアーカイブ。 2014年6月5日閲覧私たちは、Pythonと同じくらい一般的なプログラミングに使えるものを望んでいます[...]
  188. ^ "Modular Docs – Why Mojo" . docs.modular.com . 2023年5月5日時点のオリジナルよりアーカイブ2023年5月5日閲覧。Pythonファミリーの一員としてのMojo [..] Pythonを採用することで、ほとんどの構文がすでに指定されているため、設計作業が大幅に簡素化されます。 [..] Mojoの適切な長期目標は、Pythonのスーパーセット(つまり、既存のプログラムと互換性がある)を提供し、ロングテールエコシステムを実現するためにCPythonをすぐに採用することだと判断しました。Pythonプログラマーにとって、Mojoがすぐに使い慣れたものになることを期待し、願っています。また、PythonがCやC++にフォールバックするようなことを可能にするシステムレベルのコード開発用の新しいツールも提供されます。
  189. ^ Spencer, Michael (2023年5月4日). 「Mojoプログラミング言語とは?」 . datasciencelearningcenter.substack.com . 2023年5月5日時点のオリジナルよりアーカイブ2023年5月5日閲覧。
  190. ^ "GDScript" . gdscript.com . 2025年11月24日閲覧

出典

さらに読む