The below example demonstrates this by defining two versions of s. The first s is accessible only to the outer function say_hello and the other s is only accessible to the inner function say_it.
def say_hello(): s = "Hello from outer function say_hello" def say_it(): s = "Hello from inner function say_it" print(s) print(s) say_it() say_hello()
The below code demonstrates how to access the outer function's local variable s. By using the nonlocal keyword, say_hello and say_it are sharing the variable s.
def say_hello(): s = "Hello from outer function say_hello" def say_it(): nonlocal s s = "Hello from inner function say_it" print(s) #print s before it is modified by say_it say_it() #change the value of s print(s) #print the new value after its modified by say_it say_hello()
The concept is very similar to the usage of the global keyword. The difference is global is used to allow a function access to variables defined as global ( actually module attributes ) while nonlocal allows access to variables defined in outer functions.
No comments:
Post a Comment