如何在Python中应用装饰器

  介绍

这期内容当中小编将会给大家带来有关如何在Python中应用装饰器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1。运行业务函数<代码>有趣()同时打印运行花费的时间

import 时间   def  12月(有趣的):   时间=start 才能;time.time ()   有趣的才能()   最终获得才能=,time.time ()   a =,才能最终获得成功,开始   ,print    def  myfun ():   print 才能;& # 39;run  myfunction # 39;   12月(myfun)

运行结果

(virt2) root@ubuntu:/home/z # python z。py myfunction
运行0.00108599662781

但是每次运行myfun都要调用12月、下面作下变动解决这个问题

2。

 import 时间
  def  12月(有趣的):
  def 才能包装():
  ,,,start =, time.time ()
  ,,,有趣的()
  ,,,最终获得=,time.time ()
  ,,,a =,最终获得成功,开始
  ,,print 
  return 才能包装
  def  myfun ():
  print 才能;& # 39;run  myfunction # 39;
  myfun=12月(myfun)
  myfun () 

运行结果:

(virt2) root@ubuntu:/home/z # python z。py myfunction
运行0.00122618675232

这个装饰器12月就实现了,并且不影响函数myfun功能

3。装饰器@符

import 时间   def  12月(有趣的):   def 才能包装():   ,,,start =, time.time ()   ,,,有趣的()   ,,,最终获得=,time.time ()   ,,,a =,最终获得成功,开始   ,,print    return 才能包装   @dec   def  myfun ():   print 才能;& # 39;run  myfunction # 39;   myfun ()

结果

(virt2) root@ubuntu:/home/z # python z。myfunction py
运行0.000470876693726

使用了@后,就不用给myfun重新赋值了

<代码> @dec> myfun=12月(myfun)

例子:

def 水平(leveel):   def 才能调试(函数):   ,,,def 包装器(* args,, * * kwargs):   ,,,,,印刷(“(调试):enter  {} ()“.format (func.__name__) leveel)   ,,,,,return  func (* args,, * * kwargs)   ,,,return 包装   return 才能调试   @level (leveel=& # 39; debuging& # 39;)   def (东西)说:   print 才能;(“hello  {} !“.format(东西))   说(123)

输出:

(& # 39;(调试):进入说()& # 39;,& # 39;debuging& # 39;) 123年
你好!

 & # 39; & # 39; & # 39;
  class 日志(对象):
  def 才能;__init__(自我,,函数):
  ,,,self.func =函数
  def 才能;__call__(自我,,* args,, * * kwargs):
  ,,,print (“(调试):enter  function  {func} ()“.format (
  ,,,,,func=self.func.__name__))
  ,,,return  self.func (* args,, * * kwargs)
  @logging
  def (东西)说:
  print 才能;(“say  {} !“.format(东西))
  & # 39;& # 39;& # 39;
  class 日志(对象):
  def 才能;__init__(自我,,水平=& # 39;信息# 39;):
  ,,,self.level =,水平
  def 才能;__call__(自我,,func):, #,接受函数
  ,,,def 包装器(* args,, * * kwargs):
  ,,,,,print (“[{水平}]:,enter  function  {func} ()“.format (
  ,,,,,,,=self.level水平,
  ,,,,,,,func=func.__name__))
  ,,,,,func (* args,, * * kwargs)
  ,,,return  wrapper  #返回函数
  @logging(水平=& # 39;信息# 39;)
  def (东西)说:
  print 才能;(“say  {} !“.format(东西))
  说(123)

输出:

[信息]:输入函数()
说123 !

python有哪些常用库

python常用的库:1. requesuts; 2. scrapy; 3.枕头;4.扭曲;5. numpy; 6. matplotlib; 7. pygama; 8。ipyhton等。

上述就是小编为大家分享的如何在Python中应用装饰器了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

如何在Python中应用装饰器