You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写支持用户输入的Python文本格式函数装饰器

改造方法

原有代码无法支持用户输入的核心原因是:装饰器的内部包装函数、被装饰的文本获取函数都没有设计参数接收逻辑,只能返回硬编码的固定字符串。改造分两步完成:

  • 给所有装饰器的wrapper函数增加可变参数透传能力,让装饰器可以适配带参数的被装饰函数
  • 修改被装饰函数,使其支持接收外部传入的文本内容,而非返回固定值;调用时将用户输入的内容作为参数传入即可
改造后完整代码
def bold(fn):
    def wrapper(*args, **kwargs):
        return "<b>" + fn(*args, **kwargs) + "</b>"
    return wrapper

def italic(fn):
    def wrapper(*args, **kwargs):
        return "<i>" + fn(*args, **kwargs) + "</i>"
    return wrapper

def underline(fn):
    def wrapper(*args, **kwargs):
        return "<u>" + fn(*args, **kwargs) + "</u>"
    return wrapper


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

# 获取用户输入
user_input = input("请输入需要格式化的文本内容:")
# 传入用户输入并输出格式化结果
print(get_text(user_input))
效果说明
  • 装饰器的执行顺序和原有逻辑完全一致,最终输出的HTML标签嵌套结构为<b><i><u>用户输入的内容</u></i></b>
  • 改造后的装饰器通用性更强,后续不管给被装饰函数传什么参数都能正常透传,不会出现参数不匹配的报错
  • 如果需要支持用户自主选择要叠加的文本格式,可以额外增加格式选择交互逻辑,根据用户选择动态给函数叠加对应装饰器即可

内容的提问来源于stack exchange,提问作者combichirst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:06:12