# -*- coding: utf-8 -*-
#!/usr/bin/env python
def spamrun(fn):
def sayspam(*args):
print "spam,spam,spam "
fn(*args)
return
return sayspam
@spamrun
def useful(a,b):
print a**2+b**2
useful(3,4)
def myDeco(args):
print("Hello ,I'm Decorator!")
print("args:",args) #处理参数
def _myDeco(func):#处理函数
def __myDeco(*args,**kwargs): #处理函数的参数
print ("function name: %s " % (func.__name__) )
ret = func(*args,**kwargs)
return ret
return __myDeco
return _myDeco
@myDeco("my_name")
def run(a,b):
print("func run start:")
print("---------------")
print("run(%s,%s)" % (a,b))
print("---------------")
print("func run end")
run(1,2)
class myDecorator(object):
def __init__(self, fn):
print "inside myDecorator.__init__()" , fn.__name__
self.fn = fn
def __call__(self,*args):
self.fn(args)
print "inside myDecorator.__call__()" ,args[0],args[1],args[2]
@myDecorator
def aFunction(a=0,b=0,c=0):
print "inside aFunction()"
print "Finished decorating aFunction()"
aFunction(1,2,3)
本文通过三个具体的Python示例介绍了装饰器的基本用法及其如何增强或修改函数行为。首先展示了一个简单的装饰器如何添加额外的功能到目标函数,接着通过更复杂的装饰器实现参数处理和函数调用记录。最后,通过类装饰器进一步拓展了装饰器的应用场景。
368

被折叠的 条评论
为什么被折叠?



