9-2为被装饰的函数保存元数据
2017-03-24 09:52
288 查看
# -*- coding:utf-8 -*- '''f.__name__ f.__doc__ f.__module__ 所属模块 f.__defaults__ 默认参数 f.__closure__ 闭包''' import functools def f(a, b = 1, c = []): '''func for print abc''' print a, b, c return def f_(): a = 2 b = 10 c = 100 return lambda k: a ** k + b def mydecorator(func): @functools.wraps(func) # 新添加的一行 def wrapper(*args, **kargs): '''wrapper function''' print 'IN wrapper' func(*args, **kargs) return wrapper @mydecorator def example(): '''example function''' print 'IN example' # 如果现在调用 print example.__name__ print example.__doc__将会返回wrapper的信息 # 使用标准库 functools 中的装饰器 wraps 装饰内部包裹函数 if __name__ == '__main__': print f.__name__ print f.__doc__ print f.__module__ print f.__defaults__ print f.__closure__ f.__defaults__[1].append('abc') f(100) print f.__defaults__ #所以在默认参数里面不要使用可变对象 p = f print p.__name__ print '*' * 30 print f_.__closure__ g = f_() print g.__closure__ c = g.__closure__[2] # 现在运行程序会产生‘IndexError: tuple index out of range’错误 # 只有匿名函数中使用到的 a, b 在闭包里 print c.cell_contents print '*' * 30 print g(10) # 原来 ** 运算符是次数
相关文章推荐
- python 9-2 如何为被装饰的函数保存元数据,使用标准库functools中的装饰器wraps 装饰内部包裹函数
- 编写装饰器并保存函数的元数据,代码简洁之道
- 【笔记】如何为被装饰的函数保存元数据
- python-为被装饰的函数保存元数据-26
- python如何为被装饰的函数保留元数据
- python_为被装饰的函数保留元数据
- ASPX保存远程图片到本地的两种方法的函数
- 如何动态保存不同类的对象的成员函数的地址?--解决(续)
- 基于MFC的截屏和以位图保存的函数
- asp 读取文件和保存文件函数代码
- Python中函数的装饰器
- 保存的各函数
- SharedObject内置的Flex保存信息的函数
- 函数和方法装饰漫谈(Function decorator)
- php 远程图片保存到本地的函数类
- asp 读取文件和保存文件函数代码
- asp通用采集函数冗余版可以保存文件到本地
- 保存ini文件和基本控件的保存函数(序:列表和树的保存)
- 如何动态保存不同类的对象的成员函数的地址?--解决
- asp通用采集函数冗余版可以保存文件到本地