Python装饰器语法糖

yipeiwu_com6年前Python基础

Python装饰器语法糖代码示例

####装饰器的固定格式
##普通版本
def timer(func):
  def inner(*args,**kwargs):
    '''执行函数之前要做的'''
    ret = func(*args,**kwargs)
    '''执行函数之后要做的'''
    return ret
  return inner
##wraps版本
from functools import wraps
def deco(func):
  @wraps(func) #加在最内层函数正上方
  def wrapper(*args,**kwargs):
    return func(*args,**kwargs)
  return wrapper
####带参数的装饰器
def outer(flag):
  def timer(func):
    def inner(*args,**kwargs):
      if flag:
        print('''执行函数之前要做的''')
      ret = func(*args,**kwargs)
      if flag:
        print('''执行函数之后要做的''')
      return ret
    return inner
  return timer
@outer(True)
def func():
  return '返回值'
x=func()
print(x)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对【听图阁-专注于Python设计】的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

Django中使用MySQL5.5的教程

Django中使用MySQL5.5的教程

“MySQL是一个功能齐全的关系数据库管理系统(RDBMS),可以与Oracle DB和Microsoft的SQL Server竞争。MySQL由瑞典公司MySQL AB赞助,该公司由O...

Python编程实现二叉树及七种遍历方法详解

Python编程实现二叉树及七种遍历方法详解

本文实例讲述了Python实现二叉树及遍历方法。分享给大家供大家参考,具体如下: 介绍: 树是数据结构中非常重要的一种,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉...

Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式

Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式

CGAN的全拼是Conditional Generative Adversarial Networks,条件生成对抗网络,在初始GAN的基础上增加了图片的相应信息。 这里用传统的卷积方式...

Python利用multiprocessing实现最简单的分布式作业调度系统实例

介绍 Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个机器的多个...

浅谈Pandas:Series和DataFrame间的算术元素

如下所示: import numpy as np import pandas as pd from pandas import Series,DataFrame 一、Series与...