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 出来。
💡 思路提示
点开看提示
return a, b, c等价于return (a, b, c)- 调用时
x, y, z = func()可以一次性解包 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 不会真的存起来。