gpt4 book ai didi

python - python中的简单装饰器功能不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:46:55 25 4
gpt4 key购买 nike

我正在尝试在 pycharm 中执行以下代码。

def auth_login(func):
def wrapper(*args, **kwargs):
print("Authenticating......")
func(*args, **kwargs)
return wrapper()


@auth_login
def login(username, password):
print("Successfully logged in:",username)

login('setu', 'setu')

看起来很简单,但我收到以下错误:输出:

>    Traceback (most recent call last):
> Authenticating......
> File "C:/Users/611834094/PycharmProjects/PractiseProject/decorators/example3.py",
> line 10, in <module>
> @auth_login
> File "C:/Users/611834094/PycharmProjects/PractiseProject/decorators/example3.py",
> line 7, in auth_login
> return wrapper()
> File "C:/Users/611834094/PycharmProjects/PractiseProject/decorators/example3.py",
> line 5, in wrapper
> func(*args, **kwargs)
> TypeError: login() missing 2 required positional arguments: 'username' and 'password'
>
> Process finished with exit code 1

最佳答案

您正在返回包装器的值。而只是返回函数。

def auth_login(func):
def wrapper(*args, **kwargs):
print("Authenticating......")
func(*args, **kwargs)
return wrapper # Here was the issue.


@auth_login
def login(username, password):
print("Successfully logged in:",username)

login('setu', 'setu')

关于python - python中的简单装饰器功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49426422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com