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

相关推荐
2401_858286116 小时前
OS82.【Linux】设计线程池
java·linux·运维·服务器·开发语言·算法·线程池
花酒锄作田6 小时前
Repository 模式在 FastAPI 中的应用
python·fastapi
@yanyu6666 小时前
kali note
linux·运维·服务器
2401_894915536 小时前
Geo 优化源码部署常见报错排查:连接失败、地图加载、地域词失效解决方案
服务器·开发语言·python·安全·php
码农小韩6 小时前
Linux操作系统(六)——软件包管理
linux·操作系统·linux驱动·嵌入式软件开发·linux应用
果果燕7 小时前
实习笔记(二)NFS 嵌套挂载问题完整复盘
linux·服务器·网络
g3voip8 小时前
工业防爆电话选型指南:防爆参数、SIP接入与调度系统集成
linux·服务器·网络·信息与通信·ip·pbx
databook8 小时前
用递归消除法优化“特征子集”
python·机器学习·scikit-learn
CAE二次开发工程师8 小时前
【C语言入门到精通】-基础篇
c语言·开发语言·python
沫璃染墨8 小时前
《从零入门Linux系统篇(十四):系统工具篇·五——Git版本控制:从版本管理到协同开发》
linux·运维·服务器·git·gitee·github