How to make function decorators with user input

Question:

I made function that wraps text with 3 decorators.But i have issue with user input.
How to make it?

def bold(fn):
    def wrapper():
        return "<b>" + fn() + "</b>"
    return wrapper

def italic(fn):
    def wrapper():
        return "<i>" + fn() + "</i>"
    return wrapper

def underline(fn):
    def wrapper():
        return "<u>" + fn() + "</u>"
    return wrapper


@bold
@italic
@underline
def get_text():
    return "hello world"

print(get_text())
Asked By: combichirst

||

Answers:

You should pass the parameter to the wrapper function too.

def bold(fn):
    def wrapper(text):
        return "<b>" + fn(text) + "</b>"
    return wrapper

def italic(fn):
    def wrapper(text):
        return "<i>" + fn(text) + "</i>"
    return wrapper

def underline(fn):
    def wrapper(text):
        return "<u>" + fn(text) + "</u>"
    return wrapper


@bold
@italic
@underline
def get_text(text):
    return text

usrInput = input()
print(get_text(usrInput))
Answered By: Phúc Đỗ Vương
def make_bold(function):
    def wrapper():
        return "<b>" + function() + "</b>"
    return wrapper

def make_emphasis(function):
    def wrapper():
        return "<em>" + function() + "</em>"
    return wrapper

def make_underlined(function):
    def wrapper():
        return "<u>" + function() + "</u>"
    return wrapper

@app.route("/bye")
@make_bold
@make_italic
@make_underline
def bye():
    return "<p>Bye!</p>"
Answered By: Osama Arshad
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.