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

相关推荐
东莞市云毅网络有限公司6 小时前
AI 引用句逐条回指原文:让回答可回溯的校验实现
python·数据清洗·rag·企业知识库·文档解析
Vex2une8 小时前
Windows 性能监视器发展史:从 PerfMon 计数器到 XPerf 深度诊断
windows·wpa·etw·性能监视器·perfmon·性能计数器·xperf
在角落发呆8 小时前
工具配置备份步骤:从手动备份到自动化方案
运维·windows·自动化
数字融合8 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi0118 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
_upupup9 小时前
Linux的调试工具——gdb/cgdb
linux·服务器
JeJe同学9 小时前
Docker镜像导入、容器启动
linux·运维·docker
Vd7H20A79 小时前
Windows 下用 llama.cpp 运行 Qwen3.8-27B 并开启 512K 上下文 完全指南
windows·llama
Jason_zhao_MR9 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
Marst Code9 小时前
上位机开发日记 · 第 2 篇 · 架构先行:六层分层与边界
python