Diagrams: Types and Conversions¶
Python Type Hierarchy¶
Everything in Python is an object. Here are the most common types.
flowchart TD
OBJ["object<br/>(the root of everything)"]
OBJ --> INT["int<br/>whole numbers<br/>42, -7, 0"]
OBJ --> FLOAT["float<br/>decimal numbers<br/>3.14, -0.5"]
OBJ --> BOOL["bool<br/>True or False"]
OBJ --> STR["str<br/>text<br/>"hello""]
OBJ --> LIST["list<br/>ordered, changeable<br/>[1, 2, 3]"]
OBJ --> TUPLE["tuple<br/>ordered, frozen<br/>(1, 2, 3)"]
OBJ --> DICT["dict<br/>key-value pairs<br/>{"a": 1}"]
OBJ --> SET["set<br/>unique items<br/>{1, 2, 3}"]
OBJ --> NONE["NoneType<br/>nothing<br/>None"]
BOOL -.->|"bool is a<br/>subtype of int"| INT
style OBJ fill:#888,stroke:#666,color:#fff
style INT fill:#4a9eff,stroke:#2670c2,color:#fff
style FLOAT fill:#51cf66,stroke:#27ae60,color:#fff
style BOOL fill:#ffd43b,stroke:#f59f00,color:#000
style STR fill:#ff6b6b,stroke:#c0392b,color:#fff
style LIST fill:#cc5de8,stroke:#9c36b5,color:#fff
style TUPLE fill:#20c997,stroke:#0ca678,color:#fff
style DICT fill:#ff922b,stroke:#e8590c,color:#fff
style SET fill:#66d9e8,stroke:#22b8cf,color:#000
style NONE fill:#adb5bd,stroke:#868e96,color:#000
Type Conversion Paths¶
Some conversions are safe (no data lost). Others are lossy (information disappears).
flowchart LR
INT["int"]
FLOAT["float"]
STR["str"]
BOOL["bool"]
INT -->|"Safe<br/>42 -> 42.0"| FLOAT
FLOAT -->|"Lossy!<br/>42.7 -> 42<br/>decimal lost"| INT
INT -->|"Safe<br/>42 -> "42""| STR
STR -->|"Only if valid<br/>"42" -> 42<br/>"hello" -> ERROR"| INT
FLOAT -->|"Safe<br/>3.14 -> "3.14""| STR
STR -->|"Only if valid<br/>"3.14" -> 3.14"| FLOAT
BOOL -->|"Safe<br/>True -> 1"| INT
INT -->|"Safe<br/>0 -> False<br/>anything else -> True"| BOOL
linkStyle 1 stroke:#ff0000
linkStyle 3 stroke:#ff8800
linkStyle 5 stroke:#ff8800
style INT fill:#4a9eff,stroke:#2670c2,color:#fff
style FLOAT fill:#51cf66,stroke:#27ae60,color:#fff
style STR fill:#ff6b6b,stroke:#c0392b,color:#fff
style BOOL fill:#ffd43b,stroke:#f59f00,color:#000
Truthy and Falsy Decision Tree¶
Python treats some values as False when used in if statements.
flowchart TD
START{"What is<br/>the value?"}
START -->|"None"| FALSY
START -->|"0, 0.0, 0j"| FALSY
START -->|"Empty string: """| FALSY
START -->|"Empty list: []"| FALSY
START -->|"Empty dict: {}"| FALSY
START -->|"Empty set: set()"| FALSY
START -->|"Empty tuple: ()"| FALSY
START -->|"False"| FALSY
START -->|"Anything else"| TRUTHY
FALSY["FALSY<br/>Treated as False"]
TRUTHY["TRUTHY<br/>Treated as True"]
TRUTHY --> EX1["42, -1, 3.14<br/>"hello", " "<br/>[0], {"a": 1}"]
style FALSY fill:#ff6b6b,stroke:#c0392b,color:#fff
style TRUTHY fill:#51cf66,stroke:#27ae60,color:#fff