# Python チートシート：構文、コマンド、組み込み関数を表でまとめて確認

URL: https://skillaria.top/ja/guides/python/python-cheat-sheet

Python の構文はインデントでブロックを表します。コロンの後の行は 4 つの空白で字下げします。基本は、型宣言のない変数、if/elif/else の条件分岐、for と while のループ、def による関数です。組み込み関数の print、len、range、input、type や、文字列・リスト・辞書のメソッドを覚えると、日常の多くの作業をこなせます。

この Python チートシートには、最初の数か月で手元に置いておきたい内容をまとめました。構文、ループ、組み込み関数、文字列・リスト・辞書のメソッド、ターミナルのコマンドです。どの表も短い早見表で、動く例を REPL にそのまま貼り付けて試せます。

## Python の基本構文

Python の大きな特徴は、ブロックを波かっこではなくインデントで表すことです。コロンで終わる行（`if`、`for`、`def`、`class`）の後に続く行は、4 つの空白で字下げします。タブと空白を混ぜることはできません。インデントが揃っていないと、`IndentationError` が発生します。

| 構文 | 例 | 説明 |
| --- | --- | --- |

| コメント | `# テキスト` | # から行末までは無視されます |

| 変数 | `age = 25` | 型は宣言せず、値によって決まります |

| 複数代入 | `a, b = 1, 2` | アンパック。値の入れ替えは `a, b = b, a` |

| 出力 | `print("こんにちは", name)` | 引数はスペースで区切られます |

| 入力 | `s = input("名前: ")` | 常に文字列を返します |

| f 文字列 | `f"{name}: {price:.2f}"` | 式の埋め込みと書式指定ができます |

| 型ヒント | `count: int = 0` | エディタや検査ツールのためのヒント。実行時には確認されません |

| 空のブロック | `pass` | 構文上ブロックが必要な場所のプレースホルダ |

| インポート | `from math import sqrt` | モジュールまたはその中の名前を読み込みます |

### コメントアウトの書き方

Python で 1 行をコメントアウトするには、行頭に `#` を付けます。Python には複数行コメント専用の構文はないので、複数行をまとめてコメントアウトするときは各行に `#` を付けます。VS Code や PyCharm では、行を選択して `Ctrl + /`（macOS は `Cmd + /`）を押すと一括で切り替えられます。

```
# 1 行のコメント
total = price * count  # 行末のコメント
# print(total)         # 一時的に無効化した行
```

`"""..."""` の三重引用符で囲む方法も見かけますが、これはコメントではなく文字列リテラルです。関数やクラスの先頭に置けば docstring（説明文）になります。

### データ型

| 型 | リテラル | 変更可能か |
| --- | --- | --- |

| `int` | `42`、`1_000_000` | 不可 |

| `float` | `3.14`、`1e-3` | 不可 |

| `bool` | `True`、`False` | 不可 |

| `str` | `"テキスト"`、`'テキスト'`、`"""複数行"""` | 不可 |

| `list` | `[1, 2, 3]` | 可 |

| `tuple` | `(1, 2)`、`(1,)` | 不可 |

| `dict` | `{"a": 1}` | 可 |

| `set` | `{1, 2}`、空は `set()` | 可 |

| `NoneType` | `None` | — |

### 演算子

| グループ | 演算子 | 例 → 結果 |
| --- | --- | --- |

| 算術 | `+ - * / // % **` | `7 // 2` → 3、`7 % 2` → 1、`2 ** 10` → 1024 |

| 比較 | `== != < > <= >=` | `1 < x < 10` — 連鎖比較 |

| 論理 | `and or not` | `x or "デフォルト"` |

| 所属 | `in`、`not in` | `"a" in "abc"` → True |

| 同一性 | `is`、`is not` | `x is None` |

| 代入 | `+= -= *= /=`、`:=` | `if (n := len(s)) > 10: ...` |

## 条件分岐とパターンマッチング

```
if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "成人" if age >= 18 else "未成年"   # 条件式（三項演算子）

match command:
    case "start":
        print("開始")
    case "stop" | "exit":
        print("停止")
    case _:
        print("不明なコマンド")
```

偽とみなされるのは、`False`、`None`、`0`、空文字列、空のコレクションです。そのため `if len(items) > 0` の代わりに、単に `if items` と書くのが一般的です。

## Python のループ：for と while の書き方

### for ループ

for 文の書き方は `for 変数 in 並び:` で、その後に字下げした本体を書きます。ループは、文字列、リスト、辞書、ファイル、`range` など、あらゆる反復可能なオブジェクトを順に処理できます。

```
for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["りんご", "なし"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)
```

### while ループ

