Python チートシート:構文、コマンド、組み込み関数を表でまとめて確認
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: 初心者からプロまで」では、これらの内容を一つずつ実践しながら学びます。
よくある質問
インデントには何個の空白を使うのが普通ですか?
標準の PEP 8 では、一段階につき 4 つの空白です。大切なのは、ブロック全体で統一し、タブと混ぜないことです。
リストとタプルの違いは何ですか?
リストは変更可能で、要素の追加や並べ替えをその場で行えます。タプルは変更できないため、辞書のキーとして使えたり、固定された値の組に向いていたりします。
Python でオブジェクトのメソッドを一覧で確認するにはどうしますか?
dir(obj) で名前の一覧、help(obj) で説明を表示します。たとえば help(str) は文字列のすべてのメソッドを表示します。
sort() と sorted() の違いは何ですか?
list.sort() はリスト自体を並べ替えて None を返します。一方、sorted() は新しいリストを返し、どの反復可能なコレクションにも使えます。
行末にセミコロンは必要ですか?
いいえ。セミコロンは一行に複数の命令を書くときに使えますが、通常のコードでは命令ごとに改行して書きます。
このテーマはコース「Python 3.15: от новичка до профи」で実践とともに詳しく解説しています。
- Python 3.15 с нуля и для опытных: что нового и как учить
- Python 3.15: установка, REPL и первый скрипт за десять минут
- Переменные, числа и строки в Python: f-строки и t-строки
- Условия, циклы и match/case в Python: управляем ходом программы
- Списки, кортежи, словари и множества: frozendict в Python 3.15