「Python」の版間の差分
(18人の利用者による、間の35版が非表示) | |||
4行目: | 4行目: | ||
{{Otheruses|プログラミング言語|その他の用法|パイソン (曖昧さ回避)}} |
{{Otheruses|プログラミング言語|その他の用法|パイソン (曖昧さ回避)}} |
||
{{Infobox プログラミング言語 |
{{Infobox プログラミング言語 |
||
| fetchwikidata = ALL |
| fetchwikidata = ALL |
||
| onlysourced = false |
| onlysourced = false |
||
| |
| 名前 = Python |
||
| |
| ロゴ = File:Python logo and wordmark.svg |
||
| パラダイム = <!-- パラダイム --> |
|||
| |
| 登場時期 = {{start date|1991}} |
||
⚫ | | |
||
| 設計者 = <!-- 設計者 --> |
|||
⚫ | |||
| 開発者 = <!-- 開発者 --> |
|||
⚫ | |||
⚫ | | 最新リリース = {{Latest stable software release/CPython}} <!-- バージョンを更新するときはこのページを編集せず、Template:Latest stable software release/CPython で番号と日付を更新して下さい --> |
||
⚫ | | |
||
| 最新リリース日 = <!-- 最新版リリース年月日、{{start date and age|YYYY|MM|DD}} --> |
|||
⚫ | | |
||
⚫ | | 型付け = [[強い型付け]] [[動的型付け]]<!--[[ダック・タイピング]]--><!-- 型システム --> |
||
⚫ | |||
⚫ | |||
⚫ | |||
| 影響を受けた言語 = <!-- 影響を受けた言語 --> |
|||
⚫ | | 影響を与えた言語 = [[Boo (プログラミング言語)|Boo]]<br>[[Cobra (プログラミング言語)|Cobra]]<br>[[D言語|D]]<br>[[F Sharp|F#]]<br>[[Falcon]]<br>[[Go (プログラミング言語)|Go]]<br>[[Groovy]]<br>[[JavaScript]]<ref>[http://speakingjs.com/es5/ch03.html Chapter 3. The Nature of JavaScript] - Speaking JavaScript、2019年4月19日閲覧</ref><br>[[Ruby]]<ref name="bini"/><br>[[Perl]]<br>[[Scala]]<br>[[Swift (プログラミング言語)|Swift]] |
||
| プラットフォーム = <!-- プラットフォーム --> |
|||
| ライセンス = <!-- ライセンス --> |
|||
⚫ | |||
| 拡張子 = <!-- 拡張子 --> |
|||
| wikibooks = Python Programming |
|||
}} |
}} |
||
'''Python'''(パイソン)は[[インタプリタ|インタープリタ]]型の[[高水準言語|高水準]]汎用プログラミング言語である。 |
'''Python'''(パイソン)は[[インタプリタ|インタープリタ]]型の[[高水準言語|高水準]]汎用[[プログラミング言語]]である。 |
||
== 概要 == |
== 概要 == |
||
Pythonは1991年に[[グイド・ヴァンロッサム|グイド・ヴァン・ロッサム]]により開発されたプログラミング言語である。 |
Pythonは1991年に[[グイド・ヴァンロッサム|グイド・ヴァン・ロッサム]]により開発されたプログラミング言語である。 |
||
最初にリリースされたPythonの設計哲学は、ホワイトスペース([[オフサイドルール]])の顕著な使用によってコードの可読性を重視している。その言語構成と[[オブジェクト指向]]のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。 |
最初にリリースされたPythonの設計哲学は、ホワイトスペース([[オフサイドルール]])の顕著な使用によって[[ソースコード|コード]]の可読性を重視している。その言語構成と[[オブジェクト指向]]のアプローチは、[[プログラマ]]が小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。 |
||
Pythonは[[動的プログラミング言語|動的に型付け]]されていて、[[ガベージコレクション]]されている。[[構造化プログラミング|構造化]]︵特に[[手続き型プログラミング|手続き型]]︶、[[オブジェクト指向]]、[[関数型言語|関数型プログラミング]]を含む複数の[[プログラミングパラダイム]]をサポートしている。Pythonは、その包括的な標準ライブラリのため、しばしば﹁バッテリーを含む﹂言語と表現されている<ref group="†">{{Cite web|title=Welcome to Python.org|url=https://www.python.org/about/|website=Python.org|accessdate=2020-08-10|language=en}}</ref>。
|
Pythonは[[動的プログラミング言語|動的に型付け]]されていて、[[ガベージコレクション]]されている。[[構造化プログラミング|構造化]]︵特に[[手続き型プログラミング|手続き型]]︶、[[オブジェクト指向]]、[[関数型言語|関数型プログラミング]]を含む複数の[[プログラミングパラダイム]]をサポートしている。Pythonは、その包括的な標準ライブラリのため、しばしば﹁バッテリーを含む﹂言語と表現されている<ref group="†">{{Cite web|title=Welcome to Python.org|url=https://www.python.org/about/|website=Python.org|accessdate=2020-08-10|language=en}}</ref>。
|
||
Pythonのインタプリタは多くのOSに対応している。プログラマーのグローバルコミュニティは、[[FLOSS| |
Pythonのインタプリタは多くのOSに対応している。プログラマーのグローバルコミュニティは、[[FLOSS|自由かつオープンソース]] <ref group="†">{{Cite web|url=https://docs.python.org/3/license.html|title=History and License|accessdate=5 December 2016}} "All Python releases are Open Source"</ref> の[[リファレンス実装]]である[[CPython]]を開発および保守している 。非営利団体である[[Pythonソフトウェア財団]]は、PythonとCPythonの開発のためのリソースを管理・指導している。 |
||
=== 特徴 === |
=== 特徴 === |
||
Pythonは[[インタプリタ]]上で実行することを前提に設計している。以下の特徴をもっている: |
Pythonは[[インタプリタ]]上で実行することを前提に設計している。以下の特徴をもっている: |
||
116行目: | 125行目: | ||
例として、文字列型の値を受け取って文字列型の値を返す関数は次のようにアノテーションできる。<syntaxhighlight lang="python3"> |
例として、文字列型の値を受け取って文字列型の値を返す関数は次のようにアノテーションできる。<syntaxhighlight lang="python3"> |
||
def greeting(name: str) -> str: |
def greeting(name: str) -> str: |
||
return |
return f"Hello {name}" |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
155行目: | 164行目: | ||
=== 多言語の扱い === |
=== 多言語の扱い === |
||
最初のPythonでは1バイト単位での[[文字列]]型のみ扱い、[[仮名|ひらがな・(全角) カタカナ]]および漢字のような[[マルチバイト文字]]はサポートしていなかったが、その後のPython 2.0からは[[Unicode]]文字型が新たに導入された<ref group="†" name="PEP100" />。 |
最初のPythonでは1バイト単位での[[文字列]]型のみ扱い、[[仮名 (文字)|ひらがな・(全角) カタカナ]]および漢字のような[[マルチバイト文字]]はサポートしていなかったが、その後のPython 2.0からは[[Unicode]]文字型が新たに導入された<ref group="†" name="PEP100" />。 |
||
Python 3.0では、Python 2.xにおける文字列型がバイト列型に、またUnicode文字列型が文字列型に変更された。これにより、文字列をPython 3.0で扱う際には後述の変換処理を必ず行う必要がある。ファイル入出力などでエンコードを明示しなければ、標準エンコードを用いて暗黙に行われる場合も多い。これにより多言語の扱いを一貫したものにしている。 |
Python 3.0では、Python 2.xにおける文字列型がバイト列型に、またUnicode文字列型が文字列型に変更された。これにより、文字列をPython 3.0で扱う際には後述の変換処理を必ず行う必要がある。ファイル入出力などでエンコードを明示しなければ、標準エンコードを用いて暗黙に行われる場合も多い。これにより多言語の扱いを一貫したものにしている。 |
||
166行目: | 175行目: | ||
<syntaxhighlight lang="python"> |
<syntaxhighlight lang="python"> |
||
#! |
#!/usr/bin/env python3 |
||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||
s = '日本語の文字列' |
s = '日本語の文字列' |
||
176行目: | 185行目: | ||
=== 動作環境 === |
=== 動作環境 === |
||
Pythonの最初のバージョンは[[Amoeba (オペレーティングシステム)|Amoeba]]上で開発された。のちに多くの計算機環境上で動作するようになった。 |
Pythonの最初のバージョンは[[Amoeba (オペレーティングシステム)|Amoeba]]上で開発された。のちに多くの計算機環境上で動作するようになった。 |
||
* [[Microsoft Windows|Windows]] |
* [[Microsoft Windows|Windows]], [[Microsoft Windows CE|Windows CE]]([[Windows 9x系|9x系]]および[[Windows NT系|NT系]]は最新版、[[Microsoft Windows 3.x|Windows 3.1]]および[[MS-DOS]]は旧版のみ) |
||
* Macintosh ([[Classic Mac OS]]および[[macOS]]ともに) |
* Macintosh ([[Classic Mac OS]]および[[macOS]]ともに) |
||
* iOS Pythonista for iOS (omz:software) |
* iOS Pythonista for iOS (omz:software) |
||
201行目: | 210行目: | ||
* [[tinypy]] - 同じく組み込み向けの実装。ソースコードが 64 [[キロバイト|kB]]未満と非常に軽量なことが謳われている。 |
* [[tinypy]] - 同じく組み込み向けの実装。ソースコードが 64 [[キロバイト|kB]]未満と非常に軽量なことが謳われている。 |
||
* [[MicroPython]] - 組み込み向けの実装。256 kB以上のフラッシュを推奨。 |
* [[MicroPython]] - 組み込み向けの実装。256 kB以上のフラッシュを推奨。 |
||
* [[Pyodide]] - [[WebAssembly]]向けの実装 |
* [[Pyodide]] - [[WebAssembly]]向けの実装<ref group="※">[https://github.com/iodide-project/pyodide GitHub - pyodide/pyodide: Python with the scientific stack, compiled to WebAssembly.]</ref>。 |
||
* [[IPython]] - 対話計算に向けたPythonへのシェル |
* [[IPython]] - 対話計算に向けたPythonへのシェル |
||
* Codon - Python言語ソースから機械語へのコンパイラ処理系<ref>[https://github.com/exaloop/codon exaloop/Codon]</ref><ref>[https://news.mit.edu/2023/codon-python-based-compiler-achieve-orders-magnitude-speedups-0314 "Python-based compiler achieves orders-of-magnitude speedups", MIT News, (March 14, 2023).]</ref><ref>[https://spectrum.ieee.org/python-compiler "MIT Turbocharges Python’s Notoriously Slow Compiler > Codon lets users run Python code as efficiently as C or C++", IEEE Spectrum (2023年3月30日掲載記事)]</ref> |
* Codon - Python言語ソースから機械語へのコンパイラ処理系<ref>[https://github.com/exaloop/codon exaloop/Codon]</ref><ref>[https://news.mit.edu/2023/codon-python-based-compiler-achieve-orders-magnitude-speedups-0314 "Python-based compiler achieves orders-of-magnitude speedups", MIT News, (March 14, 2023).]</ref><ref>[https://spectrum.ieee.org/python-compiler "MIT Turbocharges Python’s Notoriously Slow Compiler > Codon lets users run Python code as efficiently as C or C++", IEEE Spectrum (2023年3月30日掲載記事)]</ref>。 |
||
* PyOMP - PythonをOpenMPで並列化するシステム<ref>T. G. Mattson, T. A. Anderson and G. Georgakoudis, "PyOMP: Multithreaded Parallel Programming in Python," in Computing in Science & Engineering, vol. 23, no. 6, pp. 77-80, 1 Nov.-Dec. 2021, doi: 10.1109/MCSE.2021.3128806.</ref><ref>[https://www.youtube.com/watch?v=uKD21Yo4yVg PyOMP: Parallel multithreading that is fast AND Pythonic. Presented by Tim Mattson (Intel)]</ref> |
* PyOMP - PythonをOpenMPで並列化するシステム<ref>T. G. Mattson, T. A. Anderson and G. Georgakoudis, "PyOMP: Multithreaded Parallel Programming in Python," in Computing in Science & Engineering, vol. 23, no. 6, pp. 77-80, 1 Nov.-Dec. 2021, doi: 10.1109/MCSE.2021.3128806.</ref><ref>[https://www.youtube.com/watch?v=uKD21Yo4yVg PyOMP: Parallel multithreading that is fast AND Pythonic. Presented by Tim Mattson (Intel)]</ref>。 |
||
== エコシステム == |
== エコシステム == |
||
211行目: | 220行目: | ||
=== パッケージ管理 === |
=== パッケージ管理 === |
||
[[ファイル:Python build and install.png|サムネイル|ビルドシステム/wheel/インストーラ]] |
[[ファイル:Python build and install.png|サムネイル|ビルドシステム/wheel/インストーラ]] |
||
Pythonのパッケージ管理は[[Pip|<code>pip</code>]]・<code>pipenv</code>・<code>poetry</code>・[[EasyInstall]]などの[[パッケージ管理システム]]によっておこなわれる。バイナリパッケージの[[ファイルフォーマット|フォーマット]]には'''wheel'''があり、これを[[インタフェース (情報技術)|インタフェース]]としてビルドシステムとパッケージ管理システムの分離が可能になっている<ref group="†">"Wheel attempts to remedy these problems by providing a simpler interface between the build system and the installer." [https://www.python.org/dev/peps/pep-0427/ PEP 427 -- The Wheel Binary Package Format 1.0]</ref>。 |
Pythonのパッケージ管理は[[Pip|<code>pip</code>]]・<code>pipenv</code>・<code>poetry</code>・<code>rye</code>・[[EasyInstall]]などの[[パッケージ管理システム]]によっておこなわれる。バイナリパッケージの[[ファイルフォーマット|フォーマット]]には'''wheel'''があり、これを[[インタフェース (情報技術)|インタフェース]]としてビルドシステムとパッケージ管理システムの分離が可能になっている<ref group="†">"Wheel attempts to remedy these problems by providing a simpler interface between the build system and the installer." [https://www.python.org/dev/peps/pep-0427/ PEP 427 -- The Wheel Binary Package Format 1.0]</ref>。 |
||
[[Python Package Index]] (PyPI) と呼ぶ公式のパッケージリポジトリが存在する。 |
[[Python Package Index]] (PyPI) と呼ぶ公式のパッケージリポジトリが存在する。 |
||
222行目: | 231行目: | ||
**[[行列]]演算パッケージの [[NumPy]] |
**[[行列]]演算パッケージの [[NumPy]] |
||
** プログラミング数学、科学、工学のための数値計算 [[SciPy]] |
** プログラミング数学、科学、工学のための数値計算 [[SciPy]] |
||
* 機械学習・データサイエンス・AI |
|||
⚫ | |||
⚫ | |||
⚫ | |||
* データ解析ソフト [[pandas]] |
* データ解析ソフト [[pandas]] |
||
⚫ | |||
* グラフ表示ソフト [[Matplotlib]] |
* グラフ表示ソフト [[Matplotlib]] |
||
* 描画ソフト [[Seaborn]] |
* 描画ソフト [[Seaborn]] |
||
⚫ | |||
* 数式処理機能 [[SymPy]] |
* 数式処理機能 [[SymPy]] |
||
* データ処理の高速化 [[PyPy]] |
* データ処理の高速化 [[PyPy]] |
||
* Pythonアプリのコンパイルによる高速化 [[Numba]] |
* Pythonアプリのコンパイルによる高速化 [[Numba]] |
||
* 機械学習 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
* 画像処理のための [[Python Imaging Library]] |
* 画像処理のための [[Python Imaging Library]] |
||
* [[SDL]]のラッパである [[Pygame]] |
* [[SDL]]のラッパである [[Pygame]] |
||
265行目: | 274行目: | ||
[[NumPy]], [[SciPy]]などの高速な数値計算ライブラリの存在により、データサイエンスや科学技術コンピューティングにもよく用いられる。NumPy, SciPyの内部はC言語で書かれているので、動的スクリプト言語の欠点の一つである動作速度の遅さを補っている<ref>{{cite web|url=http://www.computer.org/csdl/mags/cs/2011/02/mcs2011020009.html|title=Python for Scientists and Engineers|accessdate=2015-08-09}}</ref>。[[Numba]] を使うと、Python のコードが [[LLVM]] に [[JITコンパイル]]して利用可能であり、非常に高速な計算ができる。[[TensorFlow]] などのライブラリにより [[Graphics Processing Unit|GPU]] 上で高速に計算するライブラリも充実している。 |
[[NumPy]], [[SciPy]]などの高速な数値計算ライブラリの存在により、データサイエンスや科学技術コンピューティングにもよく用いられる。NumPy, SciPyの内部はC言語で書かれているので、動的スクリプト言語の欠点の一つである動作速度の遅さを補っている<ref>{{cite web|url=http://www.computer.org/csdl/mags/cs/2011/02/mcs2011020009.html|title=Python for Scientists and Engineers|accessdate=2015-08-09}}</ref>。[[Numba]] を使うと、Python のコードが [[LLVM]] に [[JITコンパイル]]して利用可能であり、非常に高速な計算ができる。[[TensorFlow]] などのライブラリにより [[Graphics Processing Unit|GPU]] 上で高速に計算するライブラリも充実している。 |
||
[[ジェットブレインズ|JetBrains]] とPythonソフトウェア財団による共同調査によると、2017年10月現在、最も主要な用途は何かというアンケート |
[[ジェットブレインズ|JetBrains]] とPythonソフトウェア財団による共同調査によると、2017年10月現在、Pythonの最も主要な用途は何かというアンケートの結果によると、27%がデータサイエンス(そのうち18%がデータ解析、9%が[[機械学習]])である<ref name="python-developers-survey-2017"/>。 |
||
=== Webアプリケーション用途 === |
=== Webアプリケーション用途 === |
||
283行目: | 292行目: | ||
=== 教育用 === |
=== 教育用 === |
||
Pythonは教育用 |
Pythonは本来は教育用を目的として設計されたわけではないが<ref name="not-for-education" />、その単純さから子供が最初に学ぶプログラミングにおける教育用の言語としての利用が増えている。[[グイド・ヴァンロッサム]]はPython設計以前に教育用言語である[[ABC_(プログラミング言語)|ABC]]の開発にかかわり、教育用としての利用について期待感を示したこともあり、方針として非技術者向けといった利用を視野に入れているとされることもある<ref name="edu-sig" />。
|
||
<blockquote>私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。それを考えてくれ――次の世代の話だね。<cite>-- [ |
<blockquote>私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。それを考えてくれ――次の世代の話だね。<cite>-- [https://srad.jp/story/04/07/24/1020202/ スラド『 Guido van Rossum へのインタビュー』]</cite></blockquote> |
||
[[情報処理推進機構]] (IPA) は[[国家試験]]の[[基本情報技術者試験]]で2020年の春期試験 |
[[情報処理推進機構]] (IPA) は[[国家試験]]の[[基本情報技術者試験]]では2020年の春期試験から [[COBOL]] を廃止して Python を追加した<ref>[https://www.ipa.go.jp/about/press/20190124.html プレス発表 基本情報技術者試験における出題を見直し:IPA 独立行政法人 情報処理推進機構]</ref>。 |
||
日本の[[情報 (教科)|高等学校情報科]]「情報Ⅰ」の教員向け研修教材の中で、プログラミング用言語としてPythonが使われている<ref>[[文部科学省]]初等中等教育局情報教育・外国語教育課 [https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm 高等学校情報科「情報Ⅰ」教員研修用教材(本編)]「[http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/05/15/1416758_005.pdf 第3章 コンピューターとプログラミング]」(2019年5月)</ref>。 |
日本の[[情報 (教科)|高等学校情報科]]「情報Ⅰ」の教員向け研修教材の中で、プログラミング用言語としてPythonが使われている<ref>[[文部科学省]]初等中等教育局情報教育・外国語教育課 [https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416756.htm 高等学校情報科「情報Ⅰ」教員研修用教材(本編)]「[http://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2019/05/15/1416758_005.pdf 第3章 コンピューターとプログラミング]」(2019年5月)</ref>。 |
||
ただし、Pythonの言語は,言語自身に組み込まれている型とそれに付随するメソッドの多いことなどから,C言語 |
ただし、Pythonの言語は,言語自身に組み込まれている型とそれに付随するメソッドの多いことなどから,C言語に較べると遙かに多くの憶えなければならない事柄があることになる。持つ機能の一部だけに限定して教育に用いるならば,憶えなければならない事柄を減らすことができるが,しかし言語の機能をすべて知っていないと他人の書いたプログラムを正しく理解することが出来ない可能性が生じる。Python言語の変数自身には型が無いことから,プログラム上で扱われているデータ・オブジェクトの型が何であるかは実行時に動的に決まるので,それを読み解いて把握しなければプログラムが行っている処理の内容を正しく把握することが難しいことがしばしばある︵正しい注釈を付けてプログラムを書くことが重要である︶。
|
||
また、Pythonは処理 |
また、Pythonの文法は僅か1行でも処理を記述できるほどに簡潔なので、まだプログラミングについてよく知らない子供でも取り組みやすい言語であると言える。<ref name=":5">{{Cite web|和書|title=Pythonとは?主な特徴や子どもに習得させるメリットを知っておこう |url=https://www.hallo.jp/fs/column/20230202/ |website=www.hallo.jp |access-date=2023-06-02 |language=ja}}</ref>
|
||
<syntaxhighlight lang="python3"> |
<syntaxhighlight lang="python3"> |
||
# Pythonで記述した「Hello,World!」の例 |
# Pythonで記述した「Hello,World!」の例 |
||
# Pythonは |
# Pythonはたった一行のコードで文字を表示することができる。 |
||
print("Hello, World!") |
print("Hello, World!") |
||
</syntaxhighlight><syntaxhighlight lang="java"> |
</syntaxhighlight><syntaxhighlight lang="java"> |
||
// Javaで記述した「Hello, World!」の例 |
// Javaで記述した「Hello, World!」の例 |
||
// Javaは文字の表示に最低5行(括弧を除くと3行)コードを記述する必要がある。 |
// Javaでは文字の表示に最低5行(括弧を除くと3行)コードを記述する必要がある(もちろん改行をせずに横に連ねて書けば1行にもできるのだが)。 |
||
public class hoge { |
public class hoge { |
||
public static void main(String...args) { |
public static void main(String...args) { |
||
307行目: | 316行目: | ||
} |
} |
||
} |
} |
||
</syntaxhighlight>Pythonはその文法の |
</syntaxhighlight>Pythonはその文法の簡潔さにより、 誰が書いても似たようなコードになりやすい性質があるので、学習が進むにつれて大人が作成したコードを理解できるようになる。<ref name=":5" /> |
||
また、 |
また、文法が簡潔なのでコードを記述している最中に混乱することが少なくなり、子供が途中で諦めてしまう傾向が少ない点も教育用として利用される理由でもある。<ref name=":5" /> |
||
=== スポーツパフォーマンス分析 === |
=== スポーツパフォーマンス分析 === |
||
316行目: | 325行目: | ||
Pythonを使ってデータをプログラミングする方法を示したり、マネーボールのストーリーの背景にある主張を検証したり、マネーボールの統計の進化を調べたりすることが可能である。公開されているデータセットから野球のパフォーマンス統計を計算するプロセスを案内される。実行期待値マトリックスを使用して導出された、より高度な測定値(Wins Over Replace([[WAR (野球)|WAR]])など)に進む。これらの統計を使用して、独自のチームおよびプレーヤーの分析を行うことができるようになる<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。 |
Pythonを使ってデータをプログラミングする方法を示したり、マネーボールのストーリーの背景にある主張を検証したり、マネーボールの統計の進化を調べたりすることが可能である。公開されているデータセットから野球のパフォーマンス統計を計算するプロセスを案内される。実行期待値マトリックスを使用して導出された、より高度な測定値(Wins Over Replace([[WAR (野球)|WAR]])など)に進む。これらの統計を使用して、独自のチームおよびプレーヤーの分析を行うことができるようになる<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。 |
||
Pythonを使用してプロスポーツの試合結果の予測を生成する方法の主な重点は、チームの支出に関するデータを使用して、ゲームの結果をモデル化する方法として[[ロジスティック回帰]]の方法を教えることである。過去の結果をモデル化し、そのモデルを使用して、まだプレイされていない結果のゲームを予測するプロセスを実行する。ベッティングオッズのデータを使用してモデルの信頼性を評価する方法をオーナーに示す。分析は最初に英国プレミアリーグに適用され、次にNBAとNHLに適用される。データ分析とギャンブルの関係、その歴史、および個人的なリスクを含むスポーツベッティングに関連して発生する社会的問題の概要も説明する。マネーボールは、データ分析を使用してチームの勝率を高めることができることを示すことにより、プロスポーツのパフォーマンス統計の分析に革命を引き起こした<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。 |
Pythonを使用してプロスポーツの試合結果の予測を生成する方法の主な重点は、チームの支出に関するデータを使用して、ゲームの結果をモデル化する方法として[[ロジスティック回帰]]の方法を教えることである。過去の結果をモデル化し、そのモデルを使用して、まだプレイされていない結果のゲームを予測するプロセスを実行する。ベッティングオッズのデータを使用してモデルの信頼性を評価する方法をオーナーに示す。分析は最初に英国プレミアリーグに適用され、次にNBAとNHLに適用される。データ分析とギャンブルの関係、その歴史、および個人的なリスクを含むスポーツベッティングに関連して発生する社会的問題の概要も説明する。マネーボールは、データ分析を使用してチームの勝率を高めることができることを示すことにより、プロスポーツのパフォーマンス統計の分析に{{独自研究範囲|革命を引き起こした|date=2024年2月}}<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。
|
||
Pythonを使用してデータをプログラムし、マネーボールのストーリーの背後にある主張をテストし、マネーボール統計の進化を調べる方法を示し、公開されているデータセットから野球のパフォーマンス統計を計算するプロセスができる<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。スポーツ分析には、トレーニングと競技の両方の取り組みを定量化するアスリートとチームからの大量のPythonデータセットが含まれるようになった。ウェアラブルテクノロジーデバイスは、アスリートが毎日着用しており、シーズン全体にわたるアスリートのストレスと回復を詳細に調べるためのかなりの機会を提供する。これらの大規模なデータセットのキャプチャは、怪我の予防に関する新しい仮説と戦略、およびトレーニングと回復を最適化するためのアスリートへの詳細なフィードバックにつながった。Pythonでのプログラミングを使用して、トレーニング、回復、パフォーマンスに関連する概念を調査することもできる<ref>{{Cite web |title=Wearable Technologies and Sports Analytics |url=https://www.coursera.org/learn/wearable-technologies?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。 |
Pythonを使用してデータをプログラムし、マネーボールのストーリーの背後にある主張をテストし、マネーボール統計の進化を調べる方法を示し、公開されているデータセットから野球のパフォーマンス統計を計算するプロセスができる<ref name=":4">{{Cite web |title=Moneyball and Beyond |url=https://www.coursera.org/learn/moneyball-and-beyond?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref><ref name=":3">{{Cite web |title=Prediction Models with Sports Data |url=https://www.coursera.org/learn/prediction-models-sports-data?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。スポーツ分析には、トレーニングと競技の両方の取り組みを定量化するアスリートとチームからの大量のPythonデータセットが含まれるようになった。ウェアラブルテクノロジーデバイスは、アスリートが毎日着用しており、シーズン全体にわたるアスリートのストレスと回復を詳細に調べるためのかなりの機会を提供する。これらの大規模なデータセットのキャプチャは、怪我の予防に関する新しい仮説と戦略、およびトレーニングと回復を最適化するためのアスリートへの詳細なフィードバックにつながった。Pythonでのプログラミングを使用して、トレーニング、回復、パフォーマンスに関連する概念を調査することもできる<ref>{{Cite web |title=Wearable Technologies and Sports Analytics |url=https://www.coursera.org/learn/wearable-technologies?specialization=sports-analytics |website=Coursera |accessdate=2022-02-02 |language=ja}}</ref>。 |
||
338行目: | 347行目: | ||
バージョン2.4には、子プロセスの起動やコマンドを実行できるsubprocessモジュールが実装された。<ref name="about-subprocess-module">https://www.fenet.jp/dotnet/column/language/7841/ 「Pythonのsubprocessモジュールの使い方|子プロセスの起動方法からわかりやすく解説」.NET Column (2021年3月25日) 2023年5月17日閲覧。</ref> |
バージョン2.4には、子プロセスの起動やコマンドを実行できるsubprocessモジュールが実装された。<ref name="about-subprocess-module">https://www.fenet.jp/dotnet/column/language/7841/ 「Pythonのsubprocessモジュールの使い方|子プロセスの起動方法からわかりやすく解説」.NET Column (2021年3月25日) 2023年5月17日閲覧。</ref> |
||
2.6以降のバージョンには、2.xから3.xへの移植を助ける﹁2to3 ツール﹂と﹁lib2to3 モジュール﹂を含んでいる<ref group="†" name="2to3">{{ |
2.6以降のバージョンには、2.xから3.xへの移植を助ける﹁2to3 ツール﹂と﹁lib2to3 モジュール﹂を含んでいる<ref group="†" name="2to3">{{Cite web|和書|url=http://docs.python.jp/3.3/howto/pyporting.html|title=Python 2 から Python 3 への移植|publisher=Python Software Foundation|accessdate=2014-03-13}}</ref>。2.7が2.xの最後のバージョンで、2.7のサポートは[[2020年]][[1月1日]]までである<ref group="†">[https://www.python.org/dev/peps/pep-0373/ PEP 373 -- Python 2.7 Release Schedule | Python.org]</ref>。ただし、サポート終了後に 2.7.18 を2020年4月にリリースし、これが最後の 2.7.x になる<ref>"Python 2.7.18はPython 2.7の最後のリリースであり、したがってPython 2の最後のリリースである "</ref><ref name=":1">{{Cite web |url=https://pythoninsider.blogspot.com/2020/04/python-2718-last-release-of-python-2.html |title=Python Insider: Python 2.7.18, the last release of Python 2 |last=Peterson |first=Benjamin |date=2020-04-20 |website=Python Insider |access-date=2020-04-27}}</ref>。これ以上のセキュリティパッチやその他の改善はリリースされない<ref group="†">{{Cite web |url=https://www.python.org/doc/sunset-python-2/ |title=Sunsetting Python 2 |website=Python.org |language=en |access-date=2019-09-22}}</ref>。
|
||
{| class="wikitable" style="float: center;" |
{| class="wikitable" style="float: center;" |
||
382行目: | 391行目: | ||
開発初期には、西暦3000年に公開予定の理想のPythonとして、Python 3000と呼んでいた。Py3Kと略すこともある。 |
開発初期には、西暦3000年に公開予定の理想のPythonとして、Python 3000と呼んでいた。Py3Kと略すこともある。 |
||
しかし2.xとの後方互換性が損なわれている。当初は2.xに比べて3.xが利用できるライブラリ等が著しく少ないという問題点があったが、[[Django]]など徐々に3.xに対応したフレームワークやライブラリなどが増えていったこともあり、[[2016年]]時点においては新規のプロジェクトについて3.xで開発することが多くなっている<ref>{{ |
しかし2.xとの後方互換性が損なわれている。当初は2.xに比べて3.xが利用できるライブラリ等が著しく少ないという問題点があったが、[[Django]]など徐々に3.xに対応したフレームワークやライブラリなどが増えていったこともあり、[[2016年]]時点においては新規のプロジェクトについて3.xで開発することが多くなっている<ref>{{Cite web|和書|url=http://www.sejuku.net/blog/8988/|title=︻入門者必見︼Python2と3、どっちを学習すべき?違いを徹底解説! |author=佐野裕史|publisher=株式会社 侍 |accessdate=2016-09-21}}</ref>{{要高次出典|date=2018-11}}。JetBrains とPythonソフトウェア財団による共同調査では、Python の2と3がどっちがメインであるかというアンケートで、Python 3 がメインであると答えた人が、2016年1月は40%だったが、2017年10月は75%になった<ref name="python-developers-survey-2017">[https://www.jetbrains.com/research/python-developers-survey-2017/ Python Developers Survey 2017 - Results]</ref><ref>[https://opensource.com/article/18/5/numbers-python-community-trends By the numbers: Python community trends in 2017/2018 | Opensource.com]</ref>。
|
||
[[2015年]]11月にリリースされた[[Fedora|Fedora 23]]<ref name="Fedora 23_Python3_Change">{{cite web|url=https://fedoraproject.org/wiki/Changes/Python_3_as_Default/|title=【Changes/Python 3 as Default |publisher=[[Fedora Project]] |accessdate=2016-09-21}}</ref>や2016年4月にリリースされた[[Ubuntu|Ubuntu 16.04 LTS]]<ref name="Ubuntu 16.04 LTS_Python3_Change">{{cite web|url=https://wiki.ubuntu.com/XenialXerus/ReleaseNotes/Ja/|title= Ja |author=kuromabo|publisher=Ubuntu.com |accessdate=2016-09-21}}</ref>では、デフォルトでインストールされるPythonのバージョンが2.xから3.xに変更されている。[[Red Hat Enterprise Linux]]では7.5をもってPython 2が廃止予定(deprecated)となった<ref>[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.5_release_notes/chap-red_hat_enterprise_linux-7.5_release_notes-deprecated_functionality_in_rhel7 Red Hat Enterprise Linux 7 Chapter 53. Deprecated Functionality - Red Hat Customer Portal]</ref>。 |
[[2015年]]11月にリリースされた[[Fedora|Fedora 23]]<ref name="Fedora 23_Python3_Change">{{cite web|url=https://fedoraproject.org/wiki/Changes/Python_3_as_Default/|title=【Changes/Python 3 as Default |publisher=[[Fedora Project]] |accessdate=2016-09-21}}</ref>や2016年4月にリリースされた[[Ubuntu|Ubuntu 16.04 LTS]]<ref name="Ubuntu 16.04 LTS_Python3_Change">{{cite web|url=https://wiki.ubuntu.com/XenialXerus/ReleaseNotes/Ja/|title= Ja |author=kuromabo|publisher=Ubuntu.com |accessdate=2016-09-21}}</ref>では、デフォルトでインストールされるPythonのバージョンが2.xから3.xに変更されている。[[Red Hat Enterprise Linux]]では7.5をもってPython 2が廃止予定(deprecated)となった<ref>[https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/7.5_release_notes/chap-red_hat_enterprise_linux-7.5_release_notes-deprecated_functionality_in_rhel7 Red Hat Enterprise Linux 7 Chapter 53. Deprecated Functionality - Red Hat Customer Portal]</ref>。 |
||
438行目: | 447行目: | ||
|2022年10月24日 |
|2022年10月24日 |
||
|2027年10月 |
|2027年10月 |
||
|- |
|||
|3.12 |
|||
|2023年10月2日 |
|||
|2028年10月 |
|||
|} |
|} |
||
'''3.0'''<ref name="Version_3.0">{{ |
'''3.0'''<ref name="Version_3.0">{{Cite web|和書|url=https://news.mynavi.jp/techplus/article/20090101-python3/|title=登場! Python 3.0 - 2系との違いを比較|publisher=[[マイナビ]]|date=2009-01-01|accessdate=2014-03-13}}</ref> |
||
* print命令をprint関数へ変更 |
* print命令をprint関数へ変更 |
||
* Unicodeを全面採用 |
* Unicodeを全面採用 |
||
* 整数をint型に一本化 |
* 整数をint型に一本化 |
||
'''3.1'''<ref name="Version_3.1_a">{{ |
'''3.1'''<ref name="Version_3.1_a">{{Cite web|和書|url=http://sourceforge.jp/magazine/09/06/30/0623238|title=「Python 3.1」正式版リリース|publisher=OSDN Corporation|date=2009-07-01|accessdate=2014-03-13}}</ref><ref name="Version_3.1_b">{{Cite web|和書|url=http://slashdot.jp/story/09/07/01/0410243/Python-3.1%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9|title=Python 3.1リリース|publisher=OSDN Corporation|date=2009-06-30|accessdate=2014-03-13}}</ref> |
||
* 順序付き辞書 |
* 順序付き辞書 |
||
* 単体テストフレームワーク「unittest」への機能追加 |
* 単体テストフレームワーク「unittest」への機能追加 |
||
452行目: | 465行目: | ||
* ネストしたwith文に対する新たな文法 |
* ネストしたwith文に対する新たな文法 |
||
'''3.2'''<ref name="Version_3.2">{{ |
'''3.2'''<ref name="Version_3.2">{{Cite web|和書|url=http://developers.slashdot.jp/story/11/02/21/221210/Python-3.2-%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9|title=Python 3.2リリース|publisher=OSDN Corporation|date=2011-02-22|accessdate=2014-03-13}}</ref> |
||
* 単体テストモジュールのアップデートや拡張モジュール向け stable ABI |
* 単体テストモジュールのアップデートや拡張モジュール向け stable ABI |
||
* pyc レポジトリディレクトリのサポート |
* pyc レポジトリディレクトリのサポート |
||
459行目: | 472行目: | ||
;3.3 |
;3.3 |
||
:3.1リリースから2年間、言語仕様を凍結し変更を行わない﹁モラトリアム期間﹂を解除した<ref name="Version_3.3">{{ |
:3.1リリースから2年間、言語仕様を凍結し変更を行わない﹁モラトリアム期間﹂を解除した<ref name="Version_3.3">{{Cite web|和書|url=http://sourceforge.jp/magazine/12/10/01/004254|title=仕様変更凍結が解除され新機能が追加された﹁Python 3.3﹂、ついにリリース|publisher=[[SourceForge.JP]]|author=末岡洋子|date=2012-10-01|accessdate=2014-03-13}}</ref>。
|
||
* 新しい文法として、ジェネレータ関数内で別のジェネレータ関数を利用する「yield from」を追加。 |
* 新しい文法として、ジェネレータ関数内で別のジェネレータ関数を利用する「yield from」を追加。 |
||
* 「u」や「U」といったプレフィックスを用いたUnicodeリテラルシンタックスを復活 |
* 「u」や「U」といったプレフィックスを用いたUnicodeリテラルシンタックスを復活 |
||
465行目: | 478行目: | ||
* 仮想化Python実行環境を導入するためのvirtualenvパッケージの機能を「venv」機能としてコアに取り込んだ。 |
* 仮想化Python実行環境を導入するためのvirtualenvパッケージの機能を「venv」機能としてコアに取り込んだ。 |
||
;3.4<ref name="Version_3.4_a">{{ |
;3.4<ref name="Version_3.4_a">{{Cite web|和書|url=https://news.mynavi.jp/techplus/article/20140318-a217/|title=Python 3.4登場|publisher=[[マイナビニュース]]|author=後藤大地|date=2014-03-18|accessdate=2014-03-20}}</ref><ref name="Version_3.4_b">{{Cite web|和書|url=http://sourceforge.jp/magazine/14/03/18/170000|title=「Python 3.4」リリース、標準ライブラリを強化|publisher=[[SourceForge.JP]]|author=末岡洋子|date=2014-03-18|accessdate=2014-03-20}}</ref> |
||
* オブジェクト指向ファイルシステムパスを提供する「pathlib」モジュールの提供 |
* オブジェクト指向ファイルシステムパスを提供する「pathlib」モジュールの提供 |
||
* 列挙型を扱うためのenumモジュールの標準化 |
* 列挙型を扱うためのenumモジュールの標準化 |
||
473行目: | 486行目: | ||
* Pythonの組み込み関数に関する分析情報を得るため機構の実装 |
* Pythonの組み込み関数に関する分析情報を得るため機構の実装 |
||
;3.5<ref name="Version_3.5_a">{{ |
;3.5<ref name="Version_3.5_a">{{Cite web|和書|url=https://news.mynavi.jp/techplus/article/20150914-a192/|title=Python 3.5.0登場|publisher=[[マイナビニュース]]|author=後藤大地|date=2015-09-13|accessdate=2015-11-05}}</ref><ref name="Version_3.5_b">{{Cite web|和書|url=http://www.softantenna.com/wp/software/python-3-5-released/|title=「Python 3.5」正式版がリリース – 新機能が多数追加 |publisher= ソフトアンテナブログ|date=2015-09-14|accessdate=2015-11-05}}</ref> |
||
* zipアプリケーションサポートの改良 |
* zipアプリケーションサポートの改良 |
||
* byte/bytearrayオブジェクトのための「%」フォーマット対応の追加 |
* byte/bytearrayオブジェクトのための「%」フォーマット対応の追加 |
||
483行目: | 496行目: | ||
* 拡張モジュールをロードするための新しい仕組みの導入 |
* 拡張モジュールをロードするための新しい仕組みの導入 |
||
;3.6<ref name="Version_3.6">{{ |
;3.6<ref name="Version_3.6">{{Cite web|和書|url=https://mag.osdn.jp/16/12/26/153000|title=「Python 3.6」がリリース|publisher=[[OSDN]]|author=末岡洋子|date=2016-12-26|accessdate=2017-05-26}}</ref> |
||
* 文字列中に式を埋め込める「Formatted string literals」の導入 |
* 文字列中に式を埋め込める「Formatted string literals」の導入 |
||
* 変数に対して型に関する情報(型ヒント)を与える「Syntax for variable annotations」の導入 |
* 変数に対して型に関する情報(型ヒント)を与える「Syntax for variable annotations」の導入 |
||
490行目: | 503行目: | ||
* DTraceおよびSystemTapプローブのサポートを追加 |
* DTraceおよびSystemTapプローブのサポートを追加 |
||
;3.7<ref name="Version_3.7">{{ |
;3.7<ref name="Version_3.7">{{Cite web|和書|url=https://mag.osdn.jp/18/06/29/163000|title=「Python 3.7」リリース、型アノーテーションの強化などさまざまな機能が追加される|publisher=[[OSDN]]|author=末岡洋子|date=2018-06-29|accessdate=2018-07-11}}</ref><ref group="†">[https://docs.python.org/ja/3.7/whatsnew/3.7.html What's New In Python 3.7 — Python 3.7.5 ドキュメント]</ref> |
||
* 使用時点では宣言されていない型を使った型アノテーション表記が可能となる |
* 使用時点では宣言されていない型を使った型アノテーション表記が可能となる |
||
* レガシーな C ロケールの抑圧、強制 UTF-8 実行モード |
* レガシーな C ロケールの抑圧、強制 UTF-8 実行モード |
||
520行目: | 533行目: | ||
** 引数仕様変数 |
** 引数仕様変数 |
||
* zip関数の追加パラメータ |
* zip関数の追加パラメータ |
||
;3.11<ref>{{Cite web |title=What's New In Python 3.11 |url=https://docs.python.org/3/whatsnew/3.11.html |website=Python documentation |access-date=2024-04-23 |language=ja}}</ref> |
|||
;3.12<ref>{{Cite web |title=What's New In Python 3.12 |url=https://docs.python.org/3/whatsnew/3.12.html |website=Python documentation |access-date=2024-04-23 |language=ja}}</ref> |
|||
=== Python の時系列 === |
=== Python の時系列 === |
||
531行目: | 548行目: | ||
* [[Modula-2]], [[Modula-3|-3]](モジュール機能、オブジェクト指向) |
* [[Modula-2]], [[Modula-3|-3]](モジュール機能、オブジェクト指向) |
||
* [[Icon]](辞書、スライス演算子など) |
* [[Icon]](辞書、スライス演算子など) |
||
* |
* {{仮リンク|SETL|en|SETL}}(リストの内包表現) |
||
* [[C言語|C]], [[C++]](基本的な構文) |
* [[C言語|C]], [[C++]](基本的な構文) |
||
* [[Smalltalk]](仮想マシン機構、動的性) |
* [[Smalltalk]](仮想マシン機構、動的性) |
||
570行目: | 587行目: | ||
* [[スクリプト言語]] |
* [[スクリプト言語]] |
||
* [[オブジェクト指向プログラミング]] |
* [[オブジェクト指向プログラミング]] |
||
* [[空飛ぶモンティ・パイソン]] - これがPythonという言語名の由来である<ref>[https://docs.python.org/3/faq/general.html#why-is-it-called-python Why is it called Python?] - Python Software Foundation</ref> |
* [[空飛ぶモンティ・パイソン]] - これがPythonという言語名の由来である<ref>[https://docs.python.org/3/faq/general.html#why-is-it-called-python Why is it called Python?] - Python Software Foundation</ref><ref>{{Cite book|和書 |author= Glyn Moody 小山祐司監訳 |title= ソースコードの反逆 |date=2002-6-11 |page= 384 |publisher=[[アスキー (企業)|株式会社アスキー]]|isbn = }}</ref> |
||
== 学習用図書の例 == |
== 学習用図書の例 == |
||
* Quentin Charatan, Aaron Kans: ''Programming in Two Semesters: Using Python and Java'', Springer, (2022). |
|||
* John Hunt: ''A Beginners Guide to Python 3 Programming'', Springer, (2023). |
|||
* John Hunt: ''Advanced Guide to Python 3 Programming'', Springer, (2023). |
|||
* 石本敦夫:「Python文法詳解」、オライリージャパン、ISBN 978-4873116884、(2014年9月18日)。 |
|||
* 大和田勇人、金盛克俊:「Pythonで始めるプログラミング入門」、コロナ社、ISBN 978-4-339-02498-2(2015年10月13日)。 |
* 大和田勇人、金盛克俊:「Pythonで始めるプログラミング入門」、コロナ社、ISBN 978-4-339-02498-2(2015年10月13日)。 |
||
* 滝澤成人:「Python [基礎編] ワークブック」、カットシステム、ISBN 978-4-87783-837-9(2018年5月10日)。 |
* 滝澤成人:「Python [基礎編] ワークブック」、カットシステム、ISBN 978-4-87783-837-9(2018年5月10日)。 |
||
* 松浦健一郎、司ゆき:「わかるPython [決定版] 」、SBクリエイティブ、ISBN 978-4-7973-9544-0(2018年5月22日)。 |
* 松浦健一郎、司ゆき:「わかるPython [決定版] 」、SBクリエイティブ、ISBN 978-4-7973-9544-0(2018年5月22日)。 |
||
* 柴田望洋:「新・明解Python入門」、SBクリエイティブ 、ISBN 978-4815601522(2019年5月30日)。 |
* 柴田望洋:「新・明解Python入門」、SBクリエイティブ 、ISBN 978-4815601522(2019年5月30日)。#(これは初版、第2版あり) |
||
* 亀田健司:「1週間でPythonの基礎が学べる本」、インプレス、ISBN 978-4-295-00853-8(2020年3月11日)。 |
* 亀田健司:「1週間でPythonの基礎が学べる本」、インプレス、ISBN 978-4-295-00853-8(2020年3月11日)。 |
||
* 山田祥寛:「独習Python」、翔泳社、{{ISBN2|978-4-7981-6364-2}}(2020年6月22日)。 |
* 山田祥寛:「独習Python」、翔泳社、{{ISBN2|978-4-7981-6364-2}}(2020年6月22日)。 |
||
593行目: | 614行目: | ||
* 柴田望洋:「新・明解Python入門 第2版」、SBクリエイティブ 、ISBN 978-4815617837(2023年8月29日)。 |
* 柴田望洋:「新・明解Python入門 第2版」、SBクリエイティブ 、ISBN 978-4815617837(2023年8月29日)。 |
||
* David M. Beazley、鈴木駿(訳):「Python Distilled - プログラミング言語Pythonのエッセンス」、オライリー・ジャパン、ISBN 978-4-8144-0046-1(2023年10月14日)。 |
* David M. Beazley、鈴木駿(訳):「Python Distilled - プログラミング言語Pythonのエッセンス」、オライリー・ジャパン、ISBN 978-4-8144-0046-1(2023年10月14日)。 |
||
* Christian Hill:「Python科学技術計算:物理・化学を中心に」第2版,東京化学同人、ISBN 978-4-807920570 (2023年11月20日)。※ 利用例 |
|||
* 金城俊哉:「PC・IT図解 Pythonプログラミングの技術としくみ」、秀和システム、ISBN 978-4798066868(2024年3月1日)。 |
|||
* 綾皓二郎:「計算論的思考を育むPythonプログラミング入門」、近代科学社、ISBN 978-4764906969(2024年5月28日)。 |
|||
* Tiago Rodrigues Antão:「爆速Python」、翔泳社、ISBN 9784798183732 (2024年6月24日)。※ 高速化技法 |
|||
* Alex Martelli、Anna Martelli Ravenscroft、Steve Holden、Paul McGuire:「Pythonクイックリファレンス(第4版)」、オライリージャパン、ISBN978-4-8144-0081-2(2024年6月27日)。 |
|||
==脚注== |
==脚注== |
||
609行目: | 635行目: | ||
* [https://python.atelierkobato.com/basic/ あとりえこばと:「Python プログラミング講座」(2018年8月13日).] |
* [https://python.atelierkobato.com/basic/ あとりえこばと:「Python プログラミング講座」(2018年8月13日).] |
||
* {{Cite journal|和書|author=喜多一 |date=2020-02 |url=https://hdl.handle.net/2433/245698 |title=プログラミング演習 Python 2019 |pages=1-200 |hdl=2433/245698 |CRID=1510292572199325696 |quote=''本書はCC-BY-NC-NDライセンスによって許諾されています。ライセンスの内容を知りたい方は https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ja でご確認ください。''}} |
* {{Cite journal|和書|author=喜多一 |date=2020-02 |url=https://hdl.handle.net/2433/245698 |title=プログラミング演習 Python 2019 |pages=1-200 |hdl=2433/245698 |CRID=1510292572199325696 |quote=''本書はCC-BY-NC-NDライセンスによって許諾されています。ライセンスの内容を知りたい方は https://creativecommons.org/licenses/by-nc-nd/4.0/deed.ja でご確認ください。''}} |
||
** [http://hdl.handle.net/2433/285599 喜多 一、森村吉貴、岡本雅子:「教科書:プログラミング演習 Python」 (2023年版、京都大学学術情報リポジトリ、CC-BY-NC-ND ライセンス)] |
|||
** [http://hdl.handle.net/2433/285600 上記の英語版] |
|||
* [https://utokyo-ipp.github.io Pythonプログラミング入門] - 東京大学 |
* [https://utokyo-ipp.github.io Pythonプログラミング入門] - 東京大学 |
||
* [https://www.python.jp/train/ ゼロからのPython入門講座] - Python Japan |
* [https://www.python.jp/train/ ゼロからのPython入門講座] - Python Japan |
||
617行目: | 645行目: | ||
**[https://sites.google.com/a.ipsj.or.jp/mooc/list/C3-2 アルゴリズム (Pythonを使ったアルゴリズム入門)] |
**[https://sites.google.com/a.ipsj.or.jp/mooc/list/C3-2 アルゴリズム (Pythonを使ったアルゴリズム入門)] |
||
**[https://sites.google.com/a.ipsj.or.jp/mooc/list/C3-3 モデル化とシミュレーション(Pythonを使ったシミュレーション入門)] |
**[https://sites.google.com/a.ipsj.or.jp/mooc/list/C3-3 モデル化とシミュレーション(Pythonを使ったシミュレーション入門)] |
||
* [https://www.tohoho-web.com/python/index.html 「とほほのPython入門」((C) 2014-2022 杜甫々, 最終更新2022年10月9日)] |
|||
* [https://utokyo-ipp.github.io/IPP_textbook.pdf 「Pythonプログラミング入門」©2020–2023, 東京大学 数理・情報教育研究センター (CC BY-NC-ND 4.0)] |
|||
* {{kotobank}} |
* {{kotobank}} |
||
2024年6月20日 (木) 10:54時点における最新版
![]() |
![]() Pythonのロゴ | |
パラダイム |
関数型プログラミング、オブジェクト指向プログラミング、動的計画法、命令型プログラミング、マルチパラダイムプログラミング ![]() |
---|---|
登場時期 | 1991年 |
開発者 |
Pythonソフトウェア財団、グイド・ヴァンロッサム ![]() |
最新リリース | 3.12.2 - 2024年2月7日[1] [±] |
型付け | 強い型付け 動的型付け |
主な処理系 | CPython, PyPy, IronPython, Jython |
方言 | Cython, RPython, Stackless Python |
影響を受けた言語 |
ALGOL 68、ABC、Modula-3、C言語、C++、Perl、Java、LISP、Haskell、APL、CLU、Dylan、Icon、Standard ML ![]() |
影響を与えた言語 |
Boo Cobra D F# Falcon Go Groovy JavaScript[2] Ruby[3] Perl Scala Swift |
プラットフォーム |
クロスプラットフォーム ![]() |
ライセンス |
Python Software Foundation License ![]() |
ウェブサイト |
www |
概要[編集]
Pythonは1991年にグイド・ヴァン・ロッサムにより開発されたプログラミング言語である。 最初にリリースされたPythonの設計哲学は、ホワイトスペース(オフサイドルール)の顕著な使用によってコードの可読性を重視している。その言語構成とオブジェクト指向のアプローチは、プログラマが小規模なプロジェクトから大規模なプロジェクトまで、明確で論理的なコードを書くのを支援することを目的としている。 Pythonは動的に型付けされていて、ガベージコレクションされている。構造化︵特に手続き型︶、オブジェクト指向、関数型プログラミングを含む複数のプログラミングパラダイムをサポートしている。Pythonは、その包括的な標準ライブラリのため、しばしば﹁バッテリーを含む﹂言語と表現されている[† 1]。 Pythonのインタプリタは多くのOSに対応している。プログラマーのグローバルコミュニティは、自由かつオープンソース [† 2] のリファレンス実装であるCPythonを開発および保守している 。非営利団体であるPythonソフトウェア財団は、PythonとCPythonの開発のためのリソースを管理・指導している。特徴[編集]
Pythonはインタプリタ上で実行することを前提に設計している。以下の特徴をもっている: ●動的な型付け ●ガベージコレクション ●マルチパラダイム ●モジュール・クラス・オブジェクト等の言語の要素が内部からアクセス可能であり、リフレクションを利用した記述が可能。言語[編集]
Pythonには、読みやすく、それでいて効率もよいコードをなるべく簡単に書けるようにするという思想が浸透しており、Pythonコミュニティでも単純で簡潔なコードをよしとする傾向が強い[† 3]。設計思想[編集]
Pythonの本体は、ユーザがいつも必要とする最小限の機能のみを提供する。基本機能以外の専門機能や拡張プログラムはインターネット上にライブラリとして提供されており、別途ダウンロードして保存し、必要なツールはこのツールキットからその都度呼び出して使用する[† 4]。 Pythonでは﹁あることをなすのに唯一の良いやり方があるはず﹂という哲学がある[† 3]︵参考: Perl﹁やり方は一つじゃない﹂[4]︶。 Pythonではプログラムの文書化︵ソフトウェアドキュメンテーション︶が重視されており、言語の基本機能の一部となっている。構文[編集]
インデントが意味を持つ﹁オフサイドルール﹂が特徴的である。 以下に、階乗 (関数名: factorial)を題材にC言語と比較した例を示す。 Pythonのコード:def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
わかりやすく整形されたC言語のコード:
int factorial(int x) {
if (x == 0) {
return 1;
} else {
return x * factorial(x - 1);
}
}
int factorial(int x) {
if(x == 0) {return 1;} else
{return x * factorial(x - 1); } }
Pythonではインデントは構文規則として決められているため、こうした書き方は不可能である。Pythonではこのように強制することによって、ソースコードのスタイルがその書き手にかかわらずほぼ統一したものになり、その結果読みやすくなるという考え方が取り入れられている。これについては賛否両論があり、批判的立場の人々からは、これはプログラマがスタイルを選ぶ自由を制限するものだ、という意見も出されている。
インデントによる整形は、単に「見かけ」だけではなく品質そのものにも関係する[5]。例として次のコードを示す。
間違えたC:
if (x > 10)
x = 10;
y = 0;
型システム[編集]
Pythonは動的型付けシステムをもつ。同時に任意の型ヒントを持っており外部ツールによる静的型チェックを可能にしている。 値自身が型を持っており、変数はすべて値への参照である。 基本的なデータ型として、論理型・整数型・浮動小数点数型・複素数型・文字列型・バイト列型・関数型がある。整数型は︵メモリの許す限り︶無制限の桁数で整数計算が可能である。浮動小数点数型を整数型にキャストすると、小数点以下が切り捨てられる。 組み込みのコンテナ型として、リスト型、タプル型、辞書型、集合型がある。リスト型および辞書型はミュータブル、タプル型はイミュータブルである。集合型には変更可能なものと変更不能なものの2種類がある。タプル型とリスト型は、多くのプログラミング言語では配列と呼ばれるものに類似している。しかし、Pythonではタプル型は辞書のキーとして使うことができるが、リスト型は内容が変わるため辞書のキーとして使うことはできないという理由から、これら2つの型を区別している。 多くのオブジェクト指向プログラミング言語と同様、Pythonではユーザが新しく自分の型を定義することも可能である。この場合、組み込み型を含む既存の型を継承して新たな型︵クラス︶を定義する事も、ゼロから全く新しい型を作り出す事も出来る。 Pythonは基本的にメソッドや関数の引数に型を指定する必要がない。そのため、ダック・タイピングという、内部で必要とする演算子やメソッドに対応していれば、関数やオブジェクトの設計時点で意図していなかったオブジェクトを引き渡すことも可能である。型ヒント[編集]
Pythonは型ヒントの構文を用意している[6]。これはプログラマ向けの注釈および外部ツールによる静的型チェックに用いられる。 例として、文字列型の値を受け取って文字列型の値を返す関数は次のようにアノテーションできる。def greeting(name: str) -> str:
return f"Hello {name}"
メモリ管理[編集]
イテレータ[編集]
イテレータを実装するためのジェネレータが言語仕様に組み込まれており、Pythonでは多くの場面でイテレータを使うように設計されている。イテレータの使用はPython全体に普及していて、プログラミングスタイルの統一性をもたらしている。オブジェクト指向プログラミング[編集]
Pythonでは扱えるデータの全てがオブジェクトである。単純な数値といった基本的なデータ型をはじめ、組み込みのコンテナ型、組み込み関数など、これらは全て統一的な継承関係をもつオブジェクトであり﹁型﹂をもっている。これらの組み込み型とユーザ定義型は区別されず、組み込み型を継承したクラスを定義できる。上の﹁データ型﹂の項で述べたように Pythonは静的な型チェックを持たないため、Javaのようなインターフェイスという言語上の仕組みは必要とされない。 クラスの継承 (inheritance) メカニズムでは、複数の基底クラスを持つことができ︵多重継承︶、導出されたクラスでは基底クラスの任意のメソッドをオーバライド︵override; 上書き︶することが可能である。 また、オブジェクトには任意のデータを入れることができる。これらのメソッドやデータは、基本的に、すべてpublic
であり、virt
ual
︵仮想︶である。ただし、先頭にアンダースコアをもつメンバをprivate
とすることができる。これは単なるマナーであるが、アンダースコアを2つもつ場合は、クラスの外部からメンバの名前を隠された状態︵mangle; 難号化︶とすることでカプセル化を実現できる。また、利用者定義演算子が機能として用意されておりほとんどの組み込み演算子︵算術演算子︵arithmetic operator︶や添字表記︶はクラスインスタンスで使うために再定義することが可能となっている。
標準ライブラリ[編集]
Pythonには﹁電池付属 ("Battery Included")﹂という思想があり、プログラマがすぐに使えるようなライブラリや統合環境をあらかじめディストリビューションに含めるようにしている。このため標準ライブラリは非常に充実している。 ●正規表現 ●OSのシステムコール ●XML処理系 ●シリアライゼーション ●HTTP, FTP等の各種通信プロトコル ●電子メールやCSVファイルの処理 ●データベース接続 (SQLiteを標準で扱える) ●GUIフレームワーク (Tkinter) ●HTMLのパーサー ●Python自身のコードの構文解析ツール サードパーティによるライブラリも豊富に存在する︵参考: Python#エコシステム︶。組み込み型[編集]
Pythonは様々な組み込み型︵built-in types︶をサポートする。Mapping型[編集]
Mapping型はハッシュ可能な値を任意のオブジェクトへ対応付ける型である[7]。対応する具象クラスはdict
である。抽象基底クラスに collections.abc.Mapping
があり、抽象メソッドとして __getitem__
, __iter_
_
, __len__
が定義されている。__getitem__
をもったcollectionとも言える。
多言語の扱い[編集]
最初のPythonでは1バイト単位での文字列型のみ扱い、ひらがな・(全角) カタカナおよび漢字のようなマルチバイト文字はサポートしていなかったが、その後のPython 2.0からはUnicode文字型が新たに導入された[† 5]。 Python 3.0では、Python 2.xにおける文字列型がバイト列型に、またUnicode文字列型が文字列型に変更された。これにより、文字列をPython 3.0で扱う際には後述の変換処理を必ず行う必要がある。ファイル入出力などでエンコードを明示しなければ、標準エンコードを用いて暗黙に行われる場合も多い。これにより多言語の扱いを一貫したものにしている。 Pythonでは文字のエンコードとUnicodeの内部表現を明確に区別している。Unicode文字はメモリ中に保持される抽象的なオブジェクトであり、画面表示やファイルへの入出力の際には変換ルーチン︵コーデック︶を介して特定のエンコーディングのバイト列表現との間で相互に変換する。また、ソースコード中の文字コードを認識する機能があり、これによって異なる文字コードで書かれたプログラムの動きが異なるリスクを解消している。 Pythonでは変換ルーチンをモジュールとして追加することで、さまざまなエンコーディングに対応できるようになっている。日本語の文字コード (EUC-JP, Shift_JIS, MS932, ISO-2022-JP) に対応したコーデックも作成されている。Python 2.4からは、日中韓国語用のコーデックが標準でディストリビューションに含まれるようになったため[† 6]、現在では日本語の処理に関する問題はほとんどなくなった。ただしGUIライブラリであるTkinterや統合開発環境のIDLEは、プラットフォームにもよるが、まだきちんと日本語に対応していないものもある。 ソースコードの文字コードには、ASCIIと互換性があり、Pythonが対応しているものを使用する。ソースコードのデフォルトエンコーディングは、Python 3.xではUTF-8[† 7]︵ソースコード以外のPython 3のデフォルトエンコーディングは複雑になっている[† 8][† 9]︶、Python 2.xではASCIIであるが、デフォルトエンコーディング以外の文字コードを使う場合は、ソースファイルの1行目か2行目に一定の書式でコメントとして記述することになっており[† 10]、しばしば以下のようにEmacsやVimなどのテキストエディタにも認識可能な書式で記述される︵次の例は Emacs が認識できる書式︶。#!/usr/bin/env python3
# -*- coding: utf-8 -*-
s = '日本語の文字列'
実行環境[編集]
動作環境[編集]
Pythonの最初のバージョンはAmoeba上で開発された。のちに多くの計算機環境上で動作するようになった。 ●Windows, Windows CE︵9x系およびNT系は最新版、Windows 3.1およびMS-DOSは旧版のみ︶ ●Macintosh (Classic Mac OSおよびmacOSともに) ●iOS Pythonista for iOS (omz:software) ●Android Pydroid3 for Android (IIEC) ●各種UNIX ●Linux (Linux Standard Base3.2で標準仕様となった) ●Plan 9 (Python 3.xは未移植) ●PalmOS ●S60 ●Javaプラットフォーム (Jython) ●.NET Frameworkプラットフォーム (IronPython)ランタイム・コンパイラ[編集]
Pythonには複数の実装︵ランタイム又はコンパイラ︶が存在する。 ●CPython - 作者によってC言語で書かれたバージョン。通常﹁Python﹂といえばこのCPythonを指す。 ●Stackless Python - Cスタックを使わずに独自のスタック︵Pythonスタック︶で実装したもの。 ●Unladen Swallow - GoogleのチームによるPythonの実装。 ●Jython - Java仮想マシン上に移植したもの。PythonからJavaのライブラリを使うことができる。 ●IronPython - .NET Framework/Monoで動作するPython。C#で実装されている。.NET Frameworkのライブラリを使うことができる。動的言語ランタイム上に構築されているため、既存の.NETアプリケーションへマクロ言語として搭載することも可能となっている。 ●PyPy - Python (RPython) によるPythonの実装。 ●Psyco - CPython向けのJITコンパイラ ●Cython - PythonをC言語化へトランスコードするソフトウェア。静的型付けが可能で速度の向上をはかれる。 ●PyMite - 組み込み向けの実装、AVRなどに対応。 ●tinypy - 同じく組み込み向けの実装。ソースコードが64kB未満と非常に軽量なことが謳われている。 ●MicroPython - 組み込み向けの実装。256 kB以上のフラッシュを推奨。 ●Pyodide - WebAssembly向けの実装[※ 1]。 ●IPython - 対話計算に向けたPythonへのシェル ●Codon - Python言語ソースから機械語へのコンパイラ処理系[8][9][10]。 ●PyOMP - PythonをOpenMPで並列化するシステム[11][12]。エコシステム[編集]
Pythonはパッケージ管理ソフト・ライブラリ・レポジトリなどからなるエコシステムを形成している。パッケージ管理[編集]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Python_build_and_install.png/220px-Python_build_and_install.png)
pip
・pipenv
・poetry
・rye
・EasyInstallなどのパッケージ管理システムによっておこなわれる。バイナリパッケージのフォーマットにはwheelがあり、これをインタフェースとしてビルドシステムとパッケージ管理システムの分離が可能になっている[† 11]。
Python Package Index (PyPI) と呼ぶ公式のパッケージリポジトリが存在する。
パッケージ管理および実行環境管理を含めた統合開発環境としてはAnaconda (Pythonディストリビューション)が存在する。
ライブラリ[編集]
Pythonは多様なコミュニティライブラリによって支えられている。- 数値計算
- 機械学習・データサイエンス・AI
- データ解析ソフト pandas
- グラフ表示ソフト Matplotlib
- 描画ソフト Seaborn
- データ処理インタフェース IPython
- 数式処理機能 SymPy
- データ処理の高速化 PyPy
- Pythonアプリのコンパイルによる高速化 Numba
- 画像処理のための Python Imaging Library
- SDLのラッパである Pygame
- スクレイピングライブラリ Beautiful Soup
- クローリング、スクレイピング用のpythonフレームワーク Scrapy
- 離散事象シミュレーション SimPy
- OpenCLへのインタフェース pyOpenCL
- OpenGLへのインタフェース pyOpenGL
- OpenCVへのインタフェース pyOpenCV
- CUDAへのインタフェース pyCUDA
- 3Dグラフィックスやアニメーション VPython
- PyODE
- Python(x,y)
- Webアプリケーションフレームワーク
- Bottle(ボトル) - https://bottlepy.org/docs/dev/
- CherryPy(チェリーパイ) - https://cherrypy.org/
- Django(ジャンゴ) - https://www.djangoproject.com/
- Flask(フラスク) - http://flask.pocoo.org/
- Pyramid(ピラミッド) - https://pylonsproject.org/projects/pyramid/
- Plone(プローン) - https://plone.org/
- Tornado (Webサーバ)(トルネード) - https://sites.google.com/site/tornadowebja/
- Cyclone(C10K問題対応)(サイクロン) - http://cyclone.io/
利用[編集]
データサイエンスおよび数値計算用途[編集]
NumPy, SciPyなどの高速な数値計算ライブラリの存在により、データサイエンスや科学技術コンピューティングにもよく用いられる。NumPy, SciPyの内部はC言語で書かれているので、動的スクリプト言語の欠点の一つである動作速度の遅さを補っている[15]。Numba を使うと、Python のコードが LLVM に JITコンパイルして利用可能であり、非常に高速な計算ができる。TensorFlow などのライブラリにより GPU 上で高速に計算するライブラリも充実している。 JetBrains とPythonソフトウェア財団による共同調査によると、2017年10月現在、Pythonの最も主要な用途は何かというアンケートの結果によると、27%がデータサイエンス︵そのうち18%がデータ解析、9%が機械学習︶である[16]。Webアプリケーション用途[編集]
Django や Flask といったWebアプリケーションフレームワークが充実しているため、Webアプリケーション開発用途にも多く使われている。JetBrains とPythonソフトウェア財団による共同調査によると、2017年10月現在、26%の人が最も主要な用途としてWeb開発を選んだ[16]。スマホアプリ用途[編集]
●kivy‥オープンソースで商用利用も可能なので、スマホアプリの販売が可能。androidアプリもiOSアプリも作成することが可能 ●tkinter‥pythonの標準ライブラリで簡単にGUIアプリを作成可能。ネットでの情報が最も多い ●PyQt‥クロスプラットフォームで作成可能だが、商用利用は有償 ●xPython‥クロスプラットフォームで動作可能なGUIアプリを作成可能システム管理およびグルー言語用途[編集]
スクリプト言語としての特性から、従来Perlやシェルスクリプトが用いられることの多かったシステム管理用のスクリプトとして複数のOSで採用されている。また、異なる言語で書かれた多数のモジュールの機能を貼り合わせるグルー言語︵糊の言語︶として利用する例も多い。実際、多くの商用アプリケーションで Python は組み込みのスクリプト言語として採用されている。 JetBrains とPythonソフトウェア財団による共同調査によると、2017年10月現在、9%の人が最も主要な用途としてDevOps, システム管理, 自動化スクリプトを上げた[16]。教育用[編集]
Pythonは本来は教育用を目的として設計されたわけではないが[17]、その単純さから子供が最初に学ぶプログラミングにおける教育用の言語としての利用が増えている。グイド・ヴァンロッサムはPython設計以前に教育用言語であるABCの開発にかかわり、教育用としての利用について期待感を示したこともあり、方針として非技術者向けといった利用を視野に入れているとされることもある[18]。 私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。それを考えてくれ――次の世代の話だね。-- スラド﹃ Guido van Rossum へのインタビュー﹄ 情報処理推進機構 (IPA) は国家試験の基本情報技術者試験では2020年の春期試験から COBOL を廃止して Python を追加した[19]。 日本の高等学校情報科﹁情報Ⅰ﹂の教員向け研修教材の中で、プログラミング用言語としてPythonが使われている[20]。 ただし、Pythonの言語は,言語自身に組み込まれている型とそれに付随するメソッドの多いことなどから,C言語に較べると遙かに多くの憶えなければならない事柄があることになる。持つ機能の一部だけに限定して教育に用いるならば,憶えなければならない事柄を減らすことができるが,しかし言語の機能をすべて知っていないと他人の書いたプログラムを正しく理解することが出来ない可能性が生じる。Python言語の変数自身には型が無いことから,プログラム上で扱われているデータ・オブジェクトの型が何であるかは実行時に動的に決まるので,それを読み解いて把握しなければプログラムが行っている処理の内容を正しく把握することが難しいことがしばしばある︵正しい注釈を付けてプログラムを書くことが重要である︶。 また、Pythonの文法は僅か1行でも処理を記述できるほどに簡潔なので、まだプログラミングについてよく知らない子供でも取り組みやすい言語であると言える。[21]# Pythonで記述した「Hello,World!」の例
# Pythonはたった一行のコードで文字を表示することができる。
print("Hello, World!")
// Javaで記述した「Hello, World!」の例
// Javaでは文字の表示に最低5行(括弧を除くと3行)コードを記述する必要がある(もちろん改行をせずに横に連ねて書けば1行にもできるのだが)。
public class hoge {
public static void main(String...args) {
System.out.println("Hello, World!");
}
}
スポーツパフォーマンス分析[編集]
Pythonはプロスポーツの分析によく使われている。メジャーリーグベースボール︵野球︶、イングリッシュプレミアリーグ︵サッカー︶、ナショナルバスケットボールアソシエーション︵バスケットボール︶、ナショナルホッケーリーグ︵アイスホッケー︶、インディアンプレミアリーグ︵クリケット︶の実際のデータセットからのスポーツ分析は、ベストセラーの本と映画であるマネーボールによって示される現実世界の成功によって部分的に推進され、人気が高まっている研究分野として浮上している(セイバーメトリクス)。チームとプレーヤーのパフォーマンスデータの分析は、フィールド、コート、氷上だけでなく、ファンタジースポーツプレーヤーやオンラインスポーツギャンブルのリビングルームでもスポーツ業界に革命をもたらし続けている。実際のスポーツデータを使用した予測スポーツ分析の原則を使用して、プレーヤーとチームのパフォーマンスを予測する[22]。 Pythonを使ってデータをプログラミングする方法を示したり、マネーボールのストーリーの背景にある主張を検証したり、マネーボールの統計の進化を調べたりすることが可能である。公開されているデータセットから野球のパフォーマンス統計を計算するプロセスを案内される。実行期待値マトリックスを使用して導出された、より高度な測定値︵Wins Over Replace︵WAR︶など︶に進む。これらの統計を使用して、独自のチームおよびプレーヤーの分析を行うことができるようになる[23][24]。 Pythonを使用してプロスポーツの試合結果の予測を生成する方法の主な重点は、チームの支出に関するデータを使用して、ゲームの結果をモデル化する方法としてロジスティック回帰の方法を教えることである。過去の結果をモデル化し、そのモデルを使用して、まだプレイされていない結果のゲームを予測するプロセスを実行する。ベッティングオッズのデータを使用してモデルの信頼性を評価する方法をオーナーに示す。分析は最初に英国プレミアリーグに適用され、次にNBAとNHLに適用される。データ分析とギャンブルの関係、その歴史、および個人的なリスクを含むスポーツベッティングに関連して発生する社会的問題の概要も説明する。マネーボールは、データ分析を使用してチームの勝率を高めることができることを示すことにより、プロスポーツのパフォーマンス統計の分析に革命を引き起こした[独自研究?][23][24]。 Pythonを使用してデータをプログラムし、マネーボールのストーリーの背後にある主張をテストし、マネーボール統計の進化を調べる方法を示し、公開されているデータセットから野球のパフォーマンス統計を計算するプロセスができる[23][24]。スポーツ分析には、トレーニングと競技の両方の取り組みを定量化するアスリートとチームからの大量のPythonデータセットが含まれるようになった。ウェアラブルテクノロジーデバイスは、アスリートが毎日着用しており、シーズン全体にわたるアスリートのストレスと回復を詳細に調べるためのかなりの機会を提供する。これらの大規模なデータセットのキャプチャは、怪我の予防に関する新しい仮説と戦略、およびトレーニングと回復を最適化するためのアスリートへの詳細なフィードバックにつながった。Pythonでのプログラミングを使用して、トレーニング、回復、パフォーマンスに関連する概念を調査することもできる[25]。 Python Scikit-learn︵sklearn︶ツールキットと実際の運動データを使用して教師あり機械学習手法を探索し、機械学習アルゴリズムと運動結果の予測方法の両方を理解する。サポートベクターマシン︵SVM︶、決定木、ランダムフォレスト、線形回帰およびロジスティック回帰、アンサンブルなどの方法を適用して、NHLやMLBなどのプロスポーツリーグからのデータを調べる。また、Apple Watchや慣性測定ユニット︵IMU︶などのウェアラブルデバイスも含まれる。分類と回帰の手法を使用して、運動活動やイベント全体であるスポーツ分析を可能にする方法を幅広く理解できるようになる。スポーツコンテストのカテゴリ別結果変数︵つまり、勝ち、引き分け、負け︶を処理する際の回帰モデル、線形確率モデル︵LPM︶を、その理論的基礎、計算アプリケーション、および経験的制限の観点からモジュールは、カテゴリ従属変数のLPMのより良い代替として、ロジスティック回帰をし、デモンストレーションする。順序付けられたロジットモデルと公開されている情報を使用してEPLサッカーゲームの結果を予測する方法を示す。ベッティングオッズに対してこれらの予測の正確さを評価し、それらが非常に正確であることを示す。北米の3つのチームスポーツリーグ︵NHL、NBA、MLB︶のコンテキストでモデルを複製することにより、前週に取り上げたEPL予測モデルの有効性を評価する。具体的には、順序付けられたロジットモデルと公開されている情報を使用して、NHL、NBA、MLBのレギュラーシーズンゲームの結果を予測する[26]。歴史[編集]
元々はAmoebaの使用言語であるABC言語に例外処理やオブジェクト指向を対応させるために作られた言語である[27]。0.9x[編集]
1991年にヴァンロッサムがPython 0.90のソースコードを公開した。この時点ですでにオブジェクト指向言語の特徴である継承、クラス、例外処理、メソッドやさらに抽象データ型である文字列、リストの概念を利用している。これはModula-3のモジュールを参考にしていた。1.x[編集]
1994年1月、Python 1.0を公開した。主な特徴として関数型言語の基本であるラムダ計算を実装、map関数・reduce関数などを組み込んだ。 バージョン1.4からはCommon Lispにある機能とよく似たキーワード引数を導入した。また簡易ながら名前修飾を用いたカプセル化も実装した。2.x[編集]
2000年に公開。ガベージコレクションやUnicode、リストを導入した。一躍メジャーな言語となった。多くの機能はHaskellを参考にして導入している。 バージョン2.4には、子プロセスの起動やコマンドを実行できるsubprocessモジュールが実装された。[28] 2.6以降のバージョンには、2.xから3.xへの移植を助ける﹁2to3 ツール﹂と﹁lib2to3 モジュール﹂を含んでいる[† 13]。2.7が2.xの最後のバージョンで、2.7のサポートは2020年1月1日までである[† 14]。ただし、サポート終了後に 2.7.18 を2020年4月にリリースし、これが最後の 2.7.x になる[29][30]。これ以上のセキュリティパッチやその他の改善はリリースされない[† 15]。バージョン | リリース日[31] | サポート期限[32] |
---|---|---|
2.0 | 2000年10月16日 | |
2.1 | 2001年4月15日 | |
2.2 | 2001年12月21日 | |
2.3 | 2003年7月29日 | |
2.4 | 2004年11月30日 | |
2.5 | 2006年9月19日 | |
2.6 | 2008年10月1日 | 2013年10月29日 |
2.7 | 2010年7月4日 | 2020年1月1日 |
3.x[編集]
バージョン | リリース日[31] | サポート期限[32] |
---|---|---|
3.0 | 2008年12月3日 | 2009年1月13日 |
3.1 | 2009年6月27日 | 2012年4月9日 |
3.2 | 2011年2月20日 | 2016年2月20日 |
3.3 | 2012年9月29日 | 2017年9月29日 |
3.4 | 2014年3月16日 | 2019年3月18日 |
3.5 | 2015年9月13日 | 2020年9月30日 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月24日 | 2027年10月 |
3.12 | 2023年10月2日 | 2028年10月 |
: TypeAlias
を付与した明示的な型エイリアス
●引数仕様変数
●zip関数の追加パラメータ
3.11[51]
3.12[52]
Python の時系列[編集]
●1990年代始め - オランダにあるStichting Mathematisch Centrum (CWI)で、グイド・ヴァンロッサムによってPythonの初期バージョンが作成される。 ●1995年 - ヴァンロッサムは米国ヴァージニア州レストンにあるCorporation for National Research Initiatives (CNRI) に移動。ここでPythonの開発に携わり、いくつかのバージョンを公開する。 ●2000年3月 - ヴァンロッサムとPythonのコア開発チームは BeOpen.com に移り、BeOpen PythonLabs チームを結成する。同年10月、PythonLabsチームはDigital Creations (現在のZope Corporation) に移る。 ●2001年 - Pythonに関する知的財産を保有するための非営利組織Pythonソフトウェア財団 (PSF) が立ち上がる。このときZope CorporationはPSFの賛助会員となる。Pythonに影響を与えた言語[編集]
●ABC︵インデントによる構文︶ ●Modula-2, -3︵モジュール機能、オブジェクト指向︶ ●Icon︵辞書、スライス演算子など︶ ●SETL︵リストの内包表現︶ ●C, C++︵基本的な構文︶ ●Smalltalk︵仮想マシン機構、動的性︶ ●Lisp, Scheme︵関数型言語の機能︶ライセンス[編集]
Pythonは PSF (Python Software Foundationライセンス) の下、オープンソースで配布されている。このライセンスの内容はGPLに類似したものであるが、変更したバージョンを配布する際に変更をオープンソースにしなくてもよい、という点がGPLとは異なっている。注釈[編集]
出典[編集]
一次文献[編集]
関連項目[編集]
学習用図書の例[編集]
●Quentin Charatan, Aaron Kans: Programming in Two Semesters: Using Python and Java, Springer, (2022). ●John Hunt: A Beginners Guide to Python 3 Programming, Springer, (2023). ●John Hunt: Advanced Guide to Python 3 Programming, Springer, (2023). ●石本敦夫‥﹁Python文法詳解﹂、オライリージャパン、ISBN 978-4873116884、︵2014年9月18日︶。 ●大和田勇人、金盛克俊‥﹁Pythonで始めるプログラミング入門﹂、コロナ社、ISBN 978-4-339-02498-2︵2015年10月13日︶。 ●滝澤成人‥﹁Python [基礎編] ワークブック﹂、カットシステム、ISBN 978-4-87783-837-9︵2018年5月10日︶。 ●松浦健一郎、司ゆき‥﹁わかるPython [決定版] ﹂、SBクリエイティブ、ISBN 978-4-7973-9544-0︵2018年5月22日︶。 ●柴田望洋‥﹁新・明解Python入門﹂、SBクリエイティブ 、ISBN 978-4815601522︵2019年5月30日︶。#︵これは初版、第2版あり︶ ●亀田健司‥﹁1週間でPythonの基礎が学べる本﹂、インプレス、ISBN 978-4-295-00853-8︵2020年3月11日︶。 ●山田祥寛‥﹁独習Python﹂、翔泳社、ISBN 978-4-7981-6364-2︵2020年6月22日︶。 ●Guido van Rossum‥﹁Pythonチュートリアル 第4版﹂、オライリージャパン、ISBN 978-4-87311-935-9︵2021年1月27日︶。 ●Bill Lubanovic‥﹁入門 Python 3 第2版﹂、オライリージャパン、ISBN 978-4-87311-932-8︵2021年3月22日︶。 ●松浦健一郎、司ゆき‥﹁Python [完全] 入門﹂、SBクリエイティブ、ISBN 978-4-8156-0764-7︵2021年1月22日︶。 ●小高知宏‥﹁Python言語で学ぶ基礎からのプログラミング﹂、近代科学社、ISBN 978-4-7649-0633-4︵2021年7月31日︶。 ●岩崎圭、北川慎治、寺田学‥﹁スラスラわかるPython 第2版﹂、ISBN 978-4-7981-6936-1︵2021年11月17日︶。 ●松尾正信:﹁Pythonプログラミング ABCー正確に・美しく・簡潔に!ー﹂、近代科学社、ISBN 978-4764906426︵2022年9月16日︶。 ●上野照正、山崎貴史‥﹁プログラムのつくりかた Python 基礎編 Lv.1﹂、実教出版、ISBN 978-4-407-35255-9︵2022年10月26日︶。 ●山崎貴史、廣田龍之介、森田直人‥﹁Python ハンディプログラミング事典﹂、実教出版、ISBN 978-4-407-35591-8︵2022年11月25日︶。 ●Patrick Viafore‥﹁ロバストPython ―クリーンで保守しやすいコードを書く﹂、オライリー・ジャパン、ISBN 978-4-8144-0017-1 (2023年3月25日)。 ●Micha Gorelick、Ian Ozsvald‥﹁ハイパフォーマンスPython 第2版﹂、オライリー・ジャパン、ISBN 978-4873119908 (2023年4月14日)。 ●Michal Jaworski and Tarek Ziade‥﹁エキスパートPythonプログラミング 改訂4版﹂、KADOKAWA、ISBN 978-4-048931113 (2023年7月21日)。 ●Wes McKinney‥﹁Pythonによるデータ分析入門 第3版﹂、オライリー・ジャパン、ISBN 978-4814400195 (2023年8月12日)。 ●柴田望洋‥﹁新・明解Python入門 第2版﹂、SBクリエイティブ 、ISBN 978-4815617837︵2023年8月29日︶。 ●David M. Beazley、鈴木駿︵訳︶‥﹁Python Distilled - プログラミング言語Pythonのエッセンス﹂、オライリー・ジャパン、ISBN 978-4-8144-0046-1︵2023年10月14日︶。 ●Christian Hill:﹁Python科学技術計算‥物理・化学を中心に﹂第2版,東京化学同人、ISBN 978-4-807920570 (2023年11月20日)。※ 利用例 ●金城俊哉‥﹁PC・IT図解 Pythonプログラミングの技術としくみ﹂、秀和システム、ISBN 978-4798066868︵2024年3月1日︶。 ●綾皓二郎‥﹁計算論的思考を育むPythonプログラミング入門﹂、近代科学社、ISBN 978-4764906969︵2024年5月28日︶。 ●Tiago Rodrigues Antão‥﹁爆速Python﹂、翔泳社、ISBN 9784798183732 (2024年6月24日)。※ 高速化技法 ●Alex Martelli、Anna Martelli Ravenscroft、Steve Holden、Paul McGuire‥﹁Pythonクイックリファレンス︵第4版︶﹂、オライリージャパン、ISBN978-4-8144-0081-2︵2024年6月27日︶。脚注[編集]
- ^ Why is it called Python? - Python Software Foundation
- ^ Glyn Moody 小山祐司監訳『ソースコードの反逆』株式会社アスキー、2002年6月11日、384頁。