分享七个好用的装饰器,方便大家使用。1.dispatchPython天生就支持多态,但是使用dispatch可以让你的代码更易读。安装:pipinstallmultipledispatch用法:>>>frommultipledispatchimportdispatch>>>@dispatch(int,int)...defadd(x,y):...returnx+y>>>@dispatch(object,object)...defadd(x,y):...return"%s+%s"%(x,y)>>>add(1,2)3>>>add(1,'hello')'1+hello'2.clickclick可以轻松让你实现命令行工具。安装:pipinstallclick使用:demo2.py:importclick@click.command()@click.option('--count',default=1,help='Numberofgreetings.')@click.option('--name',prompt='你的名字',help='要问候的人。')defhello(count,name):"""一个简单的程序,总共问候NAMECOUNT次。"""forxinrange(count):click.echo(f"Hello{name}!")if__name__=='__main__':hello()运行结果:?pythondemo2.py--count=3--name=joihHellojoih!Hellojoih!你好joih!?pythondemo2.py--count=3你的名字:somenzz你好somenzz!你好somenzz!你好somenzz!3、Celery的分布式任务队列非Celery莫属。fromceleryimportCeleryapp=Celery('tasks',broker='pyamqp://guest@localhost//')@app.taskdefadd(x,y):returnx+y4,deprecated相信大家都在用otherI在package中遇到过,老版本功能要下线的时候可以使用这个装饰器。安装:pipinstallDeprecated使用:demo4.pyfromdeprecatedimportdeprecated@deprecated("Thisfunctionisdeprecated,pleasedonotuseit")deffunc1():passfunc1()运行效果如下:?pythondemo4.pydemo4.py:6:弃用警告:调用已弃用的函数(或静态方法)func1。(此函数已弃用,请勿使用)func1()5.deco.concurrent安装:pipinstalldeco使用DECO就像查找或创建两个函数一样简单。我们可以使用@concurrent修饰需要并行运行的函数,使用@synchronized修饰调用并行函数的函数。例如:fromdecoimportconcurrent,synchronized@concurrent#我们为并发函数添加这个defprocess_url(url,data):#Doessomeworkwhichtakesawhilereturnresult@synchronized#我们为调用concurrentfunctiondefprocess_data_set(data):results={}forurlinurls:urlreturnnurl结果数据,process_url(6.cachetools缓存工具安装:pipinstallcachetools用法:fromcachetoolsimportcached,LRUCache,TTLCache#加速计算动态编程的斐波那契数@cached(cache={})deffib(n):returnn2ifelnse
