Python 装饰函数参数

Python Decorated Function Args

我遇到一个奇怪的问题,有时我的修饰函数接收参数,有时不接收参数。

代码如下:

main.py

@Authenticator.authenticate_admin
def action_snapshot(username, token, payload):    
    .
    .
    .

authenticator.py

class Authenticator:

@staticmethod
def authenticate_admin(func):
    
    @wraps(func)
    def wrapper(*args, **kwargs):

        print(f"ARGS: {args}")

        # ! Execute function
        return func(*args, **kwargs)
        
    return wrapper

因此,如果我尝试像那样调用主函数中的函数:

action_snapshot(username, token, payload)

代码运行良好,我收到了参数。

但是如果我这样称呼它:

action_snapshot(
    username=username, 
    token=token
    payload=payload
)

参数为空。

知道为什么吗?

您仍然会收到它们,但是因为您将它们作为 关键字 参数传递,所以它们在 kwargs 而不是 args