#闭包的构成
#当我们在外部函数中定义了一个内部函数,并且内部函数能够读取到外部函数内的变量,这种函数我们就称为闭包
# 1.存在函数的嵌套关系
# 2.内层函数引用了外层函数的变量
# 3.外层函数返回内层函数的地址值

def outer(num1):        #定义一个外部函数
    def inner(num2):    #定义一个内部函数
        return num1 + num2       #内层函数引用了外层函数的变量
    return inner
#print(inner)
res = outer(20) #20会传给num1,外部函数outer引用了内层函数inner的地址值,所以  num1 = 20 , res = inner res的地址和inner是一样的
print(res)
result = res(10) #res() = inner() , res(10) = inner(10) , num2 = 10 , result = num1+num2
print(result)