推理基础设施 · Python1.3 返回值与多返回值
01
函数与代码组织 · 3 / 6

1.3 返回值与多返回值

💡 推理函数经常需要一次返回多个东西:生成的文本 + token 数 + 耗时

1.3 返回值与多返回值

多返回值其实就是返回一个 tuple

def measure():
    return 42, 0.123, "ok"   # Python 自动打包成 tuple

a, b, c = measure()          # 解包(unpack)
print(type(measure()))        # <class 'tuple'>

为什么推理代码常见多返回值

跑完一次推理,你通常想同时知道:

  • 生成的文本(str)
  • 用了多少 token(int)
  • 推理耗时(float)
  • 是否出错(bool / 异常)

用一个 tuple 把它们一起带回来,调用方按位置取,比每样单独 return 干净得多。

✍️ 练习

写一个函数 fake_infer(prompt),模拟一次推理并返回一个 tuple: (生成的文本, 消耗的 token 数, 耗时毫秒)

要求:

  • 文本 = f"[fake] {prompt}"
  • token 数 = len(prompt.split())(按空格分词)
  • 耗时随便写个数字,比如 23.5

调用时用三个变量接收,把三个值都 print 出来。

💡 思路提示

点开看提示
  1. return a, b, c 等价于 return (a, b, c)
  2. 调用时 x, y, z = func() 可以一次性解包
  3. len("a b c".split()) == 3

✅ 参考解法

写不出来再打开
def fake_infer(prompt):
    text = f"[fake] {prompt}"
    tokens = len(prompt.split())
    latency_ms = 23.5
    return text, tokens, latency_ms

text, tokens, latency = fake_infer("hello world how are you")
print(text, tokens, latency)

🔍 进阶思考

如果调用方只想要第一个返回值,要怎么写?

text, _, _ = fake_infer("hi")

下划线 _ 是惯例:“我不要这个”。Python 不会真的存起来。