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': <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())

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值