一般的なPythonFAQ —Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/faq/general
移動先:案内検索

一般的なPythonFAQ

コンテンツ


一般情報

Pythonとは何ですか?

Pythonは、解釈されたインタラクティブなオブジェクト指向プログラミング言語です。 モジュール、例外、動的型付け、非常に高レベルの動的データ型、およびクラスが組み込まれています。 手続き型プログラミングや関数型プログラミングなど、オブジェクト指向プログラミングを超えた複数のプログラミングパラダイムをサポートします。 Pythonは、驚くべきパワーと非常に明確な構文を組み合わせています。 多くのシステムコールやライブラリ、およびさまざまなウィンドウシステムへのインターフェイスがあり、CまたはC ++で拡張可能です。 また、プログラム可能なインターフェイスを必要とするアプリケーションの拡張言語としても使用できます。 最後に、Pythonは移植性があります。つまり、LinuxやmacOSを含む多くのUnixバリアント、およびWindowsで実行されます。

詳細については、 Pythonチュートリアルから始めてください。 Pythonの初心者向けガイドは、Pythonを学習するための他の入門チュートリアルとリソースにリンクしています。


Python Software Foundationとは何ですか?

Python Software Foundationは、Pythonバージョン2.1以降の著作権を保持する独立した非営利団体です。 PSFの使命は、Pythonプログラミング言語に関連するオープンソーステクノロジーを進歩させ、Pythonの使用を宣伝することです。 PSFのホームページは https://www.python.org/psf/ にあります。

PSFへの寄付は、米国では免税です。 Pythonを使用していて役立つ場合は、 PSF寄付ページから投稿してください。


そもそもPythonが作成されたのはなぜですか?

これは、Guido vanRossumによって書かれた very のすべての始まりの簡単な要約です。

私はCWIのABCグループで通訳言語を実装した豊富な経験があり、このグループでの作業から言語設計について多くのことを学びました。 これは、ステートメントのグループ化にインデントを使用したり、非常に高レベルのデータ型を含めたりするなど、多くのPython機能の起源です(ただし、Pythonでは詳細がすべて異なります)。

私はABC言語について多くの不満を持っていましたが、その機能の多くも気に入りました。 ABC言語(またはその実装)を拡張して私の苦情を解決することは不可能でした。実際、拡張性の欠如が最大の問題の1つでした。 私はModula-2 +の使用経験があり、Modula-3の設計者と話をし、Modula-3レポートを読みました。 Modula-3は、例外に使用される構文とセマンティクス、およびその他のPython機能の起源です。

私はCWIのAmoeba分散オペレーティングシステムグループで働いていました。 AmoebaにはBourneシェルから簡単にアクセスできない独自のシステムコールインターフェイスがあるため、CプログラムまたはBourneシェルスクリプトを作成するよりも、システム管理を行うためのより良い方法が必要でした。 アメーバでのエラー処理の経験から、プログラミング言語の機能としての例外の重要性を痛感しました。

ABCのような構文を持ちながら、Amoebaシステムコールにアクセスできるスクリプト言語が必要を満たすだろうと思いました。 アメーバ特有の言語を書くのはばかげていることに気づいたので、一般的に拡張可能な言語が必要だと思いました。

1989年のクリスマス休暇中は手元にたくさんの時間があったので、やってみることにしました。 翌年、私自身の時間でほとんど作業を続けていましたが、PythonはAmoebaプロジェクトで使用され、成功を収めました。同僚からのフィードバックにより、多くの初期の改善が追加されました。

1991年2月、開発から1年余り経った後、USENETに投稿することにしました。 残りはMisc/HISTORYファイルにあります。


Pythonは何に適していますか?

Pythonは、さまざまなクラスの問題に適用できる高水準の汎用プログラミング言語です。

この言語には、文字列処理(正規表現、Unicode、ファイル間の差異の計算)、インターネットプロトコル(HTTP、FTP、SMTP、XML-RPC、POP、IMAP、CGIプログラミング)、ソフトウェアエンジニアリングなどの領域をカバーする大規模な標準ライブラリが付属しています。 (ユニットテスト、ロギング、プロファイリング、Pythonコードの解析)、およびオペレーティングシステムインターフェイス(システム呼び出し、ファイルシステム、TCP / IPソケット)。 Python標準ライブラリの目次を見て、何が利用できるかを理解してください。 さまざまなサードパーティの拡張機能も利用できます。 興味のあるパッケージを見つけるには、 Python Package Index を参照してください。


