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

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

Python
Python-logo-notext.svg
パラダイムマルチパラダイムオブジェクト指向[1] 手続き必須)、機能型構造化型反射型
によって設計されたグイドヴァンロッサム
デベロッパーPython Software Foundation
初登場1991年2月20日; 30年前[2] (1991-02-20
安定リリース
3.10.0 [3] ウィキデータでこれを編集する / 2021年10月4日; 21日前 (202110月4日
プレビューリリース
3.11.0a1 [4] ウィキデータでこれを編集する / 2021年10月7日; 18日前 (202110月7日
規律の入力アヒルダイナミック強い型付け; [5] 段階的(3.5以降、CPythonでは無視されます[6]
OSWindowsLinux / UNIXmacOSなど[7]
ライセンスPython SoftwareFoundationライセンス
ファイル名拡張子.py、.pyi、.pyc、.pyd、.pyo(3.5より前)、[8] .pyw、.pyz(3.5以降)[9]
Webサイトwww .python .org
主要な実装
CPythonPyPyStackless PythonMicroPythonCircuitPythonIronPythonJython
方言
CythonRPythonStarlark [10]
に影響を受けた
ABC[11] Ada[12] ALGOL 68[13] APL[14] C[15] C ++[16] CLU[17] Dylan[18] Haskell[19] Icon[20 ] Java[21] Lisp[22] Modula-3[16] PerlStandard ML [14]
影響を受ける
Apache GroovyBooCobraCoffeeScript[23] DF#Genie[24] GoJavaScript[25] [26] Julia[27] Nim、Ring、[28] Ruby[29] Swift [ 30]

Pythonは、インタプリタされた 高級 汎用プログラミング言語です。その設計哲学は重要なインデントを使用してコードの可読性強調しています。その言語構造オブジェクト指向アプローチはプログラマーが小規模および大規模プロジェクト向けの明確で論理的なコードを作成できるようにすることを目的としています[31]

Pythonは動的に型指定されガベージコレクションされます。構造化(特に手続き型)、オブジェクト指向、関数型プログラミングなど、複数のプログラミングパラダイムをサポートします。包括的な標準ライブラリがあるため、「バッテリーを含む」言語として説明されることがよくあります[32]

Guido van Rossumは、ABCプログラミング言語の後継として1980年代後半にPythonの開発を開始し、1991年にPython0.9.0として最初にリリースしました。[33] Python 2.0は2000年にリリースされ、リスト内包表記参照カウントを使用したガベージコレクションシステムなどの新機能が導入されましたPython 3.0は2008年にリリースされ、完全な下位互換性がない言語のメジャーリビジョンでしたPython 2は、2020年にバージョン2.7.18で廃止されました。[34]

Pythonは、一貫して最も人気のあるプログラミング言語の1つとしてランク付けされています。[35] [36] [37] [38]

歴史

Pythonの、のデザイナーグイド・ヴァンロッサムで、OSCON 2006

Pythonのは、1980年代後半に考案された[39]によってグイド・ヴァンロッサムリウムWiskunde&インフォで(CWI)オランダの後継として ABCプログラミング言語に触発された、SETL[40]の可能な例外処理ととインターフェースAmoebaオペレーティングシステム。[11]その実装は1989年12月に始まりました。[41]ヴァンロッサムは、Pythonの「慈悲深い独裁者」としての責任から「永久休暇」を発表した2018年7月12日まで、リード開発者としてプロジェクトの唯一の責任を負いました。"、プロジェクトの最高意思決定者としての彼の長期的なコミットメントを反映するためにPythonコミュニティが彼に与えた称号。[42] 2019年1月、アクティブなPythonコア開発者はプロジェクトを主導するために5人のメンバーからなる「ステアリングカウンシル」を選出しました。[43] [44]

Python 2.0は2000年10月16日にリリースされ、サイクル検出 ガベージコレクターUnicodeのサポートなど、多くの主要な新機能が追加されました[45]

Python 3.0は2008年12月3日にリリースされました。これは言語のメジャーリビジョンであり、完全な下位互換性はありません[46]その主要な機能の多くは、Python 2.6.x [47]および2.7.xバージョンシリーズにバックポートされました。 Python 3のリリースには、Python2コードからPython3への変換を自動化するユーティリティが含まれています。[48]2to3

Python 2.7の保守終了日は当初2015年に設定されていましたが、既存のコードの大部分をPython3に簡単に転送できないことを懸念して2020年に延期されました。[49] [50] これ以上のセキュリティパッチはありませんまたは他の改善がリリースされます。[51] [52] Python 2のサポート終了時には、Python 3.6.x [53]以降のみがサポートされます。

Python 3.9.2および3.8.8は、Pythonのすべてのバージョン(2.7 [55]を含む)にセキュリティの問題があり、リモートコード実行[56]およびWebキャッシュポイズニングの可能性につながるため、迅速化されました[54][57]

デザイン哲学と機能

Pythonはマルチパラダイムプログラミング言語です。オブジェクト指向プログラミング構造化プログラミングは完全にサポートされており、その機能の多くは関数型プログラミングとアスペクト指向プログラミングメタプログラミング[58]メタオブジェクト(マジックメソッド)を含む)をサポートしています[59]契約による設計[60] [61]論理プログラミングなど、他の多くのパラダイムが拡張機能を介してサポートされています[62]

Pythonは、動的型付けと、参照カウントとサイクル検出ガベージコレクターの組み合わせメモリ管理に使用します。[63]また、プログラムの実行中にメソッド名と変数名をバインドする動的名前解決遅延バインディングも備えています

Pythonの設計は、Lispの伝統における関数型プログラミングのサポートを提供しますfiltermapおよびreduce機能あります。リスト内包辞書、セット、およびジェネレータ式。[64]標準ライブラリにはHaskellStandard MLから借用した関数型ツールを実装する2つのモジュール(itertoolsfunctools)があります[65]

この言語のコア哲学は、次のような格言を含むドキュメントThe Zen of PythonPEP 20)に要約されています[66]

  • 醜いより美しい方がいい。
  • 明示的は暗黙的よりも優れています。
  • 単純な方が複雑よりも優れています。
  • 複雑なものは複雑なものよりも優れています。
  • 読みやすさが重要です。

Pythonは、そのすべての機能をコアに組み込むのではなく、(モジュールを使用して)高度に拡張できるように設計されています。このコンパクトなモジュール性により、既存のアプリケーションにプログラム可能なインターフェイスを追加する手段として特に人気があります。ヴァンロッサムの大きな標準ライブラリと簡単に拡張可能なインタプリタを備えた小さなコア言語のビジョンは、反対のアプローチを支持したABCに対する彼の欲求不満から生じました[39]包括的な標準ライブラリのため、「バッテリーを含む」言語として説明されることがよくあります[67]

Pythonは、開発者にコーディング方法の選択肢を提供しながら、よりシンプルで整理された構文と文法を目指しています。Perlの「それを行うには複数の方法がある」というモットーと対照的に、Pythonは「それを行うための明白な方法は1つ、できれば1つだけでなければならない」という設計哲学を採用しています。[66] アレックスマルテッリフェローはPython Software FoundationのとPython本の著者は、と書いている「『賢い』として何かを記述するためにはされていないPythonの文化の中で賛辞と考えます。」[68]

Pythonの開発者は、時期尚早な最適化を回避しCPythonリファレンス実装の重要でない部分へのパッチを拒否するよう努めています[69]速度が重要な場合、Pythonプログラマーは、タイムクリティカルな関数をCなどの言語で記述された拡張モジュールに移動したりジャストインタイムコンパイラであるPyPyを使用したりできますCythonも利用できます。これは、PythonスクリプトをCに変換し、Pythonインタープリターに直接CレベルのAPI呼び出しを行います。

Pythonの開発者は、この言語を楽しく使用できるようにすることを目指しています。これは英国のコメディーグループにその名前トリビュートに反映されているモンティパイソン[70] -およびそのようなスパムや卵(参照を参照して例としてチュートリアルや参考資料に時々遊び心のあるアプローチでモンティパイソンスケッチの代わりに)標準のfooとbarの[71] [72]

一般的な造語Pythonコミュニティではある神託のプログラムのスタイルに関連する意味の広い範囲を持つことができました。コードがPythonicであると言うことは、Pythonイディオムをうまく使用していること、自然であるか言語に堪能であること、Pythonの最小限の哲学に準拠し、読みやすさを重視していることを意味します。対照的に、理解するのが難しいコードや、別のプログラミング言語からの大まかな文字起こしのように読むコードは、unpythonicと呼ばれます[73] [74]

Pythonのユーザーやファン、特に知識が豊富または経験豊富なユーザーやファンは、Pythonistasと呼ばれることがよくあります。[75] [76]

構文とセマンティクス

Pythonは、読みやすい言語であることが意図されています。そのフォーマットは視覚的に整頓されており、他の言語が句読点を使用する場合、英語のキーワードを使用することがよくあります。他の多くの言語とは異なり、ブロックを区切るために中括弧使用せず、ステートメントの後のセミコロンは許可されますが、使用されることはめったにありません。CPascalよりも構文上の例外や特殊なケースが少なくなっています。[77]

インデント

Pythonは中括弧やキーワードではなく、空白のインデントを使用してブロックを区切りますインデントの増加は、特定のステートメントの後に発生します。インデントの減少は、現在のブロックの終わりを意味します。[78]したがって、プログラムの視覚的構造は、プログラムの意味的構造を正確に表します。[79]この機能は、他のいくつかの言語が共有するオフサイドルールと呼ばれることもありますが、ほとんどの言語では、インデントには意味的な意味がありません。推奨されるインデントサイズは4スペースです。[80]

ステートメントと制御フロー

Pythonのステートメントには(とりわけ)次のものが含まれます。

  • 割り当てシングル等号を使用して文、=
  • if条件付きと一緒に、コードのブロックを実行声明、elseおよびelif(他-IFの収縮)。
  • for取り付けブロックによる使用のためにローカル変数に各要素を取り込む、反復可能オブジェクトにわたって繰り返し処理文。
  • while限り、その条件が真であるように、コードのブロックを実行文。
  • tryその付加されたコードブロックに発生した例外がキャッチとによって処理されることを可能にする文、except句。またfinally、ブロックの終了方法に関係なくブロック内のクリーンアップコードが常に実行されるようにします。
  • raise指定された例外またはリレイズキャッチ例外を発生させるために使用される文。
  • classそのローカル名前空間をコードのブロックを実行し、添付書、クラスオブジェクト指向プログラミングで使用するために、。
  • def定義文で、機能方法を
  • with(取得、例えば、コンテキストマネージャ内のコードブロックを囲むステートメント、ロックコードのブロックを実行する前に、その後にロックを解除する、または開くファイルを可能に、それを閉じ、その後など)リソース買収され、初期化(RAII)のような動作であり、一般的なtry / finallyイディオムに置き換わるものです。[81]
  • break文は、ループから抜けます。
  • continue声明は、この反復をスキップし、次の項目を続行します。
  • del文は、値の名前から参照が削除され、その変数を使用しようとするとエラーになります意味変数を、削除します。削除された変数は再割り当てできます。
  • pass機能声明、NOP空のコードブロックを作成するには、構文的に必要です。
  • assert文は、適用すべき条件を確認するために、デバッグ時に使用します。
  • yield値を返すステートメント、発電機能とyield、オペレータです。このフォームは、コルーチンを実装するために使用されます。
  • return関数から値を返すために使用される文。
  • importその関数や変数、現在のプログラムで使用可能なインポートモジュールに使用されている文。

割り当てステートメント(=)は、動的に割り当てられた個別のオブジェクトへの参照として名前をバインドすることによって機能します。その後、変数はいつでも任意のオブジェクトにリバウンドできます。 Pythonでは、変数名はジェネリック参照ホルダーであり、固定データ型は関連付けられていません。しかし、与えられた時間に、変数が参照されますいくつかの種類がありますオブジェクト、。これは動的型付け呼ばれ静的型付けされたプログラミング言語とは対照的です。静的型付けされたプログラミング言語では、各変数に特定の型の値のみが含まれる場合があります。

Pythonは末尾呼び出しの最適化やファーストクラスの継続をサポートしておらず、Guido van Rossumによると、サポートすることはありません。[82] [83]ただし、Pythonのジェネレーターを拡張することにより、コルーチンのような機能のサポートが向上します。[84] 2.5以前は、ジェネレーターは怠惰なイテレーターでした。情報はジェネレーターから一方向に渡されました。Python 2.5からは、情報をジェネレーター関数に戻すことができ、Python 3.3からは、情報を複数のスタックレベルに渡すことができます。[85]

一部のPythonは、CやJavaなどの言語で見られるものと似ていますが、そうでないものもあります。

  • 足し算、引き算、掛け算は同じですが、割り算の振る舞いが異なります。Pythonには2つのタイプの分割があります。それらは、フロア除算(または整数除算)//と浮動小数点/除算です。[86] Pythonは、**べき乗に演算子を使用します。
  • Python 3.5から、新しい@中置演算子が導入されました。これは行列乗算のためにNumPyなどのライブラリで使用することを目的としています[87] [88]
  • Python 3.8から:=、「walrus演算子」と呼ばれる構文が導入されました。より大きな式の一部として変数に値を割り当てます。[89]
  • Pythonでは、==比較します。Javaは、数値を値で比較し[90]、オブジェクトを参照で比較します。[91](Javaでのオブジェクトの値の比較は、このequals()メソッドをis使用して実行できます。)Pythonの演算子を使用して、オブジェクトのIDを比較できます(参照による比較)。Pythonでは、たとえば、比較を連鎖させることができますa <= b <= c
  • Pythonは言葉を使用してandornotその論理演算子ではなく、シンボリックため&&||!JavaおよびCで使用します
  • Pythonには、リスト内包表記と呼ばれるタイプの式と、ジェネレーターと呼ばれるより一般的な式があります[64]
  • 匿名関数ラムダ式を使用して実装されます; ただし、これらは、ボディが1つの式にしかできないという制限があります。
  • Pythonの条件式は、[92]として記述されています他の多くの言語に共通演算子とはオペランドの順序が異なります)。x if c else yc ? x : y
  • Pythonは、リストタプルを区別します。リストはとして記述され、変更可能であり、辞書のキーとして使用することはできません(辞書キーはPythonでは不変である必要があります)。タプルはとして記述され、不変であるため、タプルのすべての要素が不変であれば、辞書のキーとして使用できます。オペレータが直接その内容を変更するのではなく、両方に設けられたタプルの要素を含む新しいタプルを生成しない2つのタプルを連結するために使用することができます。したがって、可変所与最初に等しい実行、まず評価した収率、次いでバックに割り当てられ、[1, 2, 3](1, 2, 3)+t(1, 2, 3)t = t + (4, 5)t + (4, 5)(1, 2, 3, 4, 5)t、これによりt、タプルオブジェクトの不変の性質に準拠しながら、のコンテンツを効果的に「変更」します。括弧は、明確なコンテキストのタプルではオプションです。[93]
  • Pythonはシーケンスアンパックを特徴としており、それぞれが割り当て可能なもの(変数、書き込み可能なプロパティなど)に評価される複数の式が、タプルリテラルを形成するのと同じ方法で関連付けられ、全体として、代入ステートメントの等号の左側。このステートメントは、等号の右側に反復可能なオブジェクトを想定しており、反復すると、提供された書き込み可能な式と同じ数の値を生成し、反復して、生成された各値を左側の対応する式に割り当てます。 。[94]
  • Pythonには「文字列形式」演算子があり%ます。これprintfは、Cで文字列フォーマットするのと同様に機能しますたとえば、に評価されます。Python 3および2.6以降では、これはクラスメソッドによって補完されていましたPython 3.6は「f-strings」を追加しました:[95]"spam=%s eggs=%d" % ("blah", 2)"spam=blah eggs=2"format()str"spam={0} eggs={1}".format("blah", 2)blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
  • Pythonの文字列は文字列を「追加」することで連結できます(整数と浮動小数点数の追加と同じ演算子)。たとえば、を返します文字列に数値が含まれている場合でも、整数ではなく文字列として追加されます。たとえば、を返します"spam" + "eggs""spameggs""2" + "2""22"
  • Pythonにはさまざまな種類の文字列リテラルがあります
    • 一重引用符または二重引用符で区切られた文字列。UnixシェルPerlおよびPerlの影響を受ける言語とは異なり、一重引用符と二重引用符は同じように機能します。どちらの種類の文字列\も、エスケープ文字として円記号()を使用します文字列補間は、Python3.6で「フォーマットされた文字列リテラル」として使用できるようになりました。[95]
    • 一連の3つの一重引用符または二重引用符で開始および終了する三重引用符で囲まれた文字列。それらは複数の行にまたがり、シェル、Perl、Rubyのヒアドキュメントのように機能する場合があります
    • 文字列リテラルの前にr。を付けることで示される、生の文字列の種類。エスケープシーケンスは解釈されません。したがって、生の文字列は、正規表現Windowsスタイルのパスなど、リテラルの円記号が一般的な場合に役立ちます。C#の@-quoting」を比較してください
  • Pythonは持っている配列のインデックス配列スライスと表記リストの式を、a[key]または。インデックスはゼロベースであり、負のインデックスは末尾を基準にしています。スライスは、開始インデックスから停止インデックスまでの要素を取りますが、これは含まれませんステップまたはストライドと呼ばれる3番目のスライスパラメータを使用すると、要素をスキップして元に戻すことができます。スライスインデックスは省略できます。たとえば、リスト全体のコピーを返します。スライスの各要素は浅いコピーです。a[start:stop]a[start:stop:step]a[:]

Pythonでは、Common LispSchemeRubyなどの言語とは対照的に、式とステートメントの区別が厳密に適用されます。これにより、一部の機能が複製されます。例えば:

  • リスト内包forループ
  • 条件式とifブロック
  • eval()exec()組み込み関数(Pythonの2で、exec文です)。前者は式用、後者はステートメント用です。

ステートメントを式の一部にすることはできないため、リスト内包表記またはラムダ式はすべて式であり、ステートメントを含めることはできません。この特定のケースは、などの代入ステートメントが条件ステートメントの条件式の一部を形成できない場合です。これには、条件で代入演算子を等式演算子と間違えるという古典的なCエラーを回避できるという利点があります。構文的には有効ですが(おそらく意図しない)Cコードですが、Pythonでは構文エラー発生します。 a = 1===if (c = 1) { ... }if c = 1: ...

メソッド

オブジェクトのメソッド、オブジェクトのクラスにアタッチされた関数です。構文は、通常のメソッドと関数の場合、の構文糖衣です。 Pythonメソッドには、他のオブジェクト指向プログラミング言語(C ++、Java、Objective-CRubyなど)の暗黙的なself(またはとは対照的に、インスタンスデータにアクセスするための明示的なパラメーターがあります[96] これとは別に、Pythonはしばしばdunderメソッドと呼ばれるメソッドも提供しますinstance.method(argument)Class.method(instance, argument)selfthis(名前が二重アンダースコアで始まり、二重アンダースコアで終わるため)、ユーザー定義クラスが、長さ、比較、算術演算、型変換などのネイティブ演算による処理方法を変更できるようにします。[97]

入力

Python3の標準の型階層

Pythonはダックタイピング使用し、オブジェクトは入力されていますが、変数名は入力されていません。型制約はコンパイル時にチェックされません。むしろ、オブジェクトに対する操作が失敗する可能性があり、指定されたオブジェクトが適切なタイプではないことを示します。動的に型付けされているもかかわらず、Pythonは強く型付けされており、明確に定義されていない操作(たとえば、文字列に数値を追加する)を黙って理解しようとするのではなく、禁止しています。

Pythonを使用すると、プログラマークラスを使用して独自の型を定義できます。クラスはオブジェクト指向プログラミングで最もよく使用されますクラスの新しいインスタンスは、クラス(たとえば、またはを呼び出すことによって構築され、クラスはメタクラスのインスタンス(それ自体がそれ自体のインスタンス)であり、メタプログラミングとリフレクションを可能にます。 SpamClass()EggsClass() type

バージョン3.0より前のPythonには、古いスタイル新しいスタイルの2種類のクラスがありました[98]両方のスタイルの構文は同じですが、クラスobjectが直接または間接のどちらから継承されるかが異なります(すべての新しいスタイルのクラスはから継承されobject、のインスタンスですtype)。 Python2.2以降のバージョンのPython2では、両方の種類のクラスを使用できます。古いスタイルのクラスはPython3.0で削除されました。

長期的な計画は漸進的型付け[99]をサポートすることであり、Python 3.5以降、言語の構文では静的型を指定できますが、デフォルトの実装であるCPythonではチェックされませんmypyという名前の実験的なオプションの静的型チェッカーは、コンパイル時の型チェックをサポートします。[100]

Python3の組み込み型の概要
タイプ 可変性 説明 構文例
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.7j
3 + 2.7j
dict 可変 キーと値のペアの連想配列(または辞書)。混合型(キーと値)を含めることができ、キーはハッシュ可能な型である必要があります {'key1': 1.0, 3: False}
{}
ellipsisNS 不変 省略記号のインデックスとして使用されるプレースホルダnumpyのの配列 ...
Ellipsis
float 不変 倍精度 浮動小数点数精度はマシンに依存しますが、実際には、53ビットの精度を持つ64ビットのIEEE754番号として一般的に実装されます。[101]

1.33333

frozenset 不変 順序付けられていないセット、重複は含まれていません。ハッシュ可能であれば、混合タイプを含めることができます frozenset([4.0, 'string', True])
int 不変 大きさが無制限の整数[102] 42
list 可変 リスト、混合タイプを含めることができます [4.0, 'string', True]
[]
NoneTypeNS 不変 値がないことを表すオブジェクト。他の言語で nullと呼ばれることがよくあります。 None
NotImplementedTypeNS 不変 サポートされていないオペランドタイプを示すためにオーバーロードされた演算子から返されるプレースホルダー NotImplemented
range 不変 一般的に時間の特定の数をループするために使用される数字のシーケンスforループ[103] range(-1, 10)
range(10, -5, -2)
set 可変 順序付けられていないセット、重複は含まれていません。ハッシュ可能であれば、混合タイプを含めることができます {4.0, 'string', True}
set()
str 不変 文字列:Unicodeのコードポイントのシーケンス 'Wikipedia'
"Wikipedia"
"" "
複数
行のスパン" ""
tuple 不変 混合タイプを含めることができます (4.0, 'string', True)
('single element',)
()

^ a名前で直接アクセスできない

算術演算

Pythonは算術演算のための通常のシンボルを有し(+-*/)、フロア分割オペレータ//モジュロ演算 %(剰余が負であることができる、例えば4 % -3 == -2)。また**べき乗、たとえば、、5**3 == 125および9**0.5 == 3.0行列乗算演算子もあり@ます。[104]これらの演算子は、従来の数学と同じように機能します。同じ優先順位規則で、演算子は中置します+また、正の数と負の数をそれぞれ表す-ために単項にすることもできます)。

整数間の除算により、浮動小数点の結果が生成されます。除算の振る舞いは時間とともに大きく変化しました:[105]

  • 現在のPython(つまり、3.0以降)は/常に浮動小数点除算に変更されました5/2 == 2.5
  • Python 2.2は、整数の除算を負の無限大に向かって丸めるように変更7/3 == 2しました-7/3 == -3床分割//演算子が導入されました。ですから7//3 == 2-7//3 == -37.5//3 == 2.0-7.5//3 == -3.0追加すると、モジュールは除算にPython 3.0ルールを使用します(次を参照)。from __future__ import division
  • Python 2.1以前では、Cの分割動作が使用されていました。/両方のオペランドがそれ以外の場合は、整数、浮動小数点除算である場合、オペレータは、整数除算です。整数の除算は0に向かって丸められます(例:および)7/3 == 2-7/3 == -2

Pythonの用語では、/ある真分割(または単に分割)、及び//あるフロア分割。 /バージョン3.0より前はクラシックディビジョンです。[105]

ほとんどの言語とは異なりますが、負の無限大に向かって丸めると、一貫性が増します。たとえば、方程式が常に真であることを意味します。また、方程式がの正の値と負の値の両方に対して有効であることも意味します。ただし、この方程式の有効性を維持するということは、の結果が予想どおり、正の整数である半開区間[0、b)にある一方で、次の場合は区間(b、0]になければならないことを意味します負です。[106](a + b)//b == a//b + 1b*(a//b) + a%b == aaa%bbb

Pythonは、floatを最も近い整数に丸めるroundため関数を提供します。以下のためのタイブレーク、Pythonの3つの用途ラウンドさえへの両方のプロデュース[107] 3より前のバージョンゼロから丸めて使用されましたis is [108]round(1.5)round(2.5)2round(0.5)1.0round(-0.5)−1.0

Pythonでは、数学での一般的な使用と一致する方法で、複数の等式関係を持つブール式を使用できます。例えば、発現a < b < cするかどうかをテストa未満であり、bかつb以下ですc[109] C派生言語は、この式を異なる方法で解釈します。Cでは、式は最初にを評価しa < b、結果として0または1になり、次にその結果がcと比較されます。[110]

Pythonは、すべての整数演算に任意精度の算術演算使用します。モジュールDecimalタイプ/クラスは、事前定義された任意精度といくつかの丸めモードで10進浮動小数点数decimal提供します。[111]モジュールクラスは、有理数に任意精度を提供します[112]Fractionfractions

Pythonの広範な数学ライブラリと、ネイティブ機能をさらに拡張するサードパーティライブラリNumPyにより、数値データの処理や操作などの問題を支援するための科学的なスクリプト言語として頻繁に使用されます。[113] [114]

プログラミング例

Hello worldプログラム:

print 'Hello、world!' 

正の整数の階乗を計算するプログラム

n  =  int input '数値を入力すると、その階乗が出力されます:' ))

 n  <  0の場合
     エラーを発生させます'負でない整数を入力する必要があります' 

階乗 =  1
 I における 範囲2  N  +  1 ):
    階乗 * =  i

