Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Compare this, without using nonlocal:
- x = 0
- def outer():
- x = 1
- def inner():
- x = 2
- print("inner:", x)
- inner()
- print("outer:", x)
- outer()
- print("global:", x)
- # inner: 2
- # outer: 1
- # global: 0
- To this, using nonlocal, where inner()'s x is now also outer()'s x:
- x = 0
- def outer():
- x = 1
- def inner():
- nonlocal x
- x = 2
- print("inner:", x)
- inner()
- print("outer:", x)
- outer()
- print("global:", x)
- # inner: 2
- # outer: 2
- # global: 0
- If we were to use global, it would bind x to the properly "global" value:
- x = 0
- def outer():
- x = 1
- def inner():
- global x
- x = 2
- print("inner:", x)
- inner()
- print("outer:", x)
- outer()
- print("global:", x)
- # inner: 2
- # outer: 1
- # global: 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement