| この記事の要点 |
|
概要
Python(パイソン) は、オランダ人プログラマ Guido van Rossum(グイド・ヴァン・ロッサム)が 1991 年に最初のバージョンを公開した汎用プログラミング言語です。名前の由来は英国コメディ番組「Monty Python's Flying Circus」で、ヘビとは無関係ですが、ロゴには 2 匹のヘビがあしらわれています。設計思想は 「There should be one-- and preferably only one --obvious way to do it.(やり方は 1 つ、できれば唯一であるべき)」(The Zen of Python)に代表されるように、可読性と一貫性を最優先しています。
Python の型システムは 動的型付け・強い型 です。変数に型宣言は不要で実行時に型が決まりますが、文字列と整数の暗黙的な変換は行わない("a" + 1 はエラー)など、JavaScript のように型が「曖昧に変換される」ことはありません。Python 3.5 で typing モジュールが追加されてからは、def add(x: int, y: int) -> int: のような 型ヒント が広く使われ、mypy / pyright / pyre による静的解析が可能になりました。ただし型ヒントは実行時に強制されず、ドキュメント+外部チェッカ用です。
実行モデルは インタプリタ ですが、内部では .py を バイトコード(.pyc) にコンパイルしてから Python 仮想マシンで実行します。バイトコードは __pycache__/ ディレクトリに自動生成され、再実行時のパース時間を短縮します。リファレンス実装は C で書かれた CPython で、Python と言えば通常これを指します。代替実装に PyPy(独自 JIT で 4〜10 倍高速)、Jython(JVM)、IronPython(.NET CLR)、MicroPython(マイコン向け)などがあります。
ファイル種類とビルド成果物
| 拡張子 | 役割 | 備考 |
|---|---|---|
.py | ソースコード(テキスト) | UTF-8 が標準。Python 3 では BOM 不要 |
.pyc | コンパイル済みバイトコード | __pycache__/モジュール名.cpython-312.pyc のように Python バージョン入り |
.pyo | 最適化済みバイトコード(旧) | Python 3.5 以降は .pyc に統合され廃止 |
.pyd | Windows 用 C 拡張モジュール | 実体は DLL。import 可能 |
.pyi | 型スタブファイル | シグネチャだけ書く。typeshed で標準ライブラリのスタブを配布 |
.pyw | Windows 用 GUI スクリプト | コンソールを開かずに起動 |
.whl | Wheel パッケージ | pip でインストールするバイナリ配布形式 |
.egg | 旧配布形式(非推奨) | Wheel に移行済み |
「Hello, World」
#!/usr/bin/env python3
"""hello.py — 最小の Python プログラム"""
def greet(name: str) -> str:
return f"Hello, {name}!"
if __name__ == "__main__":
print(greet("World"))
1 行目の shebang #!/usr/bin/env python3 を書き、chmod +x hello.py で実行権を付ければ Unix 系では ./hello.py で直接起動できます。if __name__ == "__main__": イディオムは、ファイルが import された場合に実行を抑制する慣用句で、Python では ほぼ必須のお作法 です。
パッケージ管理・ビルドツール
- pip:Python 標準のパッケージインストーラ。
pip install requestsで PyPI から取得 - venv / virtualenv:プロジェクトごとに独立した Python 環境を作る。
python -m venv .venv+source .venv/bin/activate - poetry:
pyproject.toml1 本で依存・ビルド・公開まで管理する近代的ツール - uv:Rust 製の超高速 pip 互換ツール(2024 年〜急速に普及)
- conda:Anaconda / Miniconda 由来。バイナリ依存(NumPy/SciPy 等)を含むデータサイエンス向け
- pipx:CLI ツール(
black、ruff等)を隔離環境にインストール - setuptools / build / hatchling:ライブラリを Wheel にパッケージング
関連言語との比較
| 項目 | Python | Ruby | JavaScript | Go |
|---|---|---|---|---|
| 登場年 | 1991 | 1995 | 1995 | 2009 |
| 型システム | 動的・強 | 動的・強 | 動的・弱 | 静的・強 |
| 実行モデル | バイトコード VM | バイトコード VM(YARV) | JIT | ネイティブコンパイル |
| 主な用途 | AI・科学計算・Web・自動化 | Web(Rails) | Web フロント・サーバ | サーバ・CLI・ミドルウェア |
| パッケージ | pip / PyPI | gem / RubyGems | npm | go mod |
| 並行性 | GIL あり(CPython) | GVL あり(MRI) | イベントループ | Goroutine |
注意点・落とし穴
- GIL(Global Interpreter Lock):CPython では同時に 1 スレッドしか Python バイトコードを実行できない。CPU バウンド処理は
multiprocessingや C 拡張で回避。Python 3.13 で実験的に GIL 無効化オプションが追加された - インデント=構文:ブロックは
{}ではなくインデントで決まる。タブとスペースの混在はTabErrorになるので スペース 4 つに統一(PEP 8) - ミュータブルなデフォルト引数:
def f(x=[]):のデフォルトは関数定義時に 1 回だけ評価され、呼び出し間で共有される。Noneを使うのが定石 - 2 系と 3 系の非互換:Python 2 は 2020-01 で EOL。
print文、unicode/strの扱いなどが大きく変わった __pycache__のコミット禁止:.gitignoreに必ず追加- 循環インポート:モジュール間で相互
importすると順序によって失敗する。設計で回避
関連リンク
- 親カテゴリ:プログラミング・スクリプト
- 概論:ファイル拡張子とは
- IT サイト共通カテゴリ:プログラミング言語(カテゴリ)
- 外部:python.org / PEP 8
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09