Pythonのバージョン番号付けスキームはどのように機能しますか?

PythonのバージョンにはABCまたはABの番号が付けられています Aはメジャーバージョン番号です–言語の本当に大きな変更に対してのみインクリメントされます。 Bはマイナーバージョン番号であり、地球を破壊するような変更を少なくするためにインクリメントされます。 Cはマイクロレベルです–バグ修正リリースごとに増分されます。 バグ修正リリースの詳細については、 PEP 6 を参照してください。

すべてのリリースがバグ修正リリースであるとは限りません。 新しいメジャーリリースの準備段階で、一連の開発リリースが作成され、アルファ、ベータ、またはリリース候補として示されます。 アルファ版は初期リリースであり、インターフェースはまだ完成していません。 2つのアルファリリース間でインターフェイスが変更されるのは当然のことです。 ベータ版はより安定しており、既存のインターフェースは保持されますが、新しいモジュールが追加される可能性があり、リリース候補は凍結され、重大なバグを修正するために必要な場合を除いて変更は行われません。

アルファ版、ベータ版、リリース候補のバージョンには、追加のサフィックスが付いています。 アルファバージョンのサフィックスは、いくつかの小さな数Nの場合は「aN」、ベータバージョンのサフィックスはいくつかの小さな数Nの場合は「bN」、リリース候補バージョンのサフィックスはいくつかの小さな数Nの場合は「cN」です。 つまり、2.0aNというラベルの付いたすべてのバージョンは、2.0cNというラベルの付いたバージョンに先行する2.0bNというラベルの付いたバージョンに先行し、それらのは2.0に先行します。

「+」サフィックスが付いたバージョン番号もあります。例: 「2.2+」。 これらはリリースされていないバージョンであり、CPython開発リポジトリから直接構築されています。 実際には、最終的なマイナーリリースが行われた後、バージョンは次のマイナーバージョンにインクリメントされ、「a0」バージョンになります。 「2.4a0」。

sys.versionsys.hexversion 、および sys.version_info のドキュメントも参照してください。


Pythonソースのコピーを入手するにはどうすればよいですか?

最新のPythonソースディストリビューションは、常にpython.orgの https://www.python.org/downloads/から入手できます。 最新の開発ソースは、 https://github.com/python/cpython/で入手できます。

ソースディストリビューションは、完全なCソース、Sphinx形式のドキュメント、Pythonライブラリモジュール、サンプルプログラム、および自由に配布できるソフトウェアのいくつかの便利な部分を含むgzip圧縮されたtarファイルです。 ソースは、ほとんどのUNIXプラットフォームでコンパイルされ、そのまま実行されます。

ソースコードの取得とコンパイルの詳細については、Python開発者ガイド GettingStartedセクションを参照してください。


Pythonに関するドキュメントを入手するにはどうすればよいですか?

Pythonの現在の安定バージョンの標準ドキュメントは、 https://docs.python.org/3/で入手できます。 PDF、プレーンテキスト、およびダウンロード可能なHTMLバージョンは、 https://docs.python.org/3/download.htmlでも入手できます。

ドキュメントはreStructuredTextで記述され、 Sphinxドキュメントツールによって処理されます。 ドキュメントのreStructuredTextソースは、Pythonソースディストリビューションの一部です。


私はこれまでプログラムしたことがありません。 Pythonチュートリアルはありますか?

利用可能なチュートリアルや本はたくさんあります。 標準のドキュメントには、 Pythonチュートリアルが含まれています。

チュートリアルのリストなど、Pythonプログラマーを始めるための情報については、ビギナーズガイドを参照してください。


Python専用のニュースグループやメーリングリストはありますか?

ニュースグループ comp.lang.python と、メーリングリスト python-list があります。 ニュースグループとメーリングリストは相互にゲートウェイ化されています。ニュースを読むことができれば、メーリングリストに登録する必要はありません。 comp.lang.python はトラフィックが多く、毎日何百もの投稿を受信しており、Usenetの読者はこの量に対処できることがよくあります。

新しいソフトウェアリリースとイベントの発表は、comp.lang.python.announceにあります。これは、1日あたり約5件の投稿を受け取るトラフィックの少ないモデレートリストです。 python-announceメーリングリストとして入手できます。

他のメーリングリストやニュースグループの詳細については、 https://www.python.org/community/lists/をご覧ください。


Pythonのベータテストバージョンを入手するにはどうすればよいですか?

