| この記事の要点 |
|
概要
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 / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- djangoのテンプレートの作成とヘッダー・フッターの共通化 2026-10-03 21:41:49
- テンプレートフラグメント(ヘッダー等の共有化) 2026-10-03 21:41:49
- reCAPTCHA v3 使い方(サンプル付き) 2026-10-03 21:37:05
- Content-Type一覧|MIMEタイプとはとHTTPでの主な使用場面 2026-10-03 21:37:05
- SpringにおけるAOPの使い方 2026-10-03 21:37:05
- X (Twitter) API でツイートできないがエラーが出ない問題の原因と対処 2026-10-03 11:33:01
- X (Twitter) API アプリケーション登録完全ガイド|v2・Bearer Token・OAuth 2.0 PKCE 2026-10-03 11:33:01
- X (Twitter) API 完全ガイド|従量課金の料金・単価(2026年10月)と v2 移行 2026-10-03 11:32:40
- Google DeepMind とは?Gemini・AlphaFold の開発元 2026-10-03 11:26:56
- Cursor とは?AI 統合型コードエディタの使い方・料金 2026-10-03 11:26:56
- Claude (Anthropic) とは?AIチャットの使い方・モデルファミリ・API 2026-10-03 11:26:56
- AIベンダー一覧:OpenAI・Anthropic・Google DeepMind・Microsoft・Meta 2026-10-03 11:26:56
- クラウド・インフラ完全ガイド — AWS/Azure/GCP/Kubernetes 2026-10-03 11:26:56
- テキストエディタ完全比較 (VS Code / Cursor / Vim / Emacs / IDE) 2026-10-03 11:26:56
- プログラミング学習プラットフォーム|Scratch・micro:bit ほか 2026-10-03 11:26:56