印刷階乗

ライブラリ

Pythonの最大の強みの1つとして一般的に引用されているPythonの大規模な標準ライブラリ[115]は、多くのタスクに適したツールを提供します。インターネット向けアプリケーションの場合、MIMEHTTPなどの多くの標準形式とプロトコルがサポートされています。これにはグラフィカルユーザーインターフェイスの作成リレーショナルデータベースへの接続疑似ランダム数の生成、任意精度の小数による算術、[116]正規式の操作、および単体テストのためのモジュールが含まれています

標準ライブラリの一部は仕様でカバーされていますが(たとえば、Webサーバーゲートウェイインターフェイス(WSGI)の実装wsgirefはPEP 333 [117]に準拠しています)、ほとんどのモジュールはカバーされていません。それらは、コード、内部ドキュメント、およびテストスイートによって指定されますただし、標準ライブラリのほとんどはクロスプラットフォームのPythonコードであるため、バリアントの実装のために変更または書き換えが必要なモジュールはごくわずかです。

2021年9月の時点で、サードパーティのPythonソフトウェアの公式リポジトリあるPython Package Index(PyPI)には、次のような幅広い機能を備えた329,000を超える[118]パッケージが含まれています。

開発環境

ほとんどのPython実装(CPythonを含む)にはread-eval-printループ(REPL)が含まれており、ユーザーがステートメントを順番に入力してすぐに結果を受け取るコマンドラインインタープリターとして機能できます

