TypeError: 'NoneType' object is not callable in decorators

TypeError: 'NoneType' object is not callable in decorators

#decorators in python
users={"ravneet":"elitebook","singh":"punjab"}

def login_required(func):
    def wrapper(username, password, *args, **kwargs):
        if username in users and users[username]==password:
            func(*args,**kwargs)
        else:
            print("not authenticated")
        return wrapper

@login_required
def add(a,b):
    print("a+b: ",a+b)

add("ravneet","elitebook",2,3)

您的 return wrapper 有一个额外的缩进,这使得 login_required() return None。固定在下方(和 repl.it link):

def login_required(func):

    def wrapper(username, password, *args, **kwargs):

        if username in users and users[username]==password:

            func(*args,**kwargs)
        else:

            print("not authenticated")
    return wrapper

@login_required    
def add(a,b):    
    print("a+b: ",a+b)

add("ravneet","elitebook",2,3)