You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中(course_db = Course(...)).save()报错的原因及替代方案

问题解答

该写法报错的核心原因

Python 和 C++ 对普通赋值操作的定位完全不同:

  • C++ 中=是赋值表达式,执行赋值后会返回被赋值的对象,所以可以嵌套在其他表达式中使用
  • Python 中普通的=是赋值语句,设计上就没有返回值,语法规则里不允许将赋值语句放在括号、函数调用等需要传入表达式的位置。这么设计的初衷是为了避免开发者笔误把==写成=,导致出现难以排查的逻辑错误。

你搜索到的资料大概率混淆了普通赋值语句和Python 3.8版本新增的赋值表达式语法,所以才会让你误以为普通赋值可以这么用。

可用的替代方案

方案1:使用Python 3.8+支持的海象运算符

Python 3.8 新增了海象运算符:=,专门用来实现「赋值同时返回被赋值对象」的需求,完全符合你的预期写法:

(course_db := Course(title='Databases')).save()

方案2:兼容所有Python版本的标准写法

如果你的代码需要兼容Python 3.7及更早版本,直接写两行赋值+调用即可,可读性更高也没有任何兼容问题:

course_db = Course(title='Databases')
course_db.save()

内容的提问来源于stack exchange,提问作者AlwaysLearning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:45:01