函数 二
一、函数的对象
1:可以被引用
def bar(): print('from bar') f=bar f() #打印结果 from bar bar() 被f引用
2、可以当做参数传入
x=1 def func(a): print(a) func(x)#打印结果为1 func(1)即为func(a)调用即为 print(1)
def bar(): 第4步
print('from bar') 第5步
def wrapper(func): #func=bar 第2步
func() #bar() 第3步
wrapper(bar) 第一步 #打印结果为from bar
3、可以当做函数的返回值
x=1 def foo(): return #即return x 的值,即1 res=foo() 第2步 就是res的值就是调用foo() print(res) # 第一步就 是打印res 的值
def bar(): print('from bar') def foo(func): #func=<function bar at 0x00000225AF631E18> return func #return <function bar at 0x00000225AF631E18> foo(bar) #f=<function bar at 0x00000225AF631E18> # foo(bar) 就是把bar 赋值给func, 所以foo(func)就是foo(bar).即return (func)为 return bar 的值, 而bar的值 即为from bar.
4、可以当做容器中类型的元素
def get(): print('from get') def put(): print('from put') l=[get,put] # print(l) l[0]() #打印结果 为 l[0]为l列表中的第一个元素get,所以l[0]()为get() 即结果为 from get. 其中get() 这个元素为l列表里的元素
二、闭包函数
定义在函数内部的函数, 并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数
def outter(): name='egon' def inner(): print('my name is %s' %name) return inner f=outter() #outter()调用 要用到inner()函数, inner函数在outter()函数的里面, 且影响到外部函数的引用 ,所以 inner()函数即为闭包函数