In [20]:
g = "orginal global value of 'g'"
def shadowing_first_works():
g = "locally shadowed value of 'g'"
print(g)
shadowing_first_works()
In [21]:
def first_reading_breaks():
try:
print(g)
g = "This line is never executed"
except UnboundLocalError:
print("That did not work")
assert 'g' not in locals()
assert 'g' in globals()
first_reading_breaks()
In [22]:
def declare_as_global_works():
global g
print(g)
g = "This works again!!"
print(g)
declare_as_global_works()
print("now global value is changed ...", g)