一、闭包
在函数内部再定义一个函数,并且这个函数用到了外边函数的变量
在函数里定义一个函数,不会默认被执行
def test(number): print("-----1-----") #在函数内部再定义一个函数,并且这个函数用到了外边函数的变量 def test_in(): print("-----2-----") print number+100 #这里返回的就是闭包的结果 print("-----3-----") return test_in ret = test(100) print("-"*30) ret()
以上代码运行结果
二、闭包的案例
def line_conf(a, b): def line(x): return a*x + b return line line1 = line_conf(1, 1) line2 = line_conf(4, 5) print(line1(5)) print(line2(5))
以上代码运行结果
>>> 6 25 >>>
-----1----- -----3----- ------------------------------ -----2----- 200
内部函数执行完后直接退出函数,外部函数变量依然保存