Reference Assignment in Python - Why isn't the value changed?

object references in python
python assignment copy or reference
python dictionary pass by reference
how to pass reference of list in python
python return reference
python string assignment copy or reference
python consecutive assignment
python variable assignment

I know that "variable assignment" in python is, in fact, a binding / re-binding of a name (the variable) to an object.

b = [1,2,3]
a = b[2] # binding a to b[2] ?
a = 1000

b is [1, 2, 3]

after this change, why b is not changed?

here is another example:

b = [1,2,3]
a = b
a[0] = 1000

this case b is [1000, 2, 3]

isn't assignment in Python reference binding?

Thank you


a = b[2] # binding a to b[2] ?

Specifically, this binds the name a to the same value referenced by b[2]. It does not bind a to the element in the list b at index 2. The name a is entirely independent of the list where it got its value from.

a = 1000

Now you bind the name a to a new value, the integer 1000. Since a has no association with b, b does not change.

In your second example:

a = b

Now a is bound to the same list value that b is bound to. So when you do

a[0] = 1000

You modify an element in the underlying list that has two different names. When you access the list by either name, you will see the same value.

Assignment statements in Python are more interesting than you , Assignment statements where the right hand side is a simple expression creates independent copies every time. While for everyday programming  Assignment in Python can be narrowed down to the following: it is simply a binding of name to an object. names are just a reference to an object stored in the memory in a particular scope. there is nothing such as variables, instead called Names more formally in the Python world.


a[0] = ... is a special form of assignment that desugars to a method call,

a.__setattr__(0, ...)

You aren't reassigning to the name a; you are assigning to a "slot" in the object referenced by a (and b).

Can we assign a reference to a variable in Python?, to (and will access) the same object in memory as used by the caller. Description¶. Adds a value and the variable and assigns the result to that variable.


Lists are mutable objects, ints aren't. 4 can't become 5 in python, but a list can change its contents.

Is Python pass-by-reference or pass-by-value?, is a line containing at least one single equal sign ( = ) that is not inside parentheses Python Overview Python Built-in Functions Python String Methods Python List Methods Python Dictionary Methods Python Tuple Methods Python Set Methods Python File Methods Python Keywords Python Exceptions Python Glossary Module Reference Random Module Requests Module Math Module cMath Module Python How To Remove List Duplicates Reverse a String


22.1. The assignment statement: name = expression, , a variable or other reference has no intrinsic type. In this case, two consecutive assignment statements did not create independent copies. Why? It gets interesting now. For optimizing memory, Python treats a special set of objects differently. The


Variables and Other References - Python in a Nutshell [Book], In python when we assign a value to a name, we actually create an object and a reference to it. For example in a=1, an object with value '1' is  Assignment solutions for python for everybody. Contribute to sweehors/python-for-everybody development by creating an account on GitHub.


Variable references in Python, After evaluating this expression all the variables are referencing the same object - integer 10. Another case of assignment is a multi-variable assignment. Finally, for instance variables it solves a syntactic problem with assignment: since local variables in Python are (by definition!) those variables to which a value is assigned in a function body (and that aren’t explicitly declared global), there has to be some way to tell the interpreter that an assignment was meant to assign to an instance