Python 是否可以在运行时获取被调用函数的值?

Python 是否可以在运行时获取被调用函数的值?,python,Python,例如: def get_val(n): return n def check_args(func): # gets the arguments of a function at runtime get_val(1) get_val(2) 注意:这可能是一种不好的做法,但我想进一步了解python的工作原理。python修饰符允许您以最小的工作量完成这项工作: import functools def check_args(func): @functools.wr

例如:

def get_val(n):
    return n

def check_args(func):
    # gets the arguments of a function at runtime

get_val(1) 
get_val(2)

注意:这可能是一种不好的做法,但我想进一步了解python的工作原理。

python修饰符允许您以最小的工作量完成这项工作:

import functools

def check_args(func):
    @functools.wraps(func)  # Copies documentation and other stuff from wrapped func to wrapper, making it look as much like the wrapped func as possible
    def wrapper(*args, **kwargs):
        # do stuff to inspect arguments
        return func(*args, **kwargs)
    return wrapper

@check_args
def get_val(n):
    return n
使用
@check_args
相当于完全定义
get_val
,然后执行以下操作:

get_val = check_args(get_val)

这意味着
get_val
被替换为
wrapper
函数,该函数现在首先被调用,可以执行检查,然后委托给wrapped函数(在本例中,
get_args
)。显然,对于一个函数来说,这是毫无意义的(你可以把checking放在
get_val
),但是如果你想检查其他函数,在它们的定义前面加上
@check_args
是一行代码,不会与其余的代码混在一起,所以你只想在调用
get\u val
时自动调用
check\u args
,而不需要调用方去做吗?也许用一个装饰器来包装它吧!