アルファ版とベータ版のリリースは、 https://www.python.org/downloads/から入手できます。 すべてのリリースは、comp.lang.pythonおよびcomp.lang.python.announceニュースグループ、およびPythonホームページ https://www.python.org/で発表されます。 ニュースのRSSフィードが利用可能です。

Gitを介してPythonの開発バージョンにアクセスすることもできます。 詳細については、 Python開発者ガイドを参照してください。


Pythonのバグレポートとパッチを送信するにはどうすればよいですか?

バグを報告したりパッチを送信したりするには、 https://bugs.python.org/のラウンドアップインストールを使用してください。

バグを報告するには、ラウンドアップアカウントが必要です。 これにより、フォローアップの質問がある場合に連絡することができます。 また、ラウンドアップがバグに対処するときに更新を送信できるようになります。 以前にSourceForgeを使用してバグをPythonに報告したことがある場合は、Roundupのパスワードリセット手順を使用してRoundupパスワードを取得できます。

Pythonの開発方法の詳細については、 Python開発者ガイドを参照してください。


参照できるPythonに関する公開記事はありますか?

Pythonについてのお気に入りの本を引用するのがおそらく最善です。

Pythonに関する最初の記事は、1991年に書かれ、現在ではかなり時代遅れになっています。

Guido vanRossumおよびJelkede Boer、「Pythonプログラミング言語を使用したリモートサーバーのインタラクティブなテスト」、CWI Quarterly、第4巻、第4号(1991年12月)、アムステルダム、283〜303ページ。


Pythonに関する本はありますか?

はい、たくさんあり、さらに多くが公開されています。 リストについては、 https://wiki.python.org/moin/PythonBooksにあるpython.orgwikiを参照してください。

オンライン書店で「Python」を検索して、モンティパイソンの参照を除外することもできます。 または、「Python」と「言語」を検索することもできます。


www.python.orgは世界のどこにありますか?

Pythonプロジェクトのインフラストラクチャは世界中にあり、Pythonインフラストラクチャチームによって管理されています。 詳細こちら


なぜPythonと呼ばれるのですか?

彼がPythonの実装を開始したとき、Guido van Rossumは、1970年代のBBCコメディシリーズである「MontyPython's FlyingCircus」から公開されたスクリプトも読んでいました。 Van Rossumは、短く、ユニークで、少し神秘的な名前が必要だと考えたため、Pythonという言語を使用することにしました。


「モンティパイソンのフライングサーカス」が好きですか?

いいえ、しかしそれは役に立ちます。 :)


実世界のPython

Pythonはどのくらい安定していますか?

非常に安定しています。 1991年以降、ほぼ6〜18か月ごとに新しい安定したリリースがリリースされており、これは今後も続くと思われます。 バージョン3.9以降、Pythonには12か月ごとにメジャーな新しいリリースがあります( PEP 602 )。

開発者は古いバージョンの「バグ修正」リリースを発行するため、既存のリリースの安定性は徐々に向上します。 バージョン番号の3番目のコンポーネントで示されるバグ修正リリース(例: 3.5.3、3.6.2)、安定性のために管理されています。 バグ修正リリースには既知の問題の修正のみが含まれており、一連のバグ修正リリースを通じてインターフェースが同じままであることが保証されています。

最新の安定版リリースは、常に Pythonダウンロードページにあります。 Pythonには、2.xと3.xの2つの本番環境対応バージョンがあります。 推奨されるバージョンは3.xで、これは最も広く使用されているライブラリでサポートされています。 2.xはまだ広く使用されていますが、 2020年1月1日以降は保守されません


Pythonを使用している人は何人ですか?

正確な数を取得することは困難ですが、おそらく数百万のユーザーがいます。

Pythonは無料でダウンロードできるため、売上高はなく、さまざまなサイトから入手でき、多くのLinuxディストリビューションにパッケージ化されているため、ダウンロード統計でも全体像はわかりません。

comp.lang.pythonニュースグループは非常に活発ですが、すべてのPythonユーザーがグループに投稿したり読んだりするわけではありません。


Pythonで重要なプロジェクトが行われたことがありますか?

Pythonを使用するプロジェクトのリストについては、 https://www.python.org/about/successを参照してください。 過去のPythonカンファレンスの議事録を参照すると、さまざまな企業や組織からの貢献が明らかになります。

