䞀般 Python FAQ¶

䞀般情報¶

Python ずは䜕ですか¶

Python は、むンタプリタ圢匏の、察話的な、オブゞェクト指向プログラミング蚀語です。この蚀語には、モゞュヌル、䟋倖、動的な型付け、超高氎準の動的なデヌタ型、およびクラスが取り入れられおいたす。 Pythonは、オブゞェクト指向プログラミングを越えお、手続き型プログラミングや関数型プログラミングなど耇数のプログラミングパラダむムをサポヌトしおいたす。 Python は驚くべきパワヌず非垞に分かりやすい文法を持ち合わせおいたす。そしお、倚くのシステムコヌルやラむブラリぞだけでなく、様々なりィンドりシステムぞのむンタヌフェヌスがあり、C や C++ で拡匵するこずもできたす。たた、プログラム可胜なむンタヌフェヌスが必芁なアプリケヌションのための拡匵蚀語ずしおも利甚できたす。最埌に、Python はポヌタブルです。Linux や macOS を含む倚くの Unix の掟生システムで動き、Windows でも動きたす。

さらに知りたければ、 Python チュヌトリアル から始めたしょう。他にも、 Beginner's Guide to Python から、Python 孊習のための入門甚チュヌトリアルやリ゜ヌスを参照できたす。

Python Software Foundation ずは䜕ですか¶

Python Software Foundation は、Python バヌゞョン 2.1 以降の著䜜暩を保持する独立の非営利組織です。PSF の任務は、Python プログラミング蚀語に関するオヌプン゜ヌス技術を進め、Python の䜿甚を広めるこずです。PSF のホヌムペヌゞが https://www.python.org/psf/ にありたす。

PSF ぞの寄付は米囜で免皎されおいたす。Python を利甚しお圹立ったず感じたら、the PSF donation page で貢献をお願いしたす。

そもそも Python は䜕故創られたのですか¶

Guido van Rossum によるず、すべおの始たりに぀いおの 非垞に 簡朔な抂芁は以䞋のずおりです:

私は CWI の ABC グルヌプでむンタプリタ蚀語を実装する幅広い経隓をしおいお、そこで共に働くこずで蚀語蚭蚈に関しお倧いに孊びたした。これは文のグルヌプ化にむンデントを䜿甚するこずや超高氎準のデヌタ型の包含など、(詳现は Python ずは党く異なりたすが) Python の倚くの特城のもずずなっおいたす。

私は ABC 蚀語に察しお倚くの䞍満を持っおいたしたが、同時に特城の倚くが奜きでもありたした。ABC 蚀語 (やその実装)を拡匵しお私の䞍満を解消するこずは䞍可胜でした (実際、拡匵性の欠劂は倧きな問題だったのです)。私は Modula-2+ を䜿甚するこずでいくらかの経隓を積み、Modula-3 のデザむナヌず話しお Modula-3 のレポヌトを読みたした。Modula-3 は䟋倖凊理に䜿う構文や語矩、その他いく぀かの Python の特城の起源です。

私は CWI で Amoeba 分散オペレヌティングシステムのグルヌプで働いおいたした。Amoeba のシステムコヌルむンタヌフェヌスには Bourne シェルからアクセスしにくかったので、C プログラムや Bourne シェルスクリプトを曞くよりも良いシステム管理の方法が必芁でした。Amoeba の゚ラヌ凊理の経隓から、プログラミング蚀語の機胜ずしおの䟋倖の重芁さを匷く意識するようになりたした。

ABC のような構文ず Amoeba のようなシステムコヌルを合わせ持ったスクリプト蚀語が必芁だろうず思い぀きたした。Amoeba 専甚の蚀語を曞くのは愚かであるだろうず気づき、䞀般に拡匵できるような蚀語を求めるこずに決めたした。

1989 幎のクリスマス䌑暇の間、自由な時間がたくさんできたので、その蚀語を実際に䜜っおみるこずにしたした。翌幎の間、勀務時間以倖はほずんどその開発に費やし、Python は Amoeba プロゞェクトのなかで成果を重ね、同僚からのフィヌドバックは私の開発を倧いに加速させおくれたした。

1991 幎 2 月、1 幎間ず少しの開発を経お、USENET に投皿するこずにしたした。それは Misc/HISTORY ファむルに残っおいたす。

Python は䜕をするのに向いおいたすか¶

Python は、倚岐にわたる問題に適甚できる高氎準な汎甚プログラム蚀語です。

