首页 > 编程语言 > 详细

python装饰器的小细节

时间:2017-09-24 22:54:49      阅读:175      评论:0      收藏:0      [点我收藏+]

以下是我看见python装饰器的一些我不熟悉的特点,所以记录一下

1 装饰器的特性

  1.1 可以吧被装饰的函数替换成不同的函数  decorate(func)。

  1.2 加载模块时候立即执行。这点很有用

2 闭包的特点

  2.1 inner 能访问 outer 及其祖先函数的命名空间内的变量(局部变量、函数参数)

  2.2 调用 outer 已经反悔了,但是他的命名空间被返回的 inner 对象引用,所以不会被回收

3 functool.wraps(func):

  总结起来就是保存了func的 __name__, __doc__ 等信息,例如:

技术分享
# -*- coding: utf-8 -*-

import functools


def wrap1(func):
    @functools.wraps(func)
    def inner():
        print wrap1
        return func()
    return inner


def wrap2(func):
    def inner():
        print wrap2
        return func()
    return inner


@wrap1
def func1():
    print func1
    return


@wrap2
def func2():
    print func2
    return


if __name__ == __main__:
    print have wrap:  + func1.__name__
    print have not wrap:  + func2.__name__


[output:]
have wrap: func1
have not wrap: inner
View Code

 

python装饰器的小细节

原文:http://www.cnblogs.com/fuzzier/p/7588975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!