注目を集めるPythonプロジェクトには、 MailmanメーリングリストマネージャーZopeアプリケーションサーバーが含まれます。 いくつかのLinuxディストリビューション、特に Red Hat は、インストーラーとシステム管理ソフトウェアの一部またはすべてをPythonで記述しています。 Pythonを内部で使用している企業には、Google、Yahoo、LucasfilmLtdなどがあります。


将来、Pythonにはどのような新しい開発が期待されていますか?

Python拡張提案(PEP)については、 https://www.python.org/dev/peps/を参照してください。 PEPは、Pythonの提案された新機能を説明する設計ドキュメントであり、簡潔な技術仕様と理論的根拠を提供します。 「PythonXYリリーススケジュール」というタイトルのPEPを探します。ここで、XYはまだ公開されていないバージョンです。

新しい開発については、 python-devメーリングリストで説明されています。


Pythonに互換性のない変更を提案することは合理的ですか?

一般的にはありません。 世界中にすでに数百万行のPythonコードがあるため、既存のプログラムのごく一部以上を無効にする言語の変更は、無視する必要があります。 変換プログラムを提供できたとしても、すべてのドキュメントを更新するという問題があります。 多くの本がPythonについて書かれているので、それらすべてを一気に無効にしたくはありません。

機能を変更する必要がある場合は、段階的なアップグレードパスを提供する必要があります。 PEP 5 は、ユーザーの混乱を最小限に抑えながら、後方互換性のない変更を導入するための手順について説明しています。


Pythonは初心者プログラマーにとって良い言語ですか?

はい。

Pascal、C、またはC ++やJavaのサブセットなど、手続き型で静的に型指定された言語で学生を始めることは今でも一般的です。 学生は、Pythonを第一言語として学ぶことでより良いサービスを受けることができます。 Pythonには、非常にシンプルで一貫性のある構文と大規模な標準ライブラリがあり、最も重要なこととして、最初のプログラミングコースでPythonを使用すると、学生は問題の分解やデータ型の設計などの重要なプログラミングスキルに集中できます。 Pythonを使用すると、学生はループやプロシージャなどの基本的な概念をすばやく紹介できます。 彼らはおそらく、最初のコースでユーザー定義オブジェクトを操作することさえできます。

これまでプログラミングしたことがない学生にとって、静的に型付けされた言語を使用することは不自然に思えます。 それは、学生が習得しなければならない追加の複雑さを提示し、コースのペースを遅くします。 学生たちは、コンピューターのように考え、問題を分解し、一貫したインターフェースを設計し、データをカプセル化することを学ぼうとしています。 静的に型付けされた言語の使用法を学ぶことは長期的には重要ですが、それは必ずしも学生の最初のプログラミングコースで取り組むのに最適なトピックではありません。

Pythonの他の多くの側面により、Pythonは優れた第一言語になっています。 Javaと同様に、Pythonには大規模な標準ライブラリがあるため、コースの非常に早い段階で何かを行うプログラミングプロジェクトを学生に割り当てることができます。 割り当ては、標準の4機能計算機および小切手バランシングプログラムに限定されません。 標準ライブラリを使用することにより、学生はプログラミングの基礎を学びながら、現実的なアプリケーションに取り組む満足感を得ることができます。 標準ライブラリを使用すると、コードの再利用についても学習できます。 PyGameなどのサードパーティモジュールも、学生のリーチを拡大するのに役立ちます。

Pythonのインタラクティブなインタプリタを使用すると、学生はプログラミング中に言語機能をテストできます。 プログラムのソースを別のウィンドウに入力している間、インタプリタを実行しているウィンドウを維持できます。 リストのメソッドを思い出せない場合は、次のようにすることができます。

>>> L = []
>>> dir(L) 
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

>>> help(L.append)
Help on built-in function append:

append(...)
    L.append(object) -> None -- append object to end

>>> L.append(1)
>>> L
[1]

通訳があれば、プログラミングをしているので、ドキュメントは学生から遠く離れることはありません。

Python用の優れたIDEもあります。 IDLEは、Tkinterを使用してPythonで記述されたPython用のクロスプラットフォームIDEです。 PythonWinはWindows固有のIDEです。 Emacsユーザーは、Emacsに非常に優れたPythonモードがあることを知って喜ぶでしょう。 これらのプログラミング環境はすべて、コーディング中に構文の強調表示、自動インデント、および対話型インタープリターへのアクセスを提供します。 Python編集環境の完全なリストについては、 Python wiki を参照してください。

教育におけるPythonの使用について話し合いたい場合は、 edu-sigメーリングリストに参加することをお勧めします。