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

如何编写实现数字千位空格分隔的Python装饰器?代码问题求助

千位空格分隔装饰器的修正方案

你的代码存在几个关键问题,以下是具体修正点和修正后的代码:

需要调整的内容

  • 被装饰函数需返回目标数字:原test()函数仅定义了变量b,没有返回值,导致装饰器无法获取要处理的数字,需添加return b。
  • 内层装饰函数需调用原函数:原代码直接格式化函数对象func(f'{func:,}')是错误的,应该调用func()获取原函数返回的数字。
  • 内层函数需返回处理结果:原内层函数two()仅赋值给变量a,没有返回处理后的字符串,导致调用test()得不到输出。
  • (可选)支持带参数的函数:如果需要装饰器适配接收参数的函数,可以让内层函数接受任意参数并传递给原函数。

基础修正版代码

def one(func):
    def two():
        num = func()  # 获取原函数返回的数字
        return f'{num:,}'.replace(',', ' ')  # 格式化并替换逗号为空格
    return two

@one
def test():
    b = 1000
    return b  # 返回需要处理的数字

# 测试调用
print(test())  # 输出: 1 000

支持参数的进阶版代码

如果需要装饰能接收数字参数的函数,可修改为:

def one(func):
    def two(*args, **kwargs):
        num = func(*args, **kwargs)
        return f'{num:,}'.replace(',', ' ')
    return two

@one
def get_formatted_num(num):
    return num

print(get_formatted_num(1000000))  # 输出: 1 000 000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:45:03