IDLEIPythonを含む他のシェルは、オートコンプリートの改善、セッション状態の保持、構文の強調表示などの機能を追加します

標準のデスクトップ統合開発環境に加えてWebブラウザベースのIDEがあります。SageMath(科学および数学関連のPythonプログラムの開発を目的としています); PythonAnywhere、ブラウザベースのIDEおよびホスティング環境。Canopy IDEは、科学計算を強調する商用PythonIDEです[119]

実装

リファレンス実装

CPythonは、Pythonリファレンス実装です。これはCで記述されており、いくつかの選択されたC99機能を備えC89標準に適合しています(新しいCバージョンがリリースされているため、古くなっていると見なされます。[120] [121] CPythonには独自のC拡張機能が含まれていますが、サードパーティの拡張機能は古いCに限定されません。バージョン。たとえば、C11またはC ++で実装できます[122])。[123] Pythonプログラムを中間バイトコード[124 ]にコンパイルし、仮想マシンによって実行されます。[125]CPythonは、CとネイティブPythonを組み合わせて記述された大規模な標準ライブラリとともに配布されます。これは、Windows(Python 3.9以降、Pythonインストーラーは意図的にWindows7および8にインストールできません[126] [127] WindowsXPはPython3.5までサポートされていました)や最新のUnixに似たシステムなど、多くのプラットフォームで利用できます。 MacOSの(および含むアップルM1のMac、Pythonの3.9.1以来、実験的なインストーラ付き)と、例えばのための非公式サポートVMS[128]プラットフォームの移植性は、その最優先事項の1つであり、[129] Python1とPython2の期間中、OS / 2Solarisでさえもサポートされていました。[130]その後、多くのプラットフォームでサポートが終了しました。

