为了账号安全,请及时绑定邮箱和手机立即绑定

python学习9-装饰器和类型提升

标签:
Python

一装饰器
参数是一个函数,返回值是一个函数,就可以作为装饰器.
常见的使用场景:监控、日志、缓存、路由、权限、参数检查、审计
1、类似如下:

import functools

def fn1(fn):

    @functools.wraps(fn)

    def wrap(*arg,**kw):

        print('start')

        ret = fn(*arg,**kw)

        print('stop')

        return ret

    return wrap

@fn1

def fn2(x):

    print(x)

2、带参数的装饰器类似如下:

def logger(s,p=lambda name,t:print('call {} took {}'.format(name,t))):

    def _logger(fn):

        @functools.wraps(fn)

        def wrap(*arg,**kw):

            start = datetime.datetime.now()

            ret = fn(*arg,**kw)

            end = datetime.datetime.now()

            if (end - start).total_seconds() > s:

                p(fn.__name__,end-start)

            return ret

        return wrap

    return _logger


@logger(2)

def sleep(x):

    time.sleep(x)



二、类型提升
一个变量的类型,是在运行时决定的
一个变量的类型在应用的生命周期中是可变的
1、->int 只是注释,不检查,p3加入

def add(x,y)->int:

    return x + y


三、常用


import functools

newadd = functools.partial(add,y=5) #设定函数默认值

@functools.lru_cache() #按参数缓存,默认为128条,按照最近最少使用替换,满足不需要过期、清除、分布式,

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消