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

Django项目中能否将函数参数默认值设为其他函数返回值

结论

你这种将函数返回值作为参数默认值的写法不是规范的Python编码方式,会存在不易排查的逻辑bug,即使当前看起来运行正常也不建议使用。

问题原因

Python的函数参数默认值的求值时机为函数定义被加载到内存的时刻,而非每次函数调用的时刻:

  • 你写的def get_report_obj(id=get_latest_id()):中,get_latest_id()只会在项目启动加载这个函数时执行1次,后续所有不传参数调用get_report_obj()的场景,都会复用第一次返回的id值,不会重新调用get_latest_id()获取最新的报告id,完全不符合你获取最新报告的业务需求。
  • 你原本写的默认值设为None,在函数内部再赋值id = get_latest_id()的写法才是规范实现,保证每次调用都会重新获取最新id。

额外注意

你两段代码里都存在变量名错误:函数参数定义的是id,但ORM查询时写的是id=report_id,report_id属于未定义变量,实际运行会抛出异常,需要修正为id=id或者给参数改名为更清晰的report_id避免歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:48:03