python简单装饰器_python装饰器的简单示例
这篇文章主要为大家详细介绍了python装饰器的简单示例,具有一定的参考价值,可以用来参考一下。
对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!
装饰器的语法以@开头,接着是装饰器函数的名字、可选参数。
紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数,如下:
@decorator(dec_opt_args)
def func(func_args):
....
其实总体说起来,装饰器其实也就是一个函数,一个用来包装函数的函数,装饰器在函数声明完成的时候被调用,调用之后声明的函数被换成一个被装饰器装饰过后的函数。
如:
# @param python基础 之 装饰器详解
# @author 512笔记|www.512pic.com
def deco(func):
...
return func
@deco
def foo():
print 'foo'
#-----------------------------------
#等价如下:
def deco(func):
...
return func
def foo():
print 'foo'
foo = deco(foo)
如下例子:
def deco1(func):
print 'ok'
return func
@deco1
def foo():
print 'foo'
foo()
#输出--------------
#ok
#foo
#------------------
# End www_512pic_com
如果不使用装饰器,则可如下:
# @param python基础 之 装饰器详解
# @author 512笔记|www.512pic.com
def deco1(func):
print 'ok'
return func
def foo():
print 'foo'
print foo #
foo = deco1(foo)
foo()
#输出--------------
#ok
#foo
#------------------
# End www_512pic_com
两者对比下,可发现使用装饰器是那么简便、灵活。特别是在企业级的开发上。
同时也可以多个装饰器重叠使用:
# @param python基础 之 装饰器详解
# @author 512笔记|www.512pic.com
def deco1(func):
print 'deco1'
return func
def deco2(func):
print 'deco2'
return func
@deco1
@deco2
def foo():
print 'foo'
foo()
#输出如下:-----------
#deco2
#deco1
#foo
#---------------------
# End www_512pic_com
等效于:
# @param python基础 之 装饰器详解
# @author 512笔记|www.512pic.com
@deco1
@deco2
def foo(arg):pass
-----------与下等效----------
foo = deco1(deco2(foo()))
# End www_512pic_com
二、有参、无参的装饰器
上面的例子基本上都是有参数的,无参数更为简单。
1、无参
@deco1
@deco2
def foo(arg):pass
---------------------
foo = deco1(deco2(foo()))
2、有参
@deco1(deco_arg)
@deco2
def foo(arg):pass
---------------------
foo = deco1(deco_arg)(deco2(foo()))
返回以函数作为参数的装饰器
三、用处
1、引用日志
2、增加计时逻辑来检测性能
3、给函数加入事务的能力
四、实例
# @param python基础 之 装饰器详解
# @author 512笔记|www.512pic.com
from time import ctime,sleep
def deco(func):
def decoIn():
print '[%s]:%s called' %(ctime(),func.__name__)
return func
return decoIn
@deco
def foo():
pass
foo()
sleep(4)
for i in range(2):
sleep(1)
foo()
#输出如下:--------
#[Fri Jul 05 10:45:04 2013]:foo called
#[Fri Jul 05 10:45:09 2013]:foo called
#[Fri Jul 05 10:45:10 2013]:foo called
#------------------
# End www_512pic_com
注:关于python装饰器的简单示例的内容就先介绍到这里,更多相关文章的可以留意512笔记的其他信息。
关键词:装饰器
python简单装饰器_python装饰器的简单示例相关推荐
- 学习python装饰器_Python装饰器学习(九步入门)
这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次 ...
- python 运行时间 装饰器_python 装饰器统计某个函数的运行时间
import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...
- python重写和装饰器_python装饰器
python装饰器的本质,就是闭包! 我们一般谈Python的闭包,都是指普通的入参,而谈装饰器的时候,入参一定有函数!闭包和装饰器,返回的都是函数.函数是代码的最小封装单位,装饰器作用于函数,它不影 ...
- python两层装饰器_python装饰器
Python的装饰器的英文名叫Decorator,基本上适用的场景就是"装修":不涉及主流程业务,用于鉴权.审计等副业. 1.函数 在python中,函数通过def关键字.函数名和 ...
- python实现装饰器_python装饰器的实现
说起装饰器我们可能已经很熟悉了(不了解的可以查看python基础学习--装饰器),随手就可以写一个简单的装饰器 def decorator(func): def inner(*args, **kwar ...
- python 开闭原则_Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
本文实例讲述了Python 装饰器@,对函数进行功能扩展操作.分享给大家供大家参考,具体如下: 装饰器可以对原函数进行功能扩展,但还不需要修改原函数的内容(开闭原则),也不需要修改原函数的调用. de ...
- 装饰器python的通俗理解_Python装饰器的通俗理解
在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略有领悟,我希望以下的内容会对你有帮助,我也努力通过通俗的方式使得对Py ...
- python解读器_Python装饰器完全解读
Python Python开发 Python语言 Python装饰器完全解读 1 引言 装饰器(Decorators)可能是Python中最难掌握的概念之一了,也是最具Pythonic特色的技巧,深入 ...
- python无参数装饰器_Python装饰器(不带参数)
示例 直接给出示例,普通装饰器(即装饰器函数本身不带参数,或参数为实际被包裹的函数): import time from functools import wraps def timethis(fun ...
- python修饰器_python修饰器
转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 文章先由stackoverflow上面的一个问题引起吧,如果使 ...
最新文章
- 【UVA】10152 ShellSort (几只乌龟的故事)
- android 二次点击退出,android返回二次退出
- hdu-1207(规律推导)
- Linux 命令集合
- 60岁有30万资金,如何存款最安全?
- leetcode —— 1217. 玩筹码
- excel和mysql php_php将mysql数据库和Excel相互导入和导出的方法
- java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
- JAVA线程的应用实例(运用2种中断线程方式,基于实现进度条为例)
- 万字长文!搞定逃不脱的 DNS 面试题
- python中用箱线图分析异常值_[宜配屋]听图阁
- Java主线程等待所有子线程执行完毕再执行解决办法集
- 在 CentOS 上安装和配置 NFS 4.0
- Java适合初学者的编写软件分享
- 【ArchSummit干货分享】个推大数据金融风控算法实践
- 石头科技的“现实”和“远方”
- 加权平均数的例子_加权平均数怎么算?举个具体的例子
- lzg_ad:XPE系统管理工具组件
- 百度快照劫持的表现及解决方法
- 离散数学与计算机专业的关系是什么,离散数学跟计算机专业有什么关系?