9.12. AliasingΒΆ
If a
refers to an object and you assign b = a
,
then both variables refer to the same object:
The association of a variable with an object is called a reference. In this example, there are two references to the same object.
An object with more than one reference has more than one name, so we say that the object is aliased.
If the aliased object is mutable, changes made with one alias affect the other:
Although this behavior can be useful, it is error-prone. In general, it is safer to avoid aliasing when you are working with mutable objects.
For immutable objects like strings, aliasing is not as much of a problem. In this example:
a = 'banana'
b = 'banana'
it almost never makes a difference whether a
and
b
refer to the same string or not.
- [4, 2, 8, 6, 5]
- blist is not a copy of alist, it is a reference to the list alist refers to.
- [4, 2, 8, 999, 5]
- Yes, since alist and blist both reference the same list, changes to one also change the other.
- [999]
- alist has more than one element.
- [4, 2, 8, 6, 5, 999]
- 999 does not get added to the end of the list.
Q-3: What is printed by the following statements?
alist = [4, 2, 8, 6, 5]
blist = alist
blist[3] = 999
print(alist)
- ['Jamboree', 'get-together', 'party']
- Yes, the value of y has been reassigned to the value of w.
- ['celebration']
- No, that was the inital value of y, but y has changed.
- ['celebration', 'Jamboree', 'get-together', 'party']
- No, when we assign a list to another list it does not concatenate the lists together.
- ['Jamboree', 'get-together', 'party', 'celebration']
- No, when we assign a list to another list it does not concatenate the lists together.
Q-4: What is the value of y after the following code has been evaluated:
w = ['Jamboree', 'get-together', 'party']
y = ['celebration']
y = w