Python:将函数参数的默认值传递给 *args 或 **kwargs

标签 python python-3.x decorator default-value metaclass

考虑示例:

def decorator(func):
    def wrapper(*args, **kwargs):
        print(args, kwargs)
        func(*args, **kwargs)
    return wrapper

@decorator
def foo(x, y, z=0):
    pass

foo(5, 5)

输出:

(5, 5) {}

为什么不是 (5, 5) {'z': 0}?如何仅使用装饰器(用于函数)或元类(用于类)将函数 foo 的所有默认值传递给 *args**kwargs方法,例如 __init__)?

最佳答案

包装器只是一个普通函数。它无法“访问”包装函数的内部结构。

您将不得不使用内省(introspection)来获取它们。查看相关问题:

How to find out the default values of a particular function's argument in another function in Python?

关于Python:将函数参数的默认值传递给 *args 或 **kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27210551/

相关文章:

python - Tox 总是需要 30 秒才能运行

python - 在 Ubuntu 上安装 GDAL

python - Pandas 没有在 y 轴上显示 timedelta 所需的结果

python - 为什么在 Python 3 中将字节与 str 进行比较失败?

python - 如果新文件不存在则写入新文件,如果存在则追加到文件

Python:使用装饰器更改类类型并保留其方法

python - Pandas nunique() 仅用于分类列,否则为空?

typescript - lodash 的 _.memoize 与 typescript 方法

python - 修改django装饰器函数,Permissionn_required

python - 如何在Python中控制进程环境变量?