• python 装饰器 传递参数简单案例


    def debug(func):

         def wrapper(*args, **kwargs): # 指定宇宙无敌参数

        print "[DEBUG]: enter {}()".format(func.__name__)

        print 'Prepare and say...',

             return func(*args, **kwargs)

     return wrapper # 返回

    @debug

    def say(something):

      print "hello {}!".format(something)

    Python提供了可变参数*args和关键字参数**kwargs,有了这两个参数,装饰器就可以用于任意目标函数了。

    参考:https://www.cnblogs.com/cicaday/p/python-decorator.html

    我自己的例子

    #!/usr/bin/env python
    #todo use decorator to decorate the function that need debug and its function name
    def debug(f):
      def wrapper(*args,**kwargs):
        print("this is the name of function: {0}".format(f.__name__))
        if kwargs['username'] != 'admin':
          raise Exception('you need to be admin') 
        f(*args,**kwargs) #装饰器内部函数的参数等于被修饰函数的参数
      return wrapper


    @debug
    def say_hi(sth,username):

      print("this is position args {0}".format(sth))
      print("i am the master: {0}".format(username))
    if __name__ == '__main__':
      say_hi('first args',username='admin')
      say_hi('first args',username='haha')

    *args  -- 相当于 列表   **kwargs -- 相当于字典

  • 相关阅读:
    每日总结
    团队冲刺9
    团队冲刺8
    团队冲刺7
    团队冲刺6
    团队冲刺5
    团队冲刺4
    团对冲刺3
    团队冲刺2
    每日博客
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/9049764.html
Copyright © 2020-2023  润新知