01
函数与代码组织 · 1 / 6
1.1 定义和调用函数
💡 推理服务的每个 HTTP handler 本质都是一个函数
1.1 定义和调用函数
为什么先学函数
推理服务(vLLM / TGI / Triton)暴露给客户端的每一个接口,背后都是 Python 函数——接收请求参数、跑模型前向、返回 JSON。你不把“写函数”练扎实,看推理框架源码会寸步难行。
基本语法
def 函数名(参数):
"""文档字符串(docstring): 说明这个函数做什么"""
函数体
return 返回值 # 不写就返回 None
def是关键字,告诉 Python “我要定义一个函数”- 函数命名跟变量一样用
snake_case,比如handle_request、parse_prompt - 函数只有被调用才会执行,光定义不调用等于啥也没发生
示范
def greet(name):
"""返回一句问候语"""
return f"hello, {name}"
print(greet("world")) # hello, world
print(greet) # <function greet at 0x...> 看到的是函数对象本身
注意最后一行——打印的是函数对象,不是函数返回值。
✍️ 练习
写一个函数 model_signature(),它不接受任何参数,返回字符串 "Qwen2.5-7B-Instruct"。
然后调用它并用 print 打印结果。
💡 思路提示
点开看提示
- 函数名后面有一对括号,里面是参数列表。没参数就留空:
def f(): return是把值“交回”给调用者;没return默认是None- 字符串可以用双引号也可以用单引号,效果一样
✅ 参考解法
写不出来再打开
def model_signature():
return "Qwen2.5-7B-Instruct"
print(model_signature())
🔍 进阶思考
想清楚“定义函数” vs “调用函数”的区别。
print(model_signature)打印的是函数对象(<function ...>)print(model_signature())才是打印返回值
为什么这重要? 在推理框架里,“把函数本身传给别人”(比如 sorted(..., key=func))和“把函数的返回值传给别人”是完全不同的两件事。