Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit a545bda

Browse filesBrowse files
authored
Add Visualizations for Mutable Objects (#234)
* visualisations * fix typos * change wording * delete redundent words
1 parent 22e2d64 commit a545bda
Copy full SHA for a545bda

File tree

Expand file treeCollapse file tree

6 files changed

+45
-2
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

6 files changed

+45
-2
lines changed
Open diff view settings
Collapse file
207 KB
  • Display the source diff
  • Display the rich diff
Loading
Collapse file
246 KB
  • Display the source diff
  • Display the rich diff
Loading
Collapse file
262 KB
  • Display the source diff
  • Display the rich diff
Loading
Collapse file
256 KB
  • Display the source diff
  • Display the rich diff
Loading
Collapse file
273 KB
  • Display the source diff
  • Display the rich diff
Loading
Collapse file

‎lectures/oop_intro.md‎

Copy file name to clipboardExpand all lines: lectures/oop_intro.md
+45-2Lines changed: 45 additions & 2 deletions
  • Display the source diff
  • Display the rich diff
Original file line numberDiff line numberDiff line change
@@ -746,15 +746,58 @@ This prints `[2]` as the value of `f(x)` and *same* for `x`.
746746
Here's what happens
747747

748748
* `f` is registered as a function in the global namespace
749+
750+
```{figure} /_static/lecture_specific/oop_intro/mutable1.png
751+
:figclass: auto
752+
```
753+
749754
* `x` bound to `[1]` in the global namespace
755+
756+
```{figure} /_static/lecture_specific/oop_intro/mutable2.png
757+
:figclass: auto
758+
```
759+
750760
* The call `f(x)`
751761
* Creates a local namespace
752762
* Adds `x` to the local namespace, bound to `[1]`
763+
764+
```{figure} /_static/lecture_specific/oop_intro/mutable3.png
765+
:figclass: auto
766+
```
767+
768+
```{note}
769+
The global `x` and the local `x` refer to the same `[1]`
770+
```
771+
772+
We can see the identity of local `x` and the identity of global `x` are the same
773+
774+
```{code-cell} python3
775+
def f(x):
776+
x[0] = x[0] + 1
777+
print(f'the identity of local x is {id(x)}')
778+
return x
779+
780+
x = [1]
781+
print(f'the identity of global x is {id(x)}')
782+
print(f(x), x)
783+
```
784+
785+
* Within `f(x)`
753786
* The list `[1]` is modified to `[2]`
754787
* Returns the list `[2]`
755-
* The local namespace is deallocated, and local `x` is lost
756-
* Global `x` has been modified
757788

789+
```{figure} /_static/lecture_specific/oop_intro/mutable4.png
790+
:figclass: auto
791+
```
792+
* The local namespace is deallocated, and the local `x` is lost
793+
794+
```{figure} /_static/lecture_specific/oop_intro/mutable5.png
795+
:figclass: auto
796+
```
797+
798+
If you want to modify the local `x` and the global `x` separately, you can create a [*copy*](https://docs.python.org/3/library/copy.html) of the list and assign the copy to the local `x`.
799+
800+
We will leave this for you to explore.
758801

759802

760803
## Summary

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.