Python 规则:带默认值的参数必须放在不带默认值的后面

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 基础语法

相关推荐
曲幽3 分钟前
FastAPI 身份验证总踩坑?这份 FastAPI Users “避坑指南”请收好
python·fastapi·web·jwt·oauth2·user·authentication
苏宸啊16 分钟前
IPC管道
linux·c++
bush417 分钟前
嵌入式linux学习记录十,定时器
linux·嵌入式
装不满的克莱因瓶32 分钟前
掌握 RNN 与 LSTM 模型结构
人工智能·python·rnn·深度学习·神经网络·ai·lstm
何以解忧,唯有..43 分钟前
Python包管理工具pip:从入门到精通
开发语言·python·pip
峥无1 小时前
Linux进程信号:从基础概念到内核底层原理
linux·运维·服务器·信号处理
广州灵眸科技有限公司1 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) 开发(编译)方式说明
linux·服务器·单片机·嵌入式硬件·电脑
金銀銅鐵1 小时前
用 Tkinter 实现简单的猜数字游戏
后端·python
copyer_xyf1 小时前
Python 模块与包的导入导出
前端·后端·python
北山有鸟1 小时前
用开发板的.config替换ubuntu中内核源码目录的.config
linux·运维·ubuntu