```
attempts = 3
while attempts > 0:
    password = input("パスワード: ")
    if password == "secret":
        print("ログインしました")
        break
    attempts -= 1
else:
    print("試行回数を超えました")   # break で抜けなかった場合に実行
```

| 命令 | 動作 |
| --- | --- |

| `break` | ループを途中で抜けます |

| `continue` | 次の繰り返しへ進みます |

| ループの `else` | `break` なしで終了した場合に実行されます |

| `range(stop)`、`range(start, stop, step)` | 数の並び。`stop` は含まれません |

### 内包表記（comprehension）

```
squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # ジェネレータ式
```

## 関数

```
def greet(name: str, greeting: str = "こんにちは") -> str:
    """挨拶を返します。"""
    return f"{greeting}、{name}さん！"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("太郎"))                     # こんにちは、太郎さん！
print(greet("太郎", greeting="やあ"))    # やあ、太郎さん！
```

| 要素 | 意味 |
| --- | --- |

| `def f(a, b=1)` | デフォルト値を持つ引数 |

| `*args` | 任意個数の位置引数（タプル） |

| `**kwargs` | 任意個数のキーワード引数（辞書） |

| `return` | 値を返します。省略すると `None` を返します |

| `lambda x: ...` | 一つの式からなる無名関数 |

| `global`、`nonlocal` | 外側のスコープにある変数を変更します |

変更可能な既定値、たとえば `def f(items=[])` は使わないでください。リストは一度だけ作られ、呼び出しの間で中身が蓄積されてしまいます。正しくは `items=None` として、関数の中で `if items is None: items = []` と書きます。

## Python の組み込み関数

組み込み関数は、インポートなしで使えます。ほぼすべてのスクリプトで登場する基本的な関数です。

| 関数 | 動作 | 例 → 結果 |
| --- | --- | --- |

| `print()` | 値を出力します | `print(1, 2, sep="-")` → 1-2 |

| `input()` | キーボードから文字列を読み取ります | `int(input())` |

| `len()` | コレクションや文字列の長さ | `len("abc")` → 3 |

| `type()` | オブジェクトの型 | `type(3.0)` → <class 'float'> |

| `isinstance()` | 型の判定 | `isinstance(5, int)` → True |

| `int() float() str() bool()` | 型の変換 | `int("42")` → 42 |

| `list() tuple() set() dict()` | コレクションの作成 | `list("ab")` → ['a', 'b'] |

| `range()` | 数の範囲 | `list(range(3))` → [0, 1, 2] |

| `enumerate()` | （インデックス, 要素）の組 | `list(enumerate("ab"))` → [(0, 'a'), (1, 'b')] |

| `zip()` | 並びを順番に組み合わせます | `list(zip([1, 2], "ab"))` → [(1, 'a'), (2, 'b')] |

| `sum() min() max()` | 合計、最小値、最大値 | `max([3, 7, 1])` → 7 |

| `abs() round()` | 絶対値と丸め | `round(3.14159, 2)` → 3.14 |

| `sorted()` | 新しい並べ替え済みリスト | `sorted(words, key=len, reverse=True)` |

| `reversed()` | 逆順のイテレータ | `list(reversed([1, 2]))` → [2, 1] |

| `map() filter()` | 関数の適用、絞り込み | `list(map(str, [1, 2]))` → ['1', '2'] |

| `any() all()` | 一つでも真か、すべて真か | `all(x > 0 for x in nums)` |

| `open()` | ファイルを開きます | `open("a.txt", encoding="utf-8")` |

| `help() dir()` | ヘルプと属性の一覧 | `help(str.split)`、`dir(list)` |

| `id() hash()` | オブジェクトの ID とハッシュ値 | `hash("a")` |

いつも手元に置いておきたいリファレンスは、REPL の `help()` 関数です。`help(dict)` は辞書のすべてのメソッドを説明付きで表示し、`dir(obj)` は使える名前の一覧を表示します。

## 文字列のメソッド

Python の文字列は変更できません。どのメソッドも新しい文字列を返します。スライスはリストと同じように使えます。`s[1:4]` は部分の取り出し、`s[::-1]` は逆順です。

| メソッド | 例 → 結果 |
| --- | --- |

| `upper() lower()` | `"Py".upper()` → 'PY' |

| `capitalize() title()` | `"hello world".title()` → 'Hello World' |

| `strip() lstrip() rstrip()` | `" hi \n".strip()` → 'hi' |

| `split(sep)` | `"a,b,c".split(",")` → ['a', 'b', 'c'] |

| `join(iterable)` | `"-".join(["a", "b"])` → 'a-b' |

| `replace(old, new)` | `"猫".replace("猫", "犬")` → '犬' |

| `find() index()` | `"hello".find("l")` → 2。見つからない場合は -1（`index` ではエラー） |

