hey developer I am just exploring decorator so there I got some error missing 1 required positional argument. but when I driving code in calling function i am providing particular value first look my code.
def main(func):
def wrapper(*args, **kwargs):
r, pi = func()
return pi * r
return wrapper
@main
def area(r, pi=3.14):
return r, pi
#drive
print(area(r=10))
CodePudding user response:
You need to pass the wrapper arguments to func()
:
r, pi = func(*args, **kwargs)
Without that, it's calling area()
with no arguments, when area()
expects at least one argument.
CodePudding user response:
You are missing the r
argument value in line 3: r, pi = func()
:
Pass *args, **kwargs
in the func.
def main(func):
def wrapper(*args, **kwargs):
r, pi = func(*args, **kwargs) ## here
return pi * r
return wrapper
@main
def area(r, pi=3.14):
return r, pi
#drive
print(area(10))
This will fix your issue
output: 31.400000000000002