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)
#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)