| `count()` | `"banana".count("a")` → 3 |

| `startswith() endswith()` | `"file.py".endswith(".py")` → True |

| `isdigit() isalpha() isspace()` | `"123".isdigit()` → True |

| `removeprefix() removesuffix()` | `"test_a".removeprefix("test_")` → 'a' |

| `zfill() center() ljust()` | `"7".zfill(3)` → '007' |

| `format()` | `"{} + {}".format(1, 2)` → '1 + 2' |

## リストのコマンド

リストは変更可能な順序付きのコレクションです。ほとんどのメソッドはリストをその場で変更し、`None` を返します。そのため `a = a.sort()` はよくある間違いです。

| 操作 | 動作 | 例 |
| --- | --- | --- |

| `append(x)` | 末尾に追加します | `a.append(4)` |

| `extend(iter)` | すべての要素を追加します | `a.extend([5, 6])` |

| `insert(i, x)` | インデックスの位置に挿入します | `a.insert(0, "first")` |

| `remove(x)` | 値が最初に現れる要素を削除します | `a.remove(3)` |

| `pop(i)` | 要素を削除して返します（既定は最後の要素） | `last = a.pop()` |

| `clear()` | リストを空にします | `a.clear()` |

| `index(x)` | 最初に現れるインデックス | `a.index("b")` |

| `count(x)` | 出現回数 | `a.count(1)` |

| `sort()` | その場で並べ替えます | `a.sort(key=str.lower)` |

| `reverse()` | その場で逆順にします | `a.reverse()` |

| `copy()` | 浅いコピーを作ります | `b = a.copy()` |

| `del a[i]` | インデックスまたはスライスで削除します | `del a[1:3]` |

| スライス | `a[start:stop:step]` | `a[-1]` は最後の要素、`a[:3]` は最初の三つ |

## 辞書のコマンド

| 操作 | 動作 | 例 |
| --- | --- | --- |

| `d[key]` | キーに対応する値。キーがなければ `KeyError` | `d["name"]` |

| `get(key, default)` | 値、またはその代わりの既定値 | `d.get("age", 0)` |

| `d[key] = value` | 追加または変更 | `d["city"] = "大阪"` |

| `keys() values() items()` | キー、値、組の一覧 | `for k, v in d.items():` |

| `update()` | 別の辞書と統合します | `d.update({"a": 1})` |

| `d1 | d2` | 統合した新しい辞書 | `merged = defaults | user` |

| `pop(key, default)` | 削除して値を返します | `d.pop("tmp", None)` |

| `popitem()` | 最後に追加された組を削除します | `d.popitem()` |

| `setdefault(key, value)` | 値を返します。キーがなければ作成します | `d.setdefault("tags", []).append("py")` |

| `key in d` | キーがあるかどうか | `if "name" in d:` |

| `dict.fromkeys()` | 同じ値を持つキーから辞書を作ります | `dict.fromkeys("abc", 0)` |

| `len(d)`、`del d[key]` | サイズと削除 | `del d["old"]` |

### タプルと集合

| 操作 | 例 → 結果 |
| --- | --- |

| タプルのアンパック | `x, y = (3, 4)` |

| 集合への追加 | `s.add(5)`、削除は `s.discard(5)` |

| 和集合・積集合 | `{1, 2} | {2, 3}` → {1, 2, 3}、`{1, 2} & {2, 3}` → {2} |

| 差集合 | `{1, 2} - {2}` → {1} |

| リストの重複を除く | `list(dict.fromkeys(items))`（順序を保ちます） |

## 例外とファイル

```
try:
    number = int(input("数: "))
except ValueError as err:
    print("数ではありません:", err)
else:
    print("成功")
finally:
    print("必ず実行されます")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("1行目\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
```

| 例外 | 発生する場面 |
| --- | --- |

| `SyntaxError`、`IndentationError` | 構文またはインデントのエラー |

| `NameError` | 名前が定義されていない（綴りの間違いなど） |

| `TypeError` | 型が合わない操作。例: `"1" + 1` |

| `ValueError` | 型は正しいが値が不適切。例: `int("abc")` |

| `IndexError`、`KeyError` | インデックスやキーが存在しない |

| `FileNotFoundError` | ファイルが見つからない |

| `ZeroDivisionError` | ゼロで割った |

## クラス

```
from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: ワン！"

@dataclass
class Point:
    x: float
    y: float

print(Dog("ポチ").bark())    # ポチ: ワン！
print(Point(1, 2))           # Point(x=1, y=2)
```

## 組み込みモジュール

標準ライブラリはインタプリタと一緒にインストールされています。`import` するだけで使えます。

