如何将字符串从函数传递到装饰器?

2024-06-13 20:00:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从函数中获取一个输入:

def input_text():
    text = input('Type the text:\n')
    # deco_required = input('Format variable\n')
    return text

然后我需要一个装饰器来格式化上面输入的文本:

def center(input_text):
    def centering(*args,**kwargs):
        t = '<center>{}</center>' .format(kwargs)
        return input_text
    return centering

我认为这是正确的方法:

@centring
input_text()

我得到以下错误:

File "<ipython-input-10-95c74b9f0757>", line 2
    input_text()
             ^ SyntaxError: invalid syntax

这对我查起来没有多大帮助


Tags: the函数textformatinputreturndeftype
1条回答
网友
1楼 · 发布于 2024-06-13 20:00:14

首先,如果没有decorator,您只需将返回值input_text传递给一个定心函数

def centering(s):
    return '<center>{}</center>'.format(s)

centered_text = centering(input_text)

为您执行此操作的函数可能如下所示

def input_centered_text():
    text = input('Temp the text:')
    centered_text = centering(text)
    return centered_text

可以从原始input_text生成input_centered_text的装饰器如下所示

def center(f):
    def _():
        centered_text = f()
        return centered_text
    return _

而且用起来也一样

def input_text():
    text = input('Type the text:\n')
    return text


input_centered_text = center(input_text)

@center
def input_centered_text():  # Note the change in the function name
    text = input('Type the text:\n')
    return text

相关问题 更多 >