一 函数对象
函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用
玩法1:
函数可以被引用
def outer(a,b):
return a+b
info=outer
print(info(5,9))
玩法2:
函数可以作为容器类型的元素
def outer():
print("有容乃大")
dic={"a":5,"b":6}
dic["c"]=outer
print(dic) #{'a': 5, 'b': 6, 'c': <function outer at 0x000002C348F03EB0>}
玩法3:
函数可以作为参数传入另外一个函数
def func():
print("开心")
def outer(a):
print(a)
a()
print(outer(func))
# <function func at 0x00000185FB213EB0>
# 开心
# None
玩法4:
函数的返回值可以是一个函数
def index():
print("index")
return "index2"
def func():
print("func")
return index
res=func()()
print(res)
# func
# index
# index2
闭包函数
闭与包
# 闭包函数还是函数,它是有函数一点一点演变过来的
什么是闭包函数?
闭:就是函数内部定义函数,至少要有2层函数
包:内部的函数要使用外部函数名称空间中的名字
def outer():
a=1
def inner():
print(a)
inner()
outer()
# 闭包函数的使用场景:
闭包函数其实是第二种传参方式!
第一种
def my_max(a, b):
if a>b:
return a
return b
info=my_max(1, 2)
print(info)
第二种
让你用闭包函数实现比较2个数的大小:一次传值,多次使用
def outer(a,b):
def my_max():
if a>b:
return a
return b
return my_max
res=outer(10,50)
print(res())