装饰器获取内部函数的变量值,这个方法简直太有爱了!
2012-07-09 15:02
309 查看
我的需求是这样的,我有很多个函数,其中大部分函数有一个参数叫arg,并且默认值是True,同时可能会有一些别的不确定参数也就是:
我想要写一个装饰器,根据每个函数中的arg的值来做一些事情,但是上述这种情况的话想要准确获取到我调用test这个方法时arg的值就很困难。
最后在三碗同学的帮助下,找到了一个方法:
整理后我的代码是这样:
感谢,鞠躬! 〈(_ _)〉
def test(x,y,z,arg=True,a=0,b):
我想要写一个装饰器,根据每个函数中的arg的值来做一些事情,但是上述这种情况的话想要准确获取到我调用test这个方法时arg的值就很困难。
最后在三碗同学的帮助下,找到了一个方法:
inspect.getcallargs
整理后我的代码是这样:
# -*- coding: utf-8 -*- from inspect import getcallargs def smart_do(func): """每次都需要判断arg来看是否做哪些事情好烦有没有 """ def inner(*args, **kwargs): all_args = getcallargs(func, *args, **kwargs) arg = all_args.get('update') do something..... return func(*args, **kwargs) return inner @smart_do def a(a,b,arg=True): do something...
感谢,鞠躬! 〈(_ _)〉
相关文章推荐
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。
- 获取函数内部值的两种方法
- [c语言]通过指针获取函数内部变量值
- Oracle内部latch获取函数简介
- Python获取当前函数名称方法实例分享
- Delphi函数详解:全局函数,内部函数,类的成员函数,类的静态方法
- php数组函数序列之array_values() 获取数组元素值的函数与方法
- 获取windows未导出函数地址标准方法
- 获取函数参数arguments的方法
- C语言中strand() rand() time()函数的简单介绍及获取随机数的方法
- 【javascript笔记】 函数内部属性以及方法
- C语言 未曾知晓 获取函数地址,利用这个地址调用函数
- java进阶之反射:反射基础之如何获取一个类以及如何获取这个类的所有属性和方法(1)
- 对象虚函数的获取方法
- php获取字符串的编码格式的方法(函数)
- Yii 中如何获取当前controller名称和controller内部action方法Id
- JS中获取函数调用链所有参数的方法
- Oracle内部latch获取函数简介
- thinkphp 获取当前的方法名,类名,函数名
- php数组函数序列之array_values() 获取数组元素值的函数与方法