python2.7装饰器使用_python装饰器使用方法实例

什么是python的装饰器?

网络上的定义:

装饰器就是一函数,用来包装函数的函数,用来修饰原函数,将其重新赋值给原来的标识符,并永久的丧失原函数的引用。

最能说明装饰器的例子如下:

#-*- coding: utf-8 -*-

import time

def foo():

print 'in foo()'

# 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法

def timeit(func):

# 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装

def wrapper():

start = time.clock()

func()

end =time.clock()

print 'used:', end - start

# 将包装后的函数返回

return wrapper

foo = timeit(foo)

foo()

python中提供了一个@符号的语法糖,用来简化上面的代码,他们的作用一样

import time

def timeit(func):

def wrapper():

start = time.clock()

func()

end =time.clock()

print 'used:', end - start

return wrapper

@timeit

def foo():

print 'in foo()'

foo()

这2段的代码是一样的,等价的。

内置的3个装饰器,他们分别是staticmethod,classmethod,property,他们的作用是分别把类中定义的方法变成静态方法,类方法和属性,如下:

class rabbit(object):

def __init__(self, name):

self._name = name

@staticmethod

def newrabbit(name):

return rabbit(name)

@classmethod

def newrabbit2(cls):

return rabbit('')

@property

def name(self):

return self._name

装饰器的嵌套:

就一个规律:嵌套的顺序和代码的顺序是相反的。

也是来看一个例子:

#!/usr/bin/python

# -*- coding: utf-8 -*-

def makebold(fn):

def wrapped():

return "" + fn() + ""

return wrapped

def makeitalic(fn):

def wrapped():

return "" + fn() + ""

return wrapped

@makebold

@makeitalic

def hello():

return "hello world"

print hello()

返回的结果是:

hello world

为什么是这个结果呢?

1.首先hello函数经过makeitalic 函数的装饰,变成了这个结果hello world

2.然后再经过makebold函数的装饰,变成了hello world,这个理解起来很简单。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值