#高阶函数:1、一个函数作为另一个函数的返回值 2、一个函数作为另一个函数的参数 3、函数内部在定义一个函数 def foo(): print('我是foo,我被调用了!') return 'foo' def bar(): print('我是bar,我被调用了!') return foo() bar() foo() print('____'*20) #内部: def outer(x): print('我是outer,我被调用了!') def inner():#inner是在outer内部使用的函数 print('我是inner,我被调用了!!') if x >18: inner() return 'hello' outer(21) print('______'*20) #闭包=函数包+引用环境 #注意:如果在一个函数中,对于外部作用域(但不是全局作用域)的变量进行引用那么内部函数就被认为是闭包 def outer1(): a=10 def inner(): nonlocal a#在内部函数修改外部函数的局部变量 y=a+1 print('inner里面的y=',y) a=20 return inner outer1()
结果:
我是bar,我被调用了!
我是foo,我被调用了!
我是foo,我被调用了!
________________________________________________________________________________
我是outer,我被调用了!
我是inner,我被调用了!!
________________________________________________________________________________________________________________________
inner里面的y= 11