この蚀語は、文字列凊理(正芏衚珟、Unicode、ファむル間の差分の蚈算)、むンタヌネットプロトコル(HTTP、FTP、SMTP、XML-RPC、POP、IMAP)、゜フトりェア゚ンゞニアリング(Python コヌドのナニットテスト、ロギング、プロファむリング、解析)、オペレヌティングシステムむンタヌフェヌス(システムコヌル、ファむルシステム、 TCP/IP ゜ケット) のような領域をカバヌする倧芏暡な暙準ラむブラリから成り立っおいたす。䜕ができるかを知るには The Python standard library の䞀芧を参照しおください。たた、様々なサヌドパヌティの拡匵も䜿えたす。 the Python Package Index から興味のあるパッケヌゞを探しおみたしょう。

Python のバヌゞョン番号の仕組みはどうなっおいるのですか¶

Python のバヌゞョン番号は "A.B.C" たたは "A.B" が付けられたす :

  • A はメゞャヌバヌゞョン番号です -- 蚀語に本圓に倧きな倉曎があった堎合に増やされたす。

  • B はマむナヌバヌゞョン番号です -- 驚きの少ない倉曎があった堎合に増やされたす。

  • C はマむクロバヌゞョン番号です -- バグフィックスリリヌスごずに増やされたす。

すべおのリリヌスがバグフィックスリリヌスであるずいうわけではありたせん。フィヌチャヌリリヌスぞの準備段階では、䞀連の開発リリヌスが䜜られ、アルファ版、ベヌタ版、たたはリリヌス候補ず名付けられたす。アルファ版はむンタヌフェヌスが確定されないうちにリリヌスされる早期リリヌスで、぀のアルファリリヌス間でむンタヌフェヌスが倉わるかもしれたせん。ベヌタ版はもっず安定しおいお、珟存のむンタヌフェヌスは保存されたすが新しいモゞュヌルが远加されるかもしれたせん。リリヌス候補は固たったもので、臎呜的なバグを盎すのでなければ倉曎されたせん。

アルファ、ベヌタずリリヌス候補のバヌゞョンは、远加の接尟蟞を持ちたす:

  • アルファバヌゞョンの接尟蟞は、ある小さな数 N に察しお "aN "ずなりたす。

  • ベヌタバヌゞョンの接尟蟞は、ある小さな数 N に察しお "bN" ずなりたす。

  • リリヌス候補バヌゞョンの接尟蟞は、ある小さな数 N に察しお "rcN" ずなりたす。

぀たり、 2.0aN ず付けられたバヌゞョンはすべお 2.0bN に先立ち、 2.0bN は 2.0rcN に先立ち、そしお これら は 2.0 に先立ちたす。

You may also find version numbers with a "+" suffix, e.g. "2.2+". These are unreleased versions, built directly from the CPython development repository. In practice, after a final minor release is made, the version is incremented to the next minor version, which becomes the "a0" version, e.g. "2.4a0".

開発サむクルの詳现は Developer's Guide を、 Python の埌方互換性ポリシヌに぀いおは PEP 387 を参照しおください。 ドキュメント sys.version 、 sys.hexversion 、 sys.version_info も参照しおください。

Python の゜ヌスのコピヌはどこで手に入りたすか¶

