wrapper
оборачивает функцию, означая, что она будет «действовать на свое место».
Поэтому, если вы вызовете print_name("zeinab")
, оболочка будет вызываться вместо wrapper("zeinab")
.
wrapper
не принимает аргумент "zeinab"
, потому что вы не задали ему никаких параметров.
def my_upper_case(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs).upper()
return wrapper
@my_upper_case
def print_name(name):
return name
if __name__ == "__main__":
print(print_name("zeinab"))