Python Decorator


# In this example `beg` wraps `say`. If say_please is True then it

# will change the returned message.

from functools import wraps





def beg(target_function):

    @wraps(target_function)

    def wrapper(*args, **kwargs):

        msg, say_please = target_function(*args, **kwargs)

        if say_please:

            return "{} {}".format(msg, "Please! I am poor :(")

        return msg



    return wrapper





@beg

def say(say_please=False):

    msg = "Can you buy me a beer?"

    return msg, say_please





print(say())                 # Can you buy me a beer?

print(say(say_please=True))  # Can you buy me a beer? Please! I am poor :(

Leave a Comment