その他の実装

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

他のジャストインタイムPythonコンパイラが開発されましたが、現在はサポートされていません。

  • Googleはというプロジェクト始めた空荷のツバメを使用して五倍Pythonインタプリタを高速化する目的で、2009年にLLVMを、そしてコアの数千人に規模へのマルチスレッド機能を改善する、[137]は通常の実装が苦しむ一方でグローバルインタプリタロック
  • Psycoは、CPythonと統合し、実行時にバイトコードをマシンコードに変換する、廃止されたジャストインタイムの 特殊コンパイラです。生成されたコードは特定のデータ型に特化しており、標準のPythonコードよりも高速です。PsycoはPython2.7以降をサポートしていません。
  • PyS60は、2005年にNokiaによってリリースされたシリーズ60携帯電話用のPython 2インタープリターでした。標準ライブラリのモジュールの多くと、Symbianオペレーティングシステムと統合するためのいくつかの追加モジュールを実装しましたNokia N900は、GTKウィジェットライブラリを備えたPythonもサポートしているため、ターゲットデバイスでプログラムを作成して実行できます。[138]

他の言語へのクロスコンパイラ

制限のないPython、制限のあるPythonのサブセット、またはソース言語としてPythonに類似した言語のいずれかを使用して高レベルのオブジェクト言語対応するコンパイラがいくつかあります。

  • CythonはPython2.7(のスーパーセット)をCにコンパイルします(結果のコードはPython3やC ++などでも使用できます)。
  • NuitkaはPythonをC ++にコンパイルします。[139]
  • Pythranは、Python3のサブセットをC ++にコンパイルします。[140] [141] [142]
  • Pyrex(2010年の最新リリース)とShed Skin(2013年の最新リリース)は、それぞれCとC ++にコンパイルされます。
  • GoogleのGrumpy(2017年の最新リリース)はPython2Goに変換します。[143] [144] [145]
  • IronPython(現在はMicrosoftによって廃止されています)を使用すると、.NET共通言語ランタイムでPython2.7プログラムを実行できます[146]
  • JythonはPython2.7をJavaバイトコードにコンパイルし、PythonプログラムからJavaライブラリを使用できるようにします。[147]
  • MyHDLは、Pythonベースのハードウェア記述言語(HDL)であり、MyHDLコードをVerilogまたはVHDLコードに変換します。
  • NumbaはLLVMを使用して、Pythonのサブセットをマシンコードにコンパイルします。
  • Brython [148] Transcrypt [149] [150]およびPyjs(2012年の最新リリース)は、PythonをJavaScriptにコンパイルします
  • RPythonはCにコンパイルでき、PythonのPyPyインタープリターを構築するために使用されます。

パフォーマンス

EuroSciPy '13で、非数値(組み合わせ)ワークロードでのさまざまなPython実装のパフォーマンス比較が発表されました。[151]他のプログラミング言語と比較したPythonのパフォーマンスは、The Computer Language BenchmarksGameによってもベンチマークされています。[152]

開発

Pythonの開発は、主にPython拡張提案(PEP)プロセスを通じて行われます。これは、主要な新機能を提案し、問題に関するコミュニティの意見を収集し、Pythonの設計上の決定を文書化するための主要なメカニズムです。[153] PythonコーディングスタイルはPEP8でカバーされています。[154]優れたPEPは、Pythonコミュニティと運営評議会によってレビューおよびコメントされています。[153]

言語の拡張は、CPythonリファレンス実装の開発に対応しています。メーリングリストpython-devは、言語開発の主要なフォーラムです。特定の問題については、bugs.python.orgでホストされているラウンドアップ バグトラッカーで説明されています。[155]開発は元々、Pythonが2017年1月GitHub移行するまで、Mercurialを実行している自己ホスト型のソースコードリポジトリで行われました。[156]

CPythonの公開リリースには、バージョン番号のどの部分がインクリメントされるかによって区別される3つのタイプがあります。

  • 後方互換性のないバージョン。コードが破損することが予想され、手動で移植する必要がありますバージョン番号の最初の部分がインクリメントされます。これらのリリースはめったに発生しません。バージョン3.0は2.0の8年後にリリースされました。
  • メジャーリリースまたは「機能」リリースは約18か月ごとに発生しますが、Python 3.9以降の年次リリースリズムの採用により、年に1回発生すると予想されます。[157] [158]それらは大部分が互換性がありますが、新しい機能を導入します。バージョン番号の2番目の部分がインクリメントされます。各メジャーバージョンは、リリース後数年間、バグ修正によってサポートされます。[159]
  • 新機能を導入しないバグ修正リリース[160]は、約3か月ごとに発生し、前回のリリース以降、十分な数のバグがアップストリームで修正されたときに作成されます。これらのリリースでは、セキュリティの脆弱性にもパッチが適用されています。バージョン番号の3番目で最後の部分がインクリメントされます。[160]

多くのアルファ版、ベータ版、リリース候補版もプレビューとしてリリースされ、最終リリースの前にテストされます。各リリースには大まかなスケジュールがありますが、コードの準備ができていない場合、リリースが遅れることがよくあります。Pythonの開発チームは、開発中にラージユニットテストスイートを実行することにより、コードの状態を監視します。[161]

Pythonに関する主要な学会PyConです。Pyladiesなどの特別なPythonメンタリングプログラムもあります

Python 3.10は非推奨wstr(Python 3.12で削除される予定です。つまり、Python拡張機能[162]はそれまでに変更する必要があります)[163]であり、言語にパターンマッチング追加する予定です。[164]

APIドキュメントジェネレータ

Python APIのドキュメントを生成できるツールには、pydoc(標準ライブラリの一部として利用可能)、SphinxPdocとそのフォーク、DoxygenGraphvizなどがあります。[165]

ネーミング

Pythonの名前は、Pythonの作成者であるGuido vanRossumが言語の開発中に楽しんだ英国のコメディグループMontyPythonに由来しています。 Monty Pythonの参照は、Pythonのコードとカルチャに頻繁に表示されます。[166]たとえば、Pythonの文献でよく使用されるメタ構文変数は、従来のfoobarではなくspameggsです。[166] [167]公式のPythonドキュメントには、MontyPythonルーチンへのさまざまな参照も含まれています。[168] [169]

接頭辞Py-は、何かがPythonに関連していることを示すために使用されます。Pythonのアプリケーションやライブラリの名前で、この接頭辞の使用例としては、pygameの結合SDLのPythonには(一般的にゲームを作成するために使用されます)。QtとGTKをそれぞれPythonにバインドするPyQtPyGTKそしてPyPy、もともとはPythonで書かれたPython実装。

人気

2003年以来、PythonはTIOBEプログラミングコミュニティインデックス最も人気のあるプログラミング言語のトップ10に一貫してランク付けされており、2021年10月の時点で、Pythonは最も人気のある言語です(JavaおよびCより前)。[170] 2007年、2010年、2018年、および2020年にプログラミング言語オブザイヤー(「1年で最も高い評価の上昇」)に選ばれました(これを4回行う唯一の言語[171])。[172]

経験的研究によると、Pythonなどのスクリプト言語は、CやJavaなどの従来の言語よりも、文字列の操作や辞書での検索に関連するプログラミングの問題に対して生産性が高いことがわかり、メモリ消費量は「Javaよりも優れていることが多い」と判断されました。 CやC ++よりもはるかに悪い」。[173]

Pythonを使用する大規模な組織には、ウィキペディアグーグル[174] Yahoo! [175] CERN[176] NASA[177] Facebook[178] AmazonInstagram[179] Spotify [180]、およびILM [181]ITAなどの小規模なエンティティ[182]ソーシャルニュースネットワーキングサイトRedditは主にPythonで書かれていました。[183]

使用し

Python Powered

Pythonはとして使用できるスクリプト言語のためのWebアプリケーション、例えば、経由のmod_wsgiのためのApache Webサーバ[184]Webサーバーのゲートウェイインターフェイス、標準APIは、これらのアプリケーションを容易にするために、進化してきました。DjangoPylonsPyramidTurboGearsweb2pyTornadoFlaskBottleZopeなどのWebフレームワークは、複雑なアプリケーションの設計と保守において開発者をサポートします。 PyjsとIronPythonAjaxベースのアプリケーションのクライアント側を開発するために使用できます。SQLAlchemy、リレーショナルデータベースへのデータマッパーとして使用できます。Twistedは、コンピューター間の通信をプログラムするためのフレームワークであり、(たとえば)Dropboxによって使用されます

