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

为何在函数中调用sys.getrefcount时返回值为4而非预期的3?

关于sys.getrefcount计数为4的原因

你遗漏的引用来源是Python解释器在调用sys.getrefcount(x)时,参数传递过程中产生的临时栈引用。

具体拆解四个引用的来源:

  • 全局变量a对列表[1,2,3]的引用
  • 函数foo的形参x对列表的引用
  • sys.getrefcount的形参接收列表时产生的引用
  • 调用sys.getrefcount(x)时,Python会先将x的值压入调用栈,这个栈上的临时值也是一个有效的引用

当sys.getrefcount执行时,它会统计所有当前存在的引用,包括这个临时栈引用,所以最终输出是4而非预期的3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:07:41