为何在函数中调用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
相关产品推荐
相关产品推荐

