码迷,mamicode.com
首页 > 编程语言 > 详细

关于python装饰器

时间:2016-12-28 18:25:00      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:arguments   变量   ima   nts   color   ack   装饰器   outer   log   

关于python装饰器,不是系统的介绍,只是说一下某些问题

1 首先了解变量作用于非常重要

技术分享

2 其次要了解闭包

1 def logger(func):
2      def inner(*args, **kwargs):
3          print "Arguments were: %s, %s" % (args, kwargs)
4          return func(*args, **kwargs)
5      return inner

在这里面,func是被装饰的函数,*args, **kwargs是 func要接收的参数

3 装饰器

@logger
 def foo1(x, y=1):
     return x * y
@logger
 def foo2():
     return 2
foo1(5, 4)
#Arguments were: (5, 4), {}
#20
foo1(1)
#Arguments were: (1,), {}
#1
foo2()
#Arguments were: (), {}
#2

3.1装饰器中传参数

原理:多一层闭包

def outer(arg):  
    def wraper(func):  
        def inner():  
            print("before %s called [%s]." % (func.__name__, arg))  
            func()  
            print("  after %s called [%s]." % (func.__name__, arg))  
        return inner
    return wraper

然后装饰器可以写成

@outer("mytest")  
def foo():  
    print(" foo() called.")  
 
foo()  

 

关于python装饰器

标签:arguments   变量   ima   nts   color   ack   装饰器   outer   log   

原文地址:http://www.cnblogs.com/fuzzier/p/6229958.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!