| モジュール | 用途 | 例 |
| --- | --- | --- |

| `math` | 数学 | `math.sqrt(16)` → 4.0 |

| `random` | 乱数 | `random.randint(1, 6)`、`random.choice(items)` |

| `datetime` | 日付と時刻 | `datetime.date.today()` |

| `pathlib` | パスとファイル | `Path("data").glob("*.csv")` |

| `os`、`sys` | システム、環境変数、引数 | `os.environ.get("HOME")`、`sys.argv` |

| `json` | JSON の読み書き | `json.loads(text)`、`json.dumps(obj, ensure_ascii=False)` |

| `csv` | CSV の表 | `csv.DictReader(f)` |

| `collections` | Counter、defaultdict、deque | `Counter("banana").most_common(1)` → [('a', 3)] |

| `itertools` | 組み合わせと反復子の連結 | `itertools.chain(a, b)` |

| `re` | 正規表現 | `re.findall(r"\d+", s)` |

| `time` | 待機と時間の計測 | `time.sleep(1)`、`time.perf_counter()` |

| `asyncio` | 非同期処理 | `asyncio.run(main())` |

Python 3.15 では遅延インポート（PEP 810）が使えるようになりました。`lazy import pandas as pd` と書くと、モジュールの読み込みは最初に使われるまで遅らされ、重い依存関係を持つスクリプトの起動が速くなります。

## Python のターミナルコマンド

「python コマンド」で検索される内容は、インタプリタを起動したり、ライブラリをインストールしたりするコマンドです。Windows では `python3` の代わりに `python` または `py` と書くのが一般的です。

| コマンド | 動作 |
| --- | --- |

| `python3 --version` | バージョンを表示します |

| `python3` | 対話型コンソール（REPL）を開きます。終了は `exit()` |

| `python3 script.py` | ファイルを実行します |

| `python3 -c "print(2 + 2)"` | 一行のコードを実行します |

| `python3 -m venv .venv` | 仮想環境を作成します |

| `source .venv/bin/activate` / `.venv\Scripts\activate` | 仮想環境を有効にします（Linux と macOS / Windows） |

| `python3 -m pip install requests` | パッケージをインストールします |

| `pip list`、`pip freeze > requirements.txt` | パッケージの一覧を表示し、保存します |

| `pip install -r requirements.txt` | ファイルの依存関係をまとめてインストールします |

| `python3 -m http.server 8000` | 現在のフォルダで簡易 Web サーバーを起動します |

| `uv init`、`uv add requests`、`uv run main.py` | uv でプロジェクトの作成、依存関係の追加、実行を行います |

## 初心者によくある間違い

- **比較に `=` を使う**：条件式では `==` が必要です。一つの `=` は代入です。
- **コロンの書き忘れ**：`if`、`for`、`def` の後のコロンがないと `SyntaxError` になります。
- **文字列と数値の足し算**：`"年齢: " + 25` はエラーです。`f"年齢: {25}"` と書きましょう。
- **ループ中にリストを変更する**：`for x in a[:]` のようにコピーを回すか、新しいリストを作りましょう。
- **`input()` は文字列を返す**：計算に使うときは `int()` や `float()` で囲みます。

## まとめ

Python の構文は、インデント、コロン、いくつかの基本的な構文要素（条件分岐、for と while のループ、関数、クラス）で成り立っています。そこに二十ほどの組み込み関数と、文字列・リスト・辞書のメソッドを加えれば、日常的な作業の大部分をこなせます。このチートシートを保存しておき、慣れてきたらモジュールや非同期処理に進んでください。講座「Python 3.15: 初心者からプロまで」では、これらの内容を一つずつ実践しながら学びます。

## FAQ

**インデントには何個の空白を使うのが普通ですか？**

標準の PEP 8 では、一段階につき 4 つの空白です。大切なのは、ブロック全体で統一し、タブと混ぜないことです。

**リストとタプルの違いは何ですか？**

リストは変更可能で、要素の追加や並べ替えをその場で行えます。タプルは変更できないため、辞書のキーとして使えたり、固定された値の組に向いていたりします。

**Python でオブジェクトのメソッドを一覧で確認するにはどうしますか？**

dir(obj) で名前の一覧、help(obj) で説明を表示します。たとえば help(str) は文字列のすべてのメソッドを表示します。

**sort() と sorted() の違いは何ですか？**

list.sort() はリスト自体を並べ替えて None を返します。一方、sorted() は新しいリストを返し、どの反復可能なコレクションにも使えます。

**行末にセミコロンは必要ですか？**

いいえ。セミコロンは一行に複数の命令を書くときに使えますが、通常のコードでは命令ごとに改行して書きます。


---
Source: Skillaria.Top (https://skillaria.top)
