前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 装饰器工作原理解析

Python 装饰器工作原理解析

作者头像
py3study
发布2020-01-09 00:18:37
5070
发布2020-01-09 00:18:37
举报
文章被收录于专栏:python3
代码语言:javascript
复制
#!/usr/bin/env python
#coding:utf-8


"""
装饰器实例拆解
"""


def login00(func):
    print('00请通过验证用户!')
    return func

def tv00(name):
    print('00你的用户是:%s' %name)


# 装饰器的精简工作原理解释:

tv = login00(tv00) # 返回tv函数的对象,赋值给tv

tv('yh00') # 调用执行tv函数


# 魔方版装饰器

def login01(func):
    print('01请通过验证用户!')
    return func

@login01
def tv01(name):
    print('01你的用户是:%s' %name)

tv01('yh01')

# 存在一个问题,调用执行tv函数前,会执行login函数的print语句


# 改进版装饰器

def login02(func):
    def inner(arg):
        print('02请通过验证用户!')
        func(arg)
    return inner

def tv02(name):
    print('02你的用户是:%s' %name)

tv02 = login02(tv02) # 返回inner函数的对象,赋值给tv02;并把 tv02函数的对象 传递给 login02函数的形参 func

tv02('yh02') # 调用执行tv02函数,把实参:yh02 传给 形参arg;执行tv02('yh02')

# 改进 魔方版 版装饰器

def login03(func):
    def inner(arg):
        print('03请通过验证用户!')
        func(arg)
    return inner

@login03
def tv03(name):
    print('03你的用户是:%s' %name)

tv03('yh03')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档