def test(number):
def test_in(number_in):
print("in test_in 函数, number_in is %d" % number_in)
return number+number_in
return test_in
ret = test(20)
print(ret(100))
print(ret(200))
###在函数内部定义函数,并把内部函数的函数名的引用return返回
实例一
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))
实例二
def counter(start=0):
def incr():
nonlocal start
start += 1
return start
return incr
c1 = counter(5)
print(c1())
print(c1())
c2 = counter(50)
print(c2())
print(c2())
###修改外部函数中的变量
总结
函数内的属性,都是有声明周期,都是在函数执行期间
内部函数对外部函数**作用域**里**变量**的引用
闭包内的闭包函数私有化了变量,完成了数据的封装,类似与面向对象