A Python variable is a name bound to an object; the same name can be rebound to a different type at any time, because types belong to values, not to names.
python x = 5 x = "now a string" x = [1, 2, 3]
Under the hood everything is an object, including integers and functions. `type(x)` reports the current binding's type, and `isinstance(x, int)` checks membership including subclasses.
Multiple assignment and tuple unpacking are idiomatic:
python a, b = 1, 2 a, b = b, a # swap without a temp variable