Python装饰器

"""
author:Popma
title: 装饰器
"""

装饰器实际上就是一个函数

2个特别之处:

1.参数是一个函数

2.返回值也是一个函数

注意:1. 装饰器中定义的函数,要使用args,*kwargs传入,并且在这个函数里执行原始函数也要传入

2. 需要使用functools中的wraps,避免改变传入装饰器的原始函数的name

任务:在所有函数之前打印helloworld

from functools import wraps
def my_log(func):
@wraps(func) #加上run.name就不显示为wapper,不更改原来函数的name了
def wrapper(args,kwargs): #args:a,b, *kwargs:c=a(关键字参数)
print('helloworld')
func(
args)
return wrapper #返回的是一个函数体

@my_log #run = my_log(run)
def run():
print('run')

run.name : run函数的名称

print('run.name:',run.name) # wapper

@my_log #add = my_log(add)
def add(a,b):
print('{} + {} = {}'.format(a,b,a+b))

run()

add(1,2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,...
    chen_000阅读 5,155评论 0 3
  • 一. 有时候我们会有这样需求: 在原有的逻辑前后添加一段逻辑 如: 在增/删/改操作之前检查用户是否登录、某个操...
    元亨利贞o阅读 3,907评论 1 4
  • www.yunxcloud.cn 首先要明白装饰器是用来给函数增加额外功能的。 常用的工具函数 import ti...
    彩色系阅读 4,643评论 0 1
  • Python装饰器的高级用法(翻译) 原文地址https://www.codementor.io/python/t...
    城南道阅读 10,237评论 1 22
  • 一直想写一篇总结一下2016年。茫茫App中,发现简书特别合适我这种多在路上,喜欢随时写随笔,时间又总不够用的人。...
    晓风残月此时阅读 3,658评论 0 0

友情链接更多精彩内容