Python函数对象与闭包

2023-12-14 11:36:56

一 函数对象

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

玩法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())

文章来源:https://blog.csdn.net/weixin_41774149/article/details/132738340
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。