A name is a piece of text that is bound to an object. They are a reference to an object. Examples are function names, class names, module names, variables, etc.
Note: Names cannot reference other names, and assignment never creates a copy.
x = 1 # x is bound to 1
y = x # y is bound to VALUE of x
x = 2 # x is bound to 2
print(x, y) # 2 1
When doing y = x, the name y is being bound to the value of x which is 1. Neither x nor y are the 'real' name. The object 1 simply has multiple names. They are the exact same object.
>>> x = 1
x ━━ 1
>>> y = x
x ━━ 1
y ━━━┛
>>> x = 2
x ━━ 2
y ━━ 1
Names are created in multiple waysYou might think that the only way to bind a name to an object is by using assignment, but that isn't the case. All of the following work exactly the same as assignment:
-
import statements-
class and def-
for loop headers-
as keyword when used with except, import, and with- formal parameters in function headers
There is also del which has the purpose of unbinding a name.
More info
- Please watch Ned Batchelder's talk on names in python for a detailed explanation with examples
- Official documentation