Python函数对象与闭包

一 函数对象

函数对象指的是函数可以被当做’数据’来处理,具体可以分为四个方面的使用

玩法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': }

玩法3:

函数可以作为参数传入另外一个函数

def func():
    print("开心")
def outer(a):
    print(a)
    a()
print(outer(func))
# 
# 开心
# 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())

你可能感兴趣的:(前端,服务器,运维)