#!/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')Python 装饰器工作原理解析
原创
©著作权归作者所有:来自51CTO博客作者king2004124的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
ChatGPT工作原理解析
自 ChatGPT 发布以来,已经吸引了无数人一探究竟。但 ChatGPT 实际上是如何工作的?尽管它内部实现的细
chatgpt 人工智能 语言模型 数据 调优 -
Spring MVC工作原理解析
SpringMVC工作原理客户端(浏览器)发送请求,直接请求到 DispatcherServletDispatcherServlet 根据请求信息调用 HandlerMapping ,解析请求对应的 Handler解析到对应的 Handler(也就是我们平常说的Controller控制器)后,开始由HandlerAdapter 适配器处理HandlerAdapter 会根据 Handler 来调用真正的处理器开始处理请求,并处理相应的业务逻辑。处理器处理完业务后,会返回一个ModelAndVi
----【SpringMVC】 转发 重定向 springMVC 工作原理 -
转载:Servlet 工作原理解析
Servlet 工作原理解析 Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java
java web.xml 设计模式 Web 初始化
















