PY/TESTS JAVA → TS → GO →

Python 3.13 / pytest

Pythonの挙動を、
テストで観測する。

説明より先に、実行できる境界条件を見る。Python by Tests は、Sourceとpytestを並べて読むためのExecutable Documentationです。

identity.pytest_lessons.py→
Source → pytest / observed

The method

仕様を暗記する前に、
テストの観測結果を読む。

01

Source

確認したい最小のPythonコードだけを置きます。

02

Test

pytestで、挙動をそのまま固定します。

03

Evidence

値、None、例外、参照共有を短い結果として残します。

Initial catalog

まずは、16個の確かな挙動から。

16 / 16
01
Python

is と ==: 同一性と値の等価性は別

Test isとequalsは別の契約

is と ==: 同一性と値の等価性は別

Python 3.13+→
02
Python

mutable default argument: 呼び出し間で値を共有する

Test mutable default argumentは共有される

mutable default argument: 呼び出し間で値を共有する

Python 3.13+→
03
Python

copy: shallow copyは入れ子を共有しdeepcopyは共有しない

Test shallowとdeep copyは入れ子の共有が違う

copy: shallow copyは入れ子を共有しdeepcopyは共有しない

Python 3.13+→
04
Python

closure: loop変数はlate bindingで最後の値を読む

Test closureは最後のloop値を読む

closure: loop変数はlate bindingで最後の値を読む

Python 3.13+→
05
Python

generator: 遅延評価され、一度消費すると戻らない

Test generatorはlazyかつsingle-use

generator: 遅延評価され、一度消費すると戻らない

Python 3.13+→
06
Python

with: __enter__と__exit__でリソース境界を固定する

Test context managerはexitを呼ぶ

with: __enter__と__exit__でリソース境界を固定する

Python 3.13+→
07
Python

list multiplication: 入れ子の要素は同じlistを参照する

Test list multiplicationは入れ子を共有する

list multiplication: 入れ子の要素は同じlistを参照する

Python 3.13+→
08
Python

None: 値の不在は == ではなく is None で判定する

Test Noneはsingletonとして比較する

None: 値の不在は == ではなく is None で判定する

Python 3.13+→
09
Python

iterator: nextで進み、消費した要素は戻らない

Test iteratorは一度ずつ消費される

iterator: nextで進み、消費した要素は戻らない

Python 3.13+→
10
Python

exception chaining: raise ... from ... で原因を失わない

Test 例外のcauseを明示する

exception chaining: raise ... from ... で原因を失わない

Python 3.13+→
11
Python

class attribute: instanceへの代入は共有値を上書きしない

Test class属性とinstance属性は別の場所にある

class attribute: instanceへの代入は共有値を上書きしない

Python 3.13+→
12
Python

__eq__ / __hash__: 等価性を定義するとhash契約も変わる

Test 自作の等価性はhashabilityに影響する

__eq__ / __hash__: 等価性を定義するとhash契約も変わる

Python 3.13+→
13
Python

dataclass: 宣言から__init__と値比較を生成する

Test dataclassは値比較を生成する

dataclass: 宣言から__init__と値比較を生成する

Python 3.13+→
14
Python

type hints: 注釈はruntimeで引数を強制しない

Test 型注釈だけではruntime検証されない

type hints: 注釈はruntimeで引数を強制しない

Python 3.13+→
15
Python

Protocol: 継承なしでも必要な操作を満たせば扱える

Test runtime-checkable Protocolで構造を確認する

Protocol: 継承なしでも必要な操作を満たせば扱える

Python 3.13+→
16
Python

datetime: awareとnaiveは比較できず、timezoneを揃える

Test awareとnaiveの比較はTypeError

datetime: awareとnaiveは比較できず、timezoneを揃える

Python 3.13+→

Static index

教材を検索

テーマ、タグ、テスト名、カテゴリ、Pythonバージョンで絞り込みます。

16件の教材を表示しています。

Python · Python 3.13+is と ==: 同一性と値の等価性は別Test isとequalsは別の契約Python · Python 3.13+mutable default argument: 呼び出し間で値を共有するTest mutable default argumentは共有されるPython · Python 3.13+copy: shallow copyは入れ子を共有しdeepcopyは共有しないTest shallowとdeep copyは入れ子の共有が違うPython · Python 3.13+closure: loop変数はlate bindingで最後の値を読むTest closureは最後のloop値を読むPython · Python 3.13+generator: 遅延評価され、一度消費すると戻らないTest generatorはlazyかつsingle-usePython · Python 3.13+with: __enter__と__exit__でリソース境界を固定するTest context managerはexitを呼ぶPython · Python 3.13+list multiplication: 入れ子の要素は同じlistを参照するTest list multiplicationは入れ子を共有するPython · Python 3.13+None: 値の不在は == ではなく is None で判定するTest Noneはsingletonとして比較するPython · Python 3.13+iterator: nextで進み、消費した要素は戻らないTest iteratorは一度ずつ消費されるPython · Python 3.13+exception chaining: raise ... from ... で原因を失わないTest 例外のcauseを明示するPython · Python 3.13+class attribute: instanceへの代入は共有値を上書きしないTest class属性とinstance属性は別の場所にあるPython · Python 3.13+__eq__ / __hash__: 等価性を定義するとhash契約も変わるTest 自作の等価性はhashabilityに影響するPython · Python 3.13+dataclass: 宣言から__init__と値比較を生成するTest dataclassは値比較を生成するPython · Python 3.13+type hints: 注釈はruntimeで引数を強制しないTest 型注釈だけではruntime検証されないPython · Python 3.13+Protocol: 継承なしでも必要な操作を満たせば扱えるTest runtime-checkable Protocolで構造を確認するPython · Python 3.13+datetime: awareとnaiveは比較できず、timezoneを揃えるTest awareとnaiveの比較はTypeError