def outer(): def inner(): global a a = 15 print ("inner:", a) a = 10 print("outer1:", a) inner() print("outer2:", a) a = 5 print("main1:", a) outer() print("main2:", a) output: main1: 5 outer1: 10 inner: 15 outer2: 10 main2: 15
def outer(): def inner(): nonlocal a a = 15 print ("inner:", a) a = 10 print("outer1:", a) inner() print("outer2:", a) a = 5 print("main1:", a) outer() print("main2:", a) output: main1: 5 outer1: 10 inner: 15 outer2: 15 main2: 5