首页 > 其他 > 详细

闭包、装饰器

时间:2020-03-25 11:13:33      阅读:48      评论:0      收藏:0      [点我收藏+]

1、拆包、*args、**kwargs

*args是可变参数,接收的是一个tuple;

**kwargs是关键字参数,接收的是一个dict。

技术分享图片
def test(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args)
    print(*args)
    print(kwargs)


test(1,2,3,4,name=5,age=6)

运行结果:
1
2
(3, 4)
3 4
{name: 5, age: 6}
示例

 

 

2、闭包:延伸了作用域的函数,访问定义体之外定义的非全局变量

(1)外函数返回内函数的结果

(2)外函数将临时变量传递给内函数

(3)外函数无法改变局部变量的值,需要用nonlocal才可修改

 

3、装饰器

functool.lru_cache(maxsize,typed)

singledipatch

技术分享图片
def f(func):    #闭包
    def call_f(*args,**kwargs):
        print(1)
        print(2)
        return func(*args,**kwargs) #拆包
    return call_f

@f  #装饰器,
def test(num,*args,**kwargs):
    print(num)
    print(args)
    print(kwargs)
    return ok,ok    #返回元组

ret = test(100)
print(ret)

##运行结果
##1
##2
##100
##()
##{}
##(‘ok‘, ‘ok‘)
总结示范

 

闭包、装饰器

原文:https://www.cnblogs.com/ybxw/p/12551607.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!