Python 规则:带默认值的参数必须放在不带默认值的后面
python
# 需求:查询新闻 -> 分页, skip: 跳过的记录数, limit: 返回的记录数 10
@app.get("/news/news_list")
async def get_news_list(
skip: int = 0,
limit: int # 错误示例
):
return {"skip": skip, "limit": limit}
上面这段编译代码报错如下:
text
SyntaxError: non-default argument follows default argument
原因:
Python 语法规定:带默认值的参数,必须放在 不带默认值的参数 后面!
正确写法(两种方案)
方案 1:给 limit 也加默认值(最常用、最推荐)
python
@app.get("/news/news_list")
async def get_news_list(
skip: int = 0,
limit: int = 10 # 加个默认值
):
return {"skip": skip, "limit": limit}
方案 2:把无默认值的放前面
python
@app.get("/news/news_list")
async def get_news_list(
limit: int, # 无默认值放前面
skip: int = 0 # 有默认值放后面
):
return {"skip": skip, "limit": limit}
总结
有默认值的参数 → 必须放后面
无默认值的参数 → 必须放前面
FastAPI 接口参数也必须遵守这个 Python 基础语法