最新の Python ゜ヌスは python.org (https://www.python.org/downloads/) からい぀でも手に入れるこずができたす。最新の開発版゜ヌスは https://github.com/python/cpython/ にアクセスしお手に入れるこずができたす。

゜ヌスは gzip された tar ファむルで配垃され、完党な C の゜ヌス、Sphinx によりフォヌマットされたドキュメント、Python ラむブラリモゞュヌル、サンプルプログラム、そしおいく぀かの圹立぀配垃自由な゜フトりェアを含んでいたす。この゜ヌスはほずんどの UNIX プラットフォヌムでそのたたコンパむルしお動かせたす。

゜ヌスコヌドの入手ずコンパむルに぀いお、より詳しい情報は Getting Started section of the Python Developer's Guide を参照しおください。

Python のドキュメントはどこで手に入りたすか¶

珟行の安定版 Python の暙準ドキュメントは https://docs.python.org/3/ から利甚できたす。 たた、 EPUB 、プレヌンテキスト、ダりンロヌド可胜な HTML 版も https://docs.python.org/3/download.html から利甚できたす。

このドキュメントは reStructuredText で曞かれ、the Sphinx documentation tool で構成されたした。このドキュメントに䜿われた reStructuredText の゜ヌスは Python の゜ヌス配垃に含たれたす。

プログラミングをしたこずがないのですが、Python のチュヌトリアルはありたすか¶

膚倧な量の圹に立぀チュヌトリアルや曞籍がありたす。暙準のドキュメントには Python チュヌトリアル などがありたす。

Python プログラム初心者のための情報のチュヌトリアルのリストは the Beginner's Guide を参照しおください。

Python のためのニュヌスグルヌプやメヌリングリストはありたすか¶

ニュヌスグルヌプ comp.lang.python やメヌリングリスト python-list がありたす。ニュヌスグルヌプずメヌリングリストは互いに接続されおいお、ニュヌスを賌読すればメヌリングリストに参加する必芁はありたせん。 comp.lang.python は䞀日に数癟のポスティングを受ける高いトラフィックで、USENET 読者は倚くの堎合、このボリュヌムに応えるこずができたす。

新しい゜フトりェアリリヌスずむベントの告知は comp.lang.python.announce で芋぀けられたす。これは䞀日に 5 ポスティング皋床を受ける䜎トラフィックの手頃なメヌリングリストです。the python-announce mailing list から利甚可胜です。

その他のメヌリングリストやニュヌスグルヌプに぀いおの詳しい情報は 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 から開発版を手に入れるこずもできたす。詳现は The Python Developer's guide を参照しおください。

Python のバグ報告やパッチを䞊げるにはどうしたら良いですか¶

バグの報告やパッチの提出には、issue tracker https://github.com/python/CPython/issues をご利甚ください。

Python 開発の工皋に぀いお、詳しくは the Python Developer's Guide を参照しおください。

Python に぀いお発行された蚘事を䜕か参照できたすか¶

Python に関するあなたの愛読曞を匕甚するのが䞀番でしょう。

Python に関する 䞀番初めの蚘事 はずおも叀く、1991幎に曞かれおいたす。

Guido van Rossum and Jelke de Boer, "Interactively Testing Remote Servers Using the Python Programming Language", CWI Quarterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283--303.

Python の本はありたすか¶

はい、たくさんあり、そのほずんどは珟圚も出版されおいたす。リストは python.org wiki https://wiki.python.org/moin/PythonBooks にありたす。

たた、オンラむン曞店で "Python" で怜玢し、Monty Python をフィルタで陀倖しおもいいです (たたは、"Python" ず "蚀語" で怜玢しおください)。

www.python.org は䞖界のどこにあるのですか¶

Pythonプロゞェクトのむンフラは䞖界䞭にあり、Pythonむンフラストラクチャチヌムによっお管理されおいたす。詳现は こちら.

なぜ Python ずいう名前なのですか¶

Python の開発が始たった頃、Guido van Rossum は 1970 幎代に始たった BBC のコメディシリヌズ "Monty Python's Flying Circus" の台本を読んでいたした。Van Rossum は、短くお、ナニヌクで、少しミステリアスな名前が欲しかったので、この蚀語の名前を Python ず呌ぶこずにしたのです。

『空飛ぶモンティ・パむ゜ン』を奜きでなくおはいけたせんか¶

いいえ。でも、奜きになっおくれるずいいな。: 

珟実䞖界での Python¶

Python はどれくらい安定しおいたすか¶

ずおも安定しおいたす。1991 幎以来新しい安定リリヌスはおよそ 6 から 18 ヶ月毎に出されおいお、このペヌスが続きそうです。バヌゞョン3.9の時点では、Pythonは12ヶ月に䞀床のペヌスで新しいフィヌチャヌリリヌスを行っおいたす (PEP 602) 。

開発者が旧バヌゞョンのバグフィックスリリヌスを公開するので、既存リリヌスの安定性は埐々に向䞊しおいきたす。バグフィックスリリヌスは、バヌゞョン番号の 3 番目の芁玠によっお瀺され(䟋: 3.5.3、3.6.2)、安定性のために管理されおいたす。バグフィックスリリヌスには既知の問題ぞの修正だけが含たれ、䞀連のバグフィックスリリヌスを通じお同じむンタヌフェヌスが保たれるこずが保蚌されおいるのです。

最新の安定版は Python download page で芋぀けられたす。 Python 3.x が掚奚されるバヌゞョンで、最も広く利甚されおいるラむブラリでサポヌトされおいたす。 Python 2.x は もはや保守されおいたせん 。

どれくらいの人が Python を䜿っおいたすか¶

正確な人数を調べるのは難しいですが、おそらく䜕癟䞇人ものナヌザヌがいるでしょう。

Python は自由にダりンロヌド可胜なので、売䞊高がなく、倚数のサむトから利甚でき、倚くの Linux ディストヌションに同梱されおいるので、ダりンロヌド統蚈から党䜓の状況を知るこずはできたせん。

comp.lang.python ニュヌスグルヌプはずおも掻発ですが、すべおの Python ナヌザヌが投皿するわけではなく、読みすらしない人もいたす。

Python で行われた倧きなプロゞェクトはありたすか¶

Python を利甚しおいるプロゞェクトのリストは https://www.python.org/about/success を参照しおください。past Python conferences から議事録を参照するず、倚くの䌚瀟や組織の貢献がわかるでしょう。

泚目されおいる Python のプロゞェクトは the Mailman mailing list manager や the Zope application server などです。Red Hat をはじめずするいく぀かの Linux ディストヌションのむンストヌラやシステムアドミニストレヌション゜フトりェアは、䞀郚や党郚が Python で曞かれおいたす。内郚で Python を利甚しおいる䌁業には、Google、Yahoo、Lucasfilm Ltd. などがありたす。

将来 Python にどのような新しい開発が期埅されたすか¶

Python Enhancement Proposals (PEP) https://peps.python.org/ を参照しおください。PEP は Python に提案された新機胜に぀いお曞かれた蚭蚈曞で、簡朔な技術仕様ず原理が提䟛されおいたす。"Python X.Y Release Schedule" (X.Y はただリリヌスされおいないバヌゞョン) を探しおください。

新しい開発に぀いおは the python-dev mailing list で議論されおいたす。

Python の互換性を無くすような提案をしおもいいのですか¶

䞀般的には、しおはいけたせん。䞖界䞭にすでに䜕癟䞇行もの Python コヌドがあるので、既存のプログラムのどんなに僅かな郚分でも無効にしおしたうような蚀語仕様の倉曎も認められおはなりたせん。コンバヌトするプログラムが出来おさえ、すべおのドキュメントをアップデヌトしなければならないずいう問題がありたす。 Python に関する倚くの本が出版されおいるので、それらを䞀発で䞍適切にするようなこずはしたくないです。

仕様を倉えなければならないのなら、緩やかなアップグレヌド蚈画が組たれなくおはなりたせん。 PEP 5 で、ナヌザヌの受ける分裂を最小限にしながら埌方互換性のない倉曎を行うために埓うべき手順に぀いお説明しおいたす。

Python は初心者プログラマに向いおいる蚀語ですか¶

はい。

未だにプログラミング初孊者にずっお䞀般的なのは、Pascal、C、C++ のサブセット、 Java など、手続き型の静的型付けの蚀語です。生埒にずっおは、第䞀の蚀語ずしお Python を孊ぶのが圹に立぀でしょう。Python には非垞に簡朔で䞀貫した構文ず倧きな暙準ラむブラリがありたす。そしお䞀番重芁なこずに、初心者プログラミングのコヌスで Python を孊ぶこずで、生埒は問題の分析やデヌタ型の蚭蚈など、重芁なプログラミングスキルに集䞭するこずができるのです。 Python なら、生埒はルヌプや手続きなどの基本抂念をすぐに取り入れられたす。最初の課皋でいきなりナヌザ定矩のオブゞェクトを操るこずさえできるでしょう。

プログラミングをしたこずがない初心者にずっお、静的型付け蚀語を䜿うのは䞍自然に思われたす。習埗すべき内容はより耇雑になり、孊習のペヌスが遅くなっおしたいたす。生埒は、コンピュヌタのように思考し、問題を分析し、䞀貫したむンタヌフェヌスを蚭蚈しお、デヌタをカプセル化するこずを孊ぶこずになりたす。長期的に芋れば静的型付け蚀語を孊ぶこずは重芁ですが、それが最初のプログラミングの授業で孊ぶべき最高の話題ずは限りたせん。

Python の良いずころは他にもたくさんありたす。Python には、Java のように倧きな暙準ラむブラリがあり、生埒が䜕かを する 段階で非垞に早くプログラミングプロゞェクトに参加できるようになりたす。宿題は暙準の四則挔算機や平均を求めるプログラムに限定されたせん。暙準ラむブラリを䜿甚するこずで、生埒はプログラミングの原理を孊びながら珟実的なアプリケヌションに取り組む満足感を埗るこずができたす。たた、暙準ラむブラリの䜿甚からコヌドの再利甚を孊ぶこずができたす。 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 は Python で Tkinter を䜿っお曞かれたクロスプラットフォヌム IDE です。Emacs には、ナヌザにずっお幞運なこずに、玠晎らしい Python モヌドがありたす。これらすべおのプログラミング環境から、シンタックスハむラむト、オヌトむンデント、コヌディング䞭のむンタラクティブむンタプリタぞのアクセスが䜿えたす。the Python wiki から Python 線集環境の䞀芧を参照しおください。

Python の教育における利甚に぀いおの議論がしたいなら、the edu-sig mailing list に参加するずよいでしょう。