python 函数装饰器学习

如果看《Python 核心编程》上的讲解还是不太清楚,我建议看这个链接:

Python装饰器学习         

看完之后,这里有一些总结:

 其实总体说起来,装饰器其实也就是一个**函数**,一个用来**包装函数的函数**,返回一个修改之后的**函数对象**,将其重新赋值原来的标识符,并永久丧失对原始函数对象的访问。


装饰器可以让函数轻装上阵,更重要的是将函数的约束放置于接口处,使意图更加明了,同时又不增加调用者的负担。

下面是我的测试总结

复制代码
def dec(arg):
    def _dec(func):
        """检测一个函数是否拥有文档"""
        if func.__doc__ == None:
            print func.__name__, 'has no doc.'
        else:
            print func.__name__,'great!'
            print arg

        return func
    return _dec

@dec('good')
def foo():
    '''sdfa'''
    print 'haha i have no doc'

foo()

# 以上与下类似
def foo2():
    '''asdafsd'''
    print 'asdfad '

dec('ok')(foo2) # 包装函数
复制代码

还注意一点的是使用内嵌包装函数来确保每次新函数都被调用。

 

Python装饰器学习(九步入门)

 如果看到这一步了,那么就很好理解django 装饰器了:如下:

python 函数装饰器学习_第1张图片

 

这个装饰器就是说,在访问它的时候,如果不是管理员就跳到我设置的url中。

看看它的源码吧:

python 函数装饰器学习_第2张图片

这样就对django装饰器有个很好的理解了。

 

同时,我们也可以自己写装饰器,应用在你的项目中。

你可能感兴趣的:(python 函数装饰器学习)