Help my variables are changing when i don't want them to, and then they dont change when i want to...
Title: ๐ Demystifying Name, Object, and Mutability in Python ๐ง ๐ป
Welcome, Pythonistas! Today, we're delving deep into the core concepts of name, object, and mutability in Python – the building blocks that shape the behavior of our beloved language. ๐ Let's embark on this exciting journey together and unravel the mysteries behind these fundamental concepts! ๐
### Understanding Names and Objects
In Python, everything is an object – whether it's a simple integer like `1`, a list like `[1, 2]`, or even a function! ๐ฉ Objects in Python are entities that have data (attributes) and associated behaviors (methods).
When we assign a value to a variable, we're essentially creating a name that references an object. Let's dive into an example:
```python
x = 1
y = x
y = 2
print(x, y) # Output: 1 2
```
In this snippet, we create two names (`x` and `y`) that reference the same integer object initially (`1`). However, when we reassign `y` to `2`, it no longer refers to the same object as `x`. Thus, changing `y` does not affect `x`.
### Exploring Mutability
Now, let's talk about mutability – the ability of an object to be changed after it's created. In Python, some objects are mutable (modifiable), while others are immutable (unchangeable).
```python
L1 = [1, 2]
L2 = L1
L1[0] = 3
print(L1, L2) # Output: [3, 2] [3, 2]
```
In this example, we create a list `L1` containing `[1, 2]`. Then, we assign `L2` to `L1`, meaning both names point to the same list object. When we modify `L1` by changing its first element to `3`, both `L1` and `L2` reflect this change. Why? Because lists are mutable objects in Python.
also:
```
L=[1,2,3]
for item in L:
item += 1
print(L)
```
versus
```
n=len(L)
for i in range (n):
L[i] += 1
print(L)
```
### Wrapping Up
And there you have it, folks! We've journeyed through the realms of names, objects, and mutability in Python. Armed with this knowledge, you'll be better equipped to understand the inner workings of Python code and wield its power with finesse. ๐ ️
Remember, names are merely labels for objects, and mutability determines whether an object can be changed after creation. Embrace these concepts, experiment with Python's flexibility, and let your coding adventures flourish! ๐
Until next time, happy coding! ๐ป✨
Interactive example:
https://colab.research.google.com/drive/1hz1hluXb_B9Vx82kV6wNQJSO0hjIVUG3?usp=sharing
more raw examples:
https://colab.research.google.com/drive/1zKkkH_erZdSLWnjStk_Kcw3_A6RMrBbN
Also try this on python-tutor
Comments
Post a Comment