NumPySciPyMatplotlibなどのライブラリは、科学計算におけるPythonの効果的な使用を可能にし[185] [186]ドメイン固有の機能を提供するBiopythonAstropyなどの特殊なライブラリを備えています。SageMathは、Pythonでプログラム可能なノートブックインターフェイスを備えた数式処理システムです。そのライブラリは代数組み合わせ論数値数学数論計算など数学の多くの側面をカバーしています。[187] OpenCVには、コンピュータービジョン画像処理のための豊富な機能セットを備えたPythonバインディングがあります[188]

Pythonは、一般的に使用されている人工知能のようなライブラリの助けを借りて、プロジェクトや機械学習プロジェクトTensorFlowKerasPytorchScikit-学びます[189] [190] [191] [192]モジュラーアーキテクチャ、単純な構文、および豊富なテキスト処理ツールを備えたスクリプト言語として、Pythonは自然言語処理によく使用されます[193]

PythonはAbaqusなどの有限要素メソッドソフトウェアFreeCADなどの3Dパラメトリックモデラー3ds MaxBlenderCinema 4DLightwaveHoudiniMayamodoなどの3Dアニメーションパッケージを含む、スクリプト言語として多くのソフトウェア製品に正常に組み込まれています。MotionBuilderSoftimage、ビジュアルエフェクトコンポジターNukeGIMPなどの2Dイメージングプログラム[194] InkscapeScribus Shop Proのペイント[195]楽譜のようなプログラム楽譜作成ソフトウェアアカペラをGNU Debuggerは、Pythonをきれいなプリンターとして使用して、C ++コンテナーなどの複雑な構造を表示します。Esriは、ArcGISでスクリプトを作成するための最良の選択肢としてPythonを宣伝しています[196]いくつかのビデオゲームでも使用されており[197] [198]Google AppEngine利用可能3つのプログラミング言語の最初の言語として採用されています他の2つはJavaGoです。[199]

多くのオペレーティングシステムには、Pythonが標準コンポーネントとして含まれています。ほとんどのLinuxディストリビューション[200] AmigaOS 4(Python 2.7を使用)、FreeBSD(パッケージとして)、NetBSDOpenBSD(パッケージとして)、macOSに同されており、コマンドライン(ターミナル)から使用できます。多くのLinuxディストリビューションは、Pythonで書かれたインストーラを使用します。Ubuntuは使用したUbiquityながら、インストーラをRed Hat LinuxのFedoraが使用アナコンダのインストーラを。Gentoo Linuxは、パッケージ管理システムであるPortageでPythonを使用しています

Pythonは、エクスプロイト開発を含む情報セキュリティ業界で広く使用されています[201] [202]

ほとんどは砂糖のためのソフトウェア子ごとに1台のラップトップ、今で開発されたXO、砂糖Labs社は、Pythonで書かれています。[203]ラズベリーパイ シングルボードコンピュータのプロジェクトは、その主ユーザプログラミング言語としてPythonを採用しています。

LibreOfficeにはPythonが含まれており、JavaをPythonに置き換える予定です。そのPythonスクリプトプロバイダーは、2013年2月7日からのバージョン4.0以降のコア機能[204]です。

Pythonの影響を受ける言語

Pythonの設計と哲学は、他の多くのプログラミング言語に影響を与えています。

  • Booは、インデント、同様の構文、および同様のオブジェクトモデルを使用します。[205]
  • Cobraはインデントと同様の構文を使用しており、その謝辞ドキュメントには、影響を受けた言語の中でPythonが最初にリストされています。[206]
  • JavaScriptにクロスコンパイルするプログラミング言語であるCoffeeScriptには、Pythonに着想を得た構文があります。
  • ECMAScript / JavaScript、Pythonからイテレーターとジェネレーター借用しました[207]
  • GDScriptは、Pythonに非常によく似たスクリプト言語であり、Godotゲームエンジンに組み込まれています。[208]
  • Goは、「Pythonのような動的言語での作業速度」[209]のために設計されており、配列をスライスするための同じ構文を共有しています。
  • Groovyは、Pythonの設計哲学をJavaに取り入れたいという願望に動機付けられました[210]
  • Juliaは、「Pythonと同じくらい一般的なプログラミングに使用できる」ように設計されています。[27]
  • Nimはインデントと同様の構文を使用します。[211]
  • Rubyの作成者であるまつもとゆきひろ氏は、「Perlよりも強力で、Pythonよりもオブジェクト指向のスクリプト言語が欲しかったので、自分の言語を設計することにしました」と述べています。[212]
  • Appleによって開発されたプログラミング言語であるSwiftには、Pythonに着想を得た構文がいくつかあります。[213]

Pythonの開発手法は、他の言語でもエミュレートされています。たとえば、言語の変更(PythonではPEP)の理論的根拠とその周辺の問題を説明するドキュメントを要求する慣行は、Tcl[214] Erlang[215]およびSwiftでも使用されています。[216]

も参照してください

