装饰器获取内部函数的变量值,这个方法简直太有爱了!

本文介绍了一种利用Python的装饰器和inspect模块来动态获取被装饰函数参数的方法,特别是针对那些具有不定数量参数及默认参数的情况,提供了一个实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的需求是这样的,我有很多个函数,其中大部分函数有一个参数叫arg,并且默认值是True,同时可能会有一些别的不确定参数也就是:

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...

感谢,鞠躬!   〈(_ _)〉

 

 

转载于:https://www.cnblogs.com/Phenix_Yang/archive/2012/07/09/2579024.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值