Initialization gives something its starting value. In Python, initializing a variable with `=` binds a name to an object. You can then use that name in an expression. If you assign the name again later, you update it; that is different from giving it its first value. section 4.2
Start with values you can use
`a = 1` initializes `a`, and `b = 2` initializes `b`. Then `c = a + b` initializes `c` with the expression’s result, `3`. In a minutes-conversion program, `minutes_to_convert = 123` similarly supplies a starting input before the conversion. section 4.2 section 6.2
A `while` loop needs a starting value for the variable its condition checks. For example, set `x = 0` before `while x < 3`, then increase `x` each time through the loop. Without the first assignment, Python does not know which `x` the loop means. A `for` loop handles its loop variable automatically. section 18.2
Objects need a starting state too. A class’s `__init__` method usually sets its data attributes—the values belonging to each object. `self.radius = 0` gives a new circle a radius of zero; `self.stack = []` gives a new stack an empty list. Here, `self` refers to the object being initialized. section 31.2 section 32.1
Quick check: in `x = 0; x = 2`, which assignment initializes `x`, and which updates it? When writing a loop or class, ask what values must exist before the rest of its code can work. section 4.2 section 18.2