参考文献

  1. ^ 「一般的なPythonFAQ — Python3.9.2ドキュメント」docs.python.org2012年10月24日にオリジナルからアーカイブされました2021年3月28日取得
  2. ^ 「Python0.9.1パート01/21」alt.sourcesアーカイブ。2021年8月11日にオリジナルからアーカイブされました2021年8月11日取得
  3. ^ 「Python3.10.0が利用可能です」2021年10月4日2021年10月5日取得
  4. ^ 「Python3.11.0a1が利用可能です」2021年10月7日2021年10月7日取得
  5. ^ 「Pythonが動的言語であり、強く型付けされた言語である理由-PythonWiki」wiki.python.org2021年3月14日にオリジナルからアーカイブされました2021年1月27日取得
  6. ^ 「PEP483-型ヒントの理論」Python.org2020年6月14日にオリジナルからアーカイブされました2018年6月14日取得
  7. ^ 「Pythonをダウンロード」Python.org2018年8月8日にオリジナルからアーカイブされました2021年5月24日取得
  8. ^ ファイル拡張子.pyoはPython3.5で削除されました。ウェイバックマシンで2020年6月1日にアーカイブされたPEP0488を 参照してください
  9. ^ ホルス、ムーア(2014年3月30日)。「PEP0441--PythonZIPアプリケーションサポートの改善」2018年12月26日にオリジナルからアーカイブされました取得した12年11月2015
  10. ^ 「スターラーク言語」2020年6月15日にオリジナルからアーカイブされました2019年5月25日取得
  11. ^ a b 「Pythonが最初に作成されたのはなぜですか?」一般的なPythonFAQPythonソフトウェアファウンデーション。2012年10月24日にオリジナルからアーカイブされました2007年3月22日取得
  12. ^ 「Ada83リファレンスマニュアル(レイズステートメント)」2019年10月22日にオリジナルからアーカイブされました2020年1月7日取得
  13. ^ Kuchling、Andrew M.(2006年12月22日)。「グイド・ヴァン・ロッサムへのインタビュー(1998年7月)」amk.ca2007年5月1日にオリジナルからアーカイブされまし取得した3月12日に2012
  14. ^ a b "itertools —効率的なループのためのイテレータを作成する関数— Python3.7.1ドキュメント"docs.python.org2020年6月14日にオリジナルからアーカイブされました取得した22年11月2016
  15. ^ ヴァンロッサム、グイド(1993)。「UNIX / CプログラマーのためのPython入門」。NLUUG Najaarsconferentie(オランダのUNIXユーザーグループ)の議事録CiteSeerX 10.1.1.38.2023Cの設計は理想からはほど遠いものの、Pythonへの影響はかなりのものです。 
  16. ^ a b "クラス"Pythonチュートリアル。 Pythonソフトウェアファウンデーション。2012年10月23日にオリジナルからアーカイブされました。取得した20年2月2012これは、C ++とModula-3に見られるクラスメカニズムの混合物です。
  17. ^ Lundh、Fredrik。「オブジェクトによる呼び出し」effbot.org2019年11月23日にオリジナルからアーカイブされました2017年11月21日取得「CLU」を「Python」に、「record」を「instance」に、「procedure」を「function or method」に置き換えると、Pythonのオブジェクトモデルのかなり正確な説明が得られます。
  18. ^ シミオナート、ミケーレ。「Python2.3メソッド解決順序」Pythonソフトウェアファウンデーション。2020年8月20日にオリジナルからアーカイブされました検索された29年7月2014C3メソッド自体はPythonとは何の関係もありません。これは、Dylanに取り組んでいる人々によって発明されたものであり、lispersを対象とした論文で説明されているためです。
  19. ^ Kuchling、AM 「関数型プログラミングHOWTO」Pythonv2.7.2のドキュメントPythonソフトウェアファウンデーション。2012年10月24日にオリジナルからアーカイブされました取り出される9年2月2012
  20. ^ スキームナウアー、ニール; ピーターズ、ティム; ヘットランド、マグナス・リー(2001年5月18日)。「PEP255–シンプルなジェネレーター」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月5日にオリジナルからアーカイブされました取り出される9年2月2012
  21. ^ スミス、ケビンD。; Jewett、Jim J。; モンタナロ、スキップ; バクスター、アンソニー(2004年9月2日)。「PEP318–関数とメソッドのデコレータ」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月3日にオリジナルからアーカイブされました取得した24年2月2012
  22. ^ 「その他の制御フローツール」Python3のドキュメントPythonソフトウェアファウンデーション。2016年6月4日にオリジナルからアーカイブされました検索された24年7月2015
  23. ^ 「CoffeeScript」coffeescript.org2020年6月12日にオリジナルからアーカイブされました2018年7月3日取得
  24. ^ 「魔神プログラミング言語チュートリアル」2020年6月1日にオリジナルからアーカイブされました2020年2月28日取得
  25. ^ 「JavaScriptにおけるPerlとPythonの影響」www.2ality.com2013年2月24日。2018年12月26日のオリジナルからアーカイブ検索された5月15 2015
  26. ^ Rauschmayer、アクセル。「第3章:JavaScriptの性質;影響」O'Reilly、JavaScriptを話す2018年12月26日にオリジナルからアーカイブされました検索された5月15 2015
  27. ^ B 「私たちはジュリアを作成した理由」ジュリアのウェブサイト2012年2月 2020年5月2日のオリジナルからアーカイブ検索された5年6月2014Pythonと同じくらい一般的なプログラミングに使えるものが欲しい[...]
  28. ^ リングチーム(2017年12月4日)。「リングと他の言語」ring-lang.netring-lang2018年12月25日にオリジナルからアーカイブされました2017年12月4日取得
  29. ^ Bini、Ola(2007)。実用的なJRubyon Rails Web 2.0プロジェクト:Ruby onRailsをJavaプラットフォームに導入しますバークレー:APress。NS。 3ISBN 978-1-59059-881-8
  30. ^ ラトナー、クリス(2014年6月3日)。「クリス・ラトナーのホームページ」。クリス・ラトナー。2018年12月25日にオリジナルからアーカイブされました。取得した3年6月2014Swift言語は、言語の専門家、ドキュメントの専門家、コンパイラ最適化の忍者、そしてアイデアの洗練とバトルテストに役立つフィードバックを提供した非常に重要な社内ドッグフーディンググループのチームによるたゆまぬ努力の成果です。もちろん、Objective-C、Rust、Haskell、Ruby、Python、C#、CLUなど、他の多くの言語からアイデアを引き出して、この分野の他の多くの言語が苦労して獲得した経験からも大きな恩恵を受けました。
  31. ^ クールマン、デイブ。「Pythonブック:Pythonの開始、高度なPython、およびPythonの演習」セクション1.1。2012年6月23日にオリジナル(PDF)からアーカイブされまし
  32. ^ 「Pythonについて」Pythonソフトウェアファウンデーション。2012年4月20日にオリジナルからアーカイブされました取得した24年4月2012、2番目のセクション「Pythonのファンは、「バッテリーが含まれています」というフレーズを使用して、非同期処理からzipファイルまですべてをカバーする標準ライブラリを説明します。」
  33. ^ ロッサム、グイドヴァン(2009年1月20日)。「Pythonの歴史:Pythonの簡単なタイムライン」Pythonの歴史2020年6月5日にオリジナルからアーカイブされました2021年3月5日取得
  34. ^ ピーターソン、ベンジャミン(2020年4月20日)。「PythonInsider:Python 2.7.18、Python2の最後のリリース」PythonInsider2020年4月26日にオリジナルからアーカイブされました2020年4月27日取得
  35. ^ 「StackOverflowDeveloperSurvey2020」スタックオーバーフロー2021年3月2日にオリジナルからアーカイブされました2021年3月5日取得
  36. ^ 「2020年のインフォグラフィックにおける開発者エコシステムの状態」JetBrains:専門家とチームのための開発者ツール2021年3月1日にオリジナルからアーカイブされました2021年3月5日取得
  37. ^ 「インデックス| TIOBE-ソフトウェア品質会社」www.tiobe.com2018年2月25日にオリジナルからアーカイブされました2021年2月2日取得Pythonは、TIOBEプログラミング言語オブザイヤーを受賞しました。史上4回目となる記録です!このタイトルは、1年間で最も人気のあるプログラミング言語に授与されます。
  38. ^ 「プログラミング言語インデックスのPYPL人気」pypl.github.io2017年3月14日にオリジナルからアーカイブされました2021年3月26日取得
  39. ^ a b Venners、Bill(2003年1月13日)。「Pythonのメイキング」Artima開発者アルティマ。2016年9月1日にオリジナルからアーカイブされました2007年3月22日取得
  40. ^ ヴァンロッサム、グイド(2000年8月29日)。"SETL(以前:範囲リテラルについてはLukewarm)"Python-Dev(メーリングリスト)。2018年7月14日にオリジナルからアーカイブされました取得した3月13日に2011
  41. ^ ヴァンロッサム、グイド(2009年1月20日)。「Pythonの簡単なタイムライン」Pythonの歴史2020年6月5日にオリジナルからアーカイブされました取り出さ年1月20 2009
  42. ^ フェアチャイルド、カーリー(2018年7月12日)。「グイド・ヴァン・ロッサムがPythonの慈悲深い独裁者としての役割を辞任」LinuxJournal2018年7月13日にオリジナルからアーカイブされました2018年7月13日取得
  43. ^ 「PEP8100」Pythonソフトウェアファウンデーション。2020年6月4日にオリジナルからアーカイブされました2019年5月4日取得
  44. ^ 「PEP13--Python言語ガバナンス」Python.org2021年5月27日にオリジナルからアーカイブされました2021年8月25日取得
  45. ^ Kuchling、AM; Zadka、Moshe(2000年10月16日)。「Python2.0の新機能」Pythonソフトウェアファウンデーション。2012年10月23日にオリジナルからアーカイブされました取得した11年2月2012
  46. ^ 「Python3.0リリース」Pythonソフトウェアファウンデーション。2020年6月14日にオリジナルからアーカイブされました取り出さ年7月8 2009年
  47. ^ ヴァンロッサム、グイド(2006年4月5日)。「PEP3000– Python3000」Python拡張提案Pythonソフトウェアファウンデーション。2016年3月3日にオリジナルからアーカイブされまし検索された27年6月2009年
  48. ^ 「2to3–自動化されたPython2から3へのコード変換」docs.python.org2020年6月4日にオリジナルからアーカイブされました2021年2月2日取得
  49. ^ 「PEP373--Python2.7リリーススケジュール」python.org2020年5月19日にオリジナルからアーカイブされました2017年1月9日取得
  50. ^ 「PEP466--Python2.7.xのネットワークセキュリティの強化」python.org2020年6月4日にオリジナルからアーカイブされました2017年1月9日取得
  51. ^ 「サンセットPython2」Python.org2020年1月12日にオリジナルからアーカイブされました2019年9月22日取得
  52. ^ 「PEP373--Python2.7リリーススケジュール」Python.org2020年1月13日にオリジナルからアーカイブされました2019年9月22日取得
  53. ^ 「Python開発者ガイド—Python開発者ガイド」devguide.python.org2020年11月9日にオリジナルからアーカイブされました2019年12月17日取得
  54. ^ ランガ、Łukasz(2021年2月19日)。「PythonInsider:Python3.9.2および3.8.8が利用可能になりました」PythonInsider2021年2月25日にオリジナルからアーカイブされました2021年2月26日取得
  55. ^ 「RedHatカスタマーポータル-24時間年中無休のサポートと知識へのアクセス」access.redhat.com2021年3月6日にオリジナルからアーカイブされました2021年2月26日取得
  56. ^ 「CVE-CVE-2021-3177」cve.mitre.org2021年2月27日にオリジナルからアーカイブされました2021年2月26日取得
  57. ^ 「CVE-CVE-2021-23336」cve.mitre.org2021年2月24日にオリジナルからアーカイブされました2021年2月26日取得
  58. ^ The Cain Gang Ltd. 「Pythonメタクラス:誰?なぜ?いつ?」(PDF)2009年5月30日にオリジナル(PDF)からアーカイブされまし検索された27年6月2009年
  59. ^ 「3.3。特別なメソッド名」Python言語リファレンスPythonソフトウェアファウンデーション。2018年12月15日にオリジナルからアーカイブされました検索された27年6月2009年
  60. ^ 「PyDBC:Pythonのメソッドの前提条件、メソッドの事後条件、およびクラスの不変条件」2019年11月23日にオリジナルからアーカイブされました取得した24年9月2011
  61. ^ 「Pythonの契約」2020年6月15日にオリジナルからアーカイブされました取得した24年9月2011
  62. ^ 「PyDatalog」2020年6月13日にオリジナルからアーカイブされました検索された22年7月2012
  63. ^ 「Pythonインタープリターの拡張と埋め込み:参照カウント」Docs.python.org。2012年10月18日にオリジナルからアーカイブされました2020年6月5日取得Pythonはを多用しているため、それが解放されたメモリの使用だけでなく、メモリリークを回避するために戦略を必要とします。選択された方法は、参照カウントと呼ばれますmalloc()free()
  64. ^ a b ヘッティンガー、レイモンド(2002年1月30日)。「PEP289–ジェネレータ式」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月14日にオリジナルからアーカイブされました取得した19年2月2012
  65. ^ 「6.5itertools–効率的なループのためのイテレータを作成する関数」Docs.python.org。2020年6月14日にオリジナルからアーカイブされました取得した22年11月2016
  66. ^ a b Peters、Tim(2004年8月19日)。「PEP20–Pythonの禅」Python拡張提案Pythonソフトウェアファウンデーション。2018年12月26日にオリジナルからアーカイブされました取得した24年11月2008年
  67. ^ 「PEP206--PythonAdvancedLibrary」Python.org
  68. ^ マルテッリ、アレックス; Ravenscroft、Anna; アッシャー、デビッド(2005)。Pythonクックブック、第2版オライリーメディアNS。230. ISBN 978-0-596-00797-32020年2月23日にオリジナルからアーカイブされました取得した14年11月2015
  69. ^ 「Pythonカルチャー」ebeab2014年1月21日。2014年1月30日のオリジナルからアーカイブ
  70. ^ 「一般的なPythonFAQ」Pythonv2.7.3のドキュメントDocs.python.org。2012年10月24日にオリジナルからアーカイブされました2020年6月4日取得
  71. ^ 「PythonがWeb上で強力な力となる15の方法」2019年5月11日にオリジナルからアーカイブされまし2018年7月3日取得
  72. ^ "8.18。pprint—データプリティプリンター— Python3.8.3ドキュメント"docs.python.org2021年1月22日にオリジナルからアーカイブされました2020年6月4日取得
  73. ^ クラーク、ロバート(2019年4月26日)。「Pythonicになる方法と気にする必要がある理由」ミディアム2021年8月13日にオリジナルからアーカイブされました2021年1月20日取得
  74. ^ 「コードスタイル—Pythonのヒッチハイカーガイド」docs.python-guide.org2021年1月27日にオリジナルからアーカイブされました2021年1月20日取得
  75. ^ グッドガー、デビッド。「Pythonistaのようなコード:慣用的なPython」2014年5月27日にオリジナルからアーカイブされまし取得した3月24日に2009
  76. ^ 「Pythonistaのように考える方法」2018年3月23日にオリジナルからアーカイブされまし取得した3月24日に2009
  77. ^ 「Pythonは初心者のプログラマーにとって良い言語ですか?」一般的なPythonFAQPythonソフトウェアファウンデーション。2012年10月24日にオリジナルからアーカイブされました2007年3月21日取得
  78. ^ 「Pythonのインデントに関する神話」Secnetix.de。2018年2月18日にオリジナルからアーカイブされまし取得した19年4月2011
  79. ^ Guttag、John V.(2016年8月12日)。Pythonを使用した計算とプログラミングの概要:データの理解への応用MITプレス。ISBN 978-0-262-52962-4
  80. ^ 「PEP8--Pythonコードのスタイルガイド」Python.org2019年4月17日にオリジナルからアーカイブされました2019年3月26日取得
  81. ^ 「ハイライト:Python2.5」Python.org2019年8月4日にオリジナルからアーカイブされました2018年3月20日取得
  82. ^ ヴァンロッサム、グイド(2009年4月22日)。「末尾再帰の除去」Neopythonic.blogspot.be。2018年5月19日にオリジナルからアーカイブされました取り出さ年12月3 2012
  83. ^ ヴァンロッサム、グイド(2006年2月9日)。「言語デザインはパズルを解くだけではありません」Artimaフォーラムアルティマ。2020年1月17日にオリジナルからアーカイブされました2007年3月21日取得
  84. ^ ヴァンロッサム、グイド; Eby、Phillip J.(2005年5月10日)。「PEP342–拡張ジェネレーターを介したコルーチン」Python拡張提案Pythonソフトウェアファウンデーション。2020年5月29日にオリジナルからアーカイブされました取得した19年2月2012
  85. ^ 「PEP380」Python.org。2020年6月4日にオリジナルからアーカイブされました取り出さ年12月3 2012
  86. ^ 「除算」python.org2006年7月20日にオリジナルからアーカイブされました検索された30年7月2014
  87. ^ "PEP0465--行列乗算専用の中置演算子"python.org2020年6月4日にオリジナルからアーカイブされました2016年1月1取得
  88. ^ 「Python3.5.1のリリースと変更ログ」python.org2020年5月14日にオリジナルからアーカイブされました2016年1月1取得
  89. ^ 「Python3.8の新機能」2020年6月8日にオリジナルからアーカイブされました2019年10月14日取得
  90. ^ "第15章式-15.21.1。数値等式演算子==および!="オラクル株式会社2020年6月7日にオリジナルからアーカイブされました取得した28年8月2016
  91. ^ "第15章式-15.21.3。参照等式演算子==および!="オラクル株式会社。2020年6月7日にオリジナルからアーカイブされました取得した28年8月2016
  92. ^ ヴァンロッサム、グイド; ヘッティンガー、レイモンド(2003年2月7日)。「PEP308–条件式」Python拡張提案Pythonソフトウェアファウンデーション。2016年3月13日にオリジナルからアーカイブされました検索された13年7月2011
  93. ^ 「4。組み込み型— Python3.6.3rc1ドキュメント」python.org2020年6月14日にオリジナルからアーカイブされました2017年10月1日取得
  94. ^ 「5.3。タプルとシーケンス— Python3.7.1rc2ドキュメント」python.org2020年6月10日にオリジナルからアーカイブされました2018年10月17日取得
  95. ^ a b "PEP498--リテラル文字列補間"python.org2020年6月15日にオリジナルからアーカイブされました2017年3月8日取得
  96. ^ 「メソッド定義と呼び出しで「self」を明示的に使用する必要があるのはなぜですか?」デザインと歴史に関するFAQPythonソフトウェアファウンデーション。2012年10月24日にオリジナルからアーカイブされました取得した19年2月2012
  97. ^ Sweigart、Al(2020)。Pythonの基本的なものを超えて:クリーンなコードを書くためのベストプラクティススターチプレスはありません。NS。322. ISBN 978-1-59327-966-02021年8月13日にオリジナルからアーカイブされました2021年7月7日取得
  98. ^ 「Python言語リファレンス、セクション3.3。リリース2.7.1の新しいスタイルおよびクラシッククラス。1」2012年10月26日にオリジナルからアーカイブされまし取り出さ年1月12 2011
  99. ^ 「Pythonの型ヒント」LWN.net。2014年12月24日。2019年6月20日のオリジナルからアーカイブ2015年5月5日取得
  100. ^ "mypy-Python用のオプションの静的入力"2020年6月6日にオリジナルからアーカイブされました2017年1月28日取得
  101. ^ 「15。浮動小数点演算:問題と制限— Python3.8.3ドキュメント」docs.python.org2020年6月6日にオリジナルからアーカイブされました2020年6月6日取得今日(2000年11月)のほとんどすべてのマシンはIEEE-754浮動小数点演算を使用しており、ほとんどすべてのプラットフォームがPython浮動小数点数をIEEE-754「倍精度」にマップしています。
  102. ^ Zadka、Moshe; グイドヴァンロッサム(2001年3月11日)。「PEP237–長整数と整数の統合」Python拡張提案Pythonソフトウェアファウンデーション。2020年5月28日にオリジナルからアーカイブされました取得した24年9月2011
  103. ^ 「組み込み型」2020年6月14日にオリジナルからアーカイブされました2019年10月3日取得
  104. ^ 「PEP465-行列乗算専用の中置演算子」python.org2020年5月29日にオリジナルからアーカイブされました2018年7月3日取得
  105. ^ a b Zadka、Moshe; グイドヴァンロッサム(2001年3月11日)。「PEP238–除算演算子の変更」Python拡張提案Pythonソフトウェアファウンデーション。2020年5月28日にオリジナルからアーカイブされました取得した23年10月2013
  106. ^ 「なぜPythonの整数除算フロア」2020年6月5日にオリジナルからアーカイブされました取得した25年8月2010年
  107. ^ "round"Python標準ライブラリ、リリース3.2、§2:組み込み関数2012年10月25日にオリジナルからアーカイブ2011年8月14日取得
  108. ^ "round"Python標準ライブラリ、リリース2.7、§2:組み込み関数2012年10月27日にオリジナルからアーカイブ2011年8月14日取得
  109. ^ Beazley、David M.(2009)。Pythonエッセンシャルリファレンス(第4版)。NS。 66
  110. ^ カーニハン、ブライアンW。; リッチー、デニスM.(1988)。Cプログラミング言語(第2版)。NS。 206
  111. ^ バティスタ、ファクンド。「PEP0327-10進数のデータ型」Python.org2020年6月4日にオリジナルからアーカイブされました取得した26年9月2015
  112. ^ 「Python2.6の新機能— Pythonv2.6.9ドキュメント」docs.python.org2019年12月23日にオリジナルからアーカイブされました取得した26年9月2015
  113. ^ 「Pythonが研究のために揺るがす10の理由(そしてそれがしないいくつかの理由)– HoytKoepke」www.stat.washington.edu2020年5月31日にオリジナルからアーカイブされまし2019年2月3日取得
  114. ^ シェル、スコット(2014年6月17日)。「科学計算のためのPythonの紹介」(PDF)2019年2月4日にオリジナルからアーカイブ(PDF)2019年2月3日取得
  115. ^ Piotrowski、Przemyslaw(2006年7月)。「PythonサーバーページとOracle用の迅速なWeb開発環境を構築する」Oracle TechnologyNetworkオラクル。2019年4月2日にオリジナルからアーカイブされました取得した3月12日に2012
  116. ^ バティスタ、ファクンド(2003年10月17日)。「PEP327–10進データ型」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月4日にオリジナルからアーカイブされました取得した24年11月2008年
  117. ^ Eby、Phillip J.(2003年12月7日)。「PEP333– PythonWebサーバーゲートウェイインターフェイスv1.0」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月14日にオリジナルからアーカイブされました取得した19年2月2012
  118. ^ 「Modulecounts」Modulecounts2021年9月28日。2021年9月24日のオリジナルからアーカイブ2021年9月28日取得
  119. ^ 思いついた、キャノピー。「キャノピー」www.enthought.com2017年7月15日にオリジナルからアーカイブされまし取得した20年8月2016
  120. ^ 「Mailman3なぜC11の使用を許可しないのですか?-Python-Dev--python.org」mail.python.org2021年4月14日にオリジナルからアーカイブされました2021年3月1日取得
  121. ^ 「問題35473:インテル®コンパイラー(icc)は、アトミックを含むC11機能を完全にはサポートしていません-Pythonトラッカー」bugs.python.org2021年4月14日にオリジナルからアーカイブされました2021年3月1日取得
  122. ^ 「4。CおよびC ++拡張機能の構築— Python3.9.2ドキュメント」docs.python.org2021年3月3日にオリジナルからアーカイブされました2021年3月1日取得
  123. ^ ヴァンロッサム、グイド(2001年6月5日)。「PEP7–Cコードのスタイルガイド」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月1日にオリジナルからアーカイブされました取得した24年11月2008年
  124. ^ 「CPythonバイトコード」Docs.python.org。2020年6月5日にオリジナルからアーカイブされました取得した16年2月2016
  125. ^ 「Python2.5の内部」(PDF)2012年8月6日にオリジナルからアーカイブ(PDF)取得した19年4月2011
  126. ^ 「変更ログ— Python3.9.0ドキュメント」docs.python.org2021年2月7日にオリジナルからアーカイブされました2021年2月8日取得
  127. ^ 「Pythonをダウンロード」Python.org2020年12月8日にオリジナルからアーカイブされました2020年12月13日取得
  128. ^ "履歴[vmspython]"www.vmspython.org2020年12月2日にオリジナルからアーカイブされました2020年12月4日取得
  129. ^ 「グイドヴァンロッサムへのインタビュー」Oreilly.com。2014年7月16日にオリジナルからアーカイブされました取得した24年11月2008年
  130. ^ 「他のプラットフォーム用のPythonをダウンロードする」Python.org2020年11月27日にオリジナルからアーカイブされました2020年12月4日取得
  131. ^ 「PyPyの互換性」Pypy.org。2020年6月6日にオリジナルからアーカイブされました取り出さ年12月3 2012
  132. ^ 「CPythonとPypyの速度比較」Speed.pypy.org。2021年5月10日にオリジナルからアーカイブされました取り出さ年12月3 2012
  133. ^ 「アプリケーションレベルのスタックレス機能— PyPy2.0.2ドキュメント」Doc.pypy.org。2020年6月4日にオリジナルからアーカイブされました検索された17年7月2013
  134. ^ 「Python-for-EV3」レゴ教育2020年6月7日にオリジナルからアーカイブされました2019年4月17日取得
  135. ^ Yegulalp、Serdar(2020年10月29日)。「PystonはPythonを高速化するために死から戻ってきました」InfoWorld2021年1月27日にオリジナルからアーカイブされました2021年1月26日取得
  136. ^ 「cinder:Instagramのパフォーマンス指向のCPythonフォーク」2021年5月4日にオリジナルからアーカイブされました2021年5月4日取得
  137. ^ 「Pythonを最適化するための計画」Googleプロジェクトホスティング2009年12月15日。2016年4月11日のオリジナルからアーカイブ取得した24年9月2011
  138. ^ 「ノキアN900のPython」確率幾何学2010年4月29日。2019年6月20日のオリジナルからアーカイブ取り出さ年7月9 2015
  139. ^ 「Nuitkaホーム| Nuitkaホーム」nuitka.net2020年5月30日にオリジナルからアーカイブされました2017年8月18日取得
  140. ^ Borderies、Olivier(2019年1月24日)。「Pythran:C ++速度のPython!」ミディアム2020年3月25日にオリジナルからアーカイブされました2020年3月25日取得
  141. ^ 「Pythran— Pythran0.9.5ドキュメント」pythran.readthedocs.io2020年2月19日にオリジナルからアーカイブされました2020年3月25日取得
  142. ^ 「アーカイブされたコピー」(PDF)2021年4月18日のオリジナルからアーカイブ(PDF)2021年1月20日取得 CS1 maint:タイトルとしてアーカイブされたコピー(リンク
  143. ^ 「グーグル/不機嫌」2020年4月10日 2020年4月15日のオリジナルからアーカイブ20203月25日取得–GitHub経由。
  144. ^ 「プロジェクト」opensource.google2020年4月24日にオリジナルからアーカイブされました2020年3月25日取得
  145. ^ フランシスコ、サンのトーマス・クラバーン。「グーグルの不機嫌そうなコードはPythonをGoにする」www.theregister.com2021年3月7日にオリジナルからアーカイブされました2021年1月20日取得
  146. ^ "IronPython.net/"ironpython.net2021年4月17日にオリジナルからアーカイブされました2021年4月22日取得
  147. ^ 「JythonFAQ」www.jython.org2021年4月22日にオリジナルからアーカイブされました2021年4月22日取得
  148. ^ 「ブライトン」brython.info2018年8月3日にオリジナルからアーカイブされました2021年1月21日取得
  149. ^ 「Transcrypt-ブラウザのPython」transcrypt.org2018年8月19日にオリジナルからアーカイブされました2020年12月22日取得
  150. ^ 「Transcrypt:PythonからJavaScriptへのコンパイラの構造」InfoQ2020年12月5日にオリジナルからアーカイブされました2021年1月20日取得
  151. ^ Murri、Riccardo(2013)。数値以外の科学コードでのPythonランタイムのパフォーマンス科学におけるPythonに関するヨーロッパ会議(EuroSciPy)。arXiv1404.6388Bibcode2014arXiv1404.6388M
  152. ^ 「コンピュータ言語ベンチマークゲーム」2020年6月14日にオリジナルからアーカイブされました2020年4月30日取得
  153. ^ a b ワルシャワ、バリー; ヒルトン、ジェレミー; Goodger、David(2000年6月13日)。「PEP1–PEPの目的とガイドライン」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月6日にオリジナルからアーカイブされました取得した19年4月2011
  154. ^ 「PEP8--Pythonコードのスタイルガイド」Python.org2019年4月17日にオリジナルからアーカイブされました2019年3月26日取得
  155. ^ キャノン、ブレット。「Guido、Some Guys、およびメーリングリスト:Pythonの開発方法」python.orgPythonソフトウェアファウンデーション。2009年6月1日にオリジナルからアーカイブされまし検索された27年6月2009年
  156. ^ 「Python開発者ガイド—Python開発者ガイド」devguide.python.org2020年11月9日にオリジナルからアーカイブされました2019年12月17日取得
  157. ^ 「PEP602--Pythonの年間リリースサイクル」Python.org2020年6月14日にオリジナルからアーカイブされました2019年11月6日取得
  158. ^ 「Pythonリリースリズムの変更[LWN.net]」lwn.net2019年11月6日にオリジナルからアーカイブされました2019年11月6日取得
  159. ^ Norwitz、ニール(2002年4月8日)。「[Python-Dev]リリーススケジュール(安定性と変更でした)」2018年12月15日にオリジナルからアーカイブされました検索された27年6月2009年
  160. ^ a b Aahz; バクスター、アンソニー(2001年3月15日)。「PEP6–バグ修正リリース」Python拡張提案Pythonソフトウェアファウンデーション。2020年6月5日にオリジナルからアーカイブされました検索された27年6月2009年
  161. ^ 「PythonBuildbot」Python開発者ガイドPythonソフトウェアファウンデーション。2020年6月5日にオリジナルからアーカイブされました取得した24年9月2011
  162. ^ 「1.CまたはC ++によるPythonの拡張— Python3.9.1ドキュメント」docs.python.org2020年6月23日にオリジナルからアーカイブされました2021年2月14日取得
  163. ^ "PEP623--Unicodeからwstrを削除"Python.org2021年3月5日にオリジナルからアーカイブされました2021年2月14日取得
  164. ^ 「PEP634-構造パターンマッチング:仕様」Python.org2021年5月6日にオリジナルからアーカイブされました2021年2月14日取得
  165. ^ 「ドキュメントツール」Python.org2020年11月11日にオリジナルからアーカイブされました2021年3月22日取得
  166. ^ B "あなたの食欲をWhetting" PythonチュートリアルPythonソフトウェアファウンデーション。2012年10月26日にオリジナルからアーカイブされました取得した20年2月2012
  167. ^ 「Pythonでは、ifブロックで戻った後にelseを使用する必要がありますか?」スタックオーバーフロースタック交換。2011年2月17日。2019年6月20日のオリジナルからアーカイブ検索された5月6 2011
  168. ^ Lutz、Mark(2009)。Pythonの学習:強力なオブジェクト指向プログラミングO'Reilly Media、Inc.p。17. ISBN 97814493793222017年7月17日にオリジナルからアーカイブされました2017年5月9日取得
  169. ^ Fehily、Chris(2002)。Pythonピーチピットプレス。NS。xv。ISBN 97802017488402017年7月17日にオリジナルからアーカイブされました2017年5月9日取得
  170. ^ 「TIOBEインデックス」TIOBE-ソフトウェア品質会社。2021年10月12日にオリジナルからアーカイブされました2021年10月13日取得
  171. ^ ブレイク、著者トロイ(2021年1月18日)。「2021年1月のTIOBEインデックス」SeniorDBAによるテクノロジーニュースと情報2021年3月21日にオリジナルからアーカイブされました2021年2月26日取得
  172. ^ TIOBEソフトウェアインデックス(2015)。「TIOBEプログラミングコミュニティインデックスPython」2015年9月7日にオリジナルからアーカイブされました取得した10年9月2015
  173. ^ Prechelt、Lutz(2000年3月14日)。「C、C ++、Java、Perl、Python、Rexx、およびTclの経験的比較」(PDF)2020年1月3日のオリジナルからアーカイブ(PDF)取得した30年8月2013
  174. ^ 「Pythonについての引用」Pythonソフトウェアファウンデーション。2020年6月3日にオリジナルから