You need to enable JavaScript to run this app. Python中将函数赋值给列表时的实际运行机制是怎样的?
优惠活动
大模型
产品
解决方案
定价
更多

Python中将函数赋值给列表时的实际运行机制是怎样的?

问题解答

你的猜测完全正确,我们可以拆解代码的执行逻辑验证这一点:

Python中的变量本质是指向内存中对象的标签,所有赋值操作传递的都是对象的引用,不会绑定变量本身:

  1. 执行def square(x): ...时,内存中会生成一个函数对象,square变量是指向这个函数对象的标签
  2. 执行foo = square时,相当于给同一个函数对象新增了一个foo标签,此时square和foo指向完全相同的函数对象
  3. 执行x = [square, foo]时,是把这两个变量当时指向的函数对象的引用存入列表的对应位置,此时列表内的引用已经和square、foo这两个变量本身没有关联了
  4. 后续执行foo = 5,只是把foo这个标签从原来的函数对象上解绑,重新绑定到整数5对应的对象上,完全不会影响列表中已经存储的引用,所以第二次打印x时第二个元素还是原来的函数地址。

关于列表元素的修改

是的,你只能通过x[索引]这类下标访问语法修改列表对应位置的元素值。因为列表存储的是独立的引用集合,每个位置的引用和你初始化时用到的外部变量没有后续关联,要修改某一位的引用,必须显式通过下标定位到对应位置重新赋值,比如你要让第二个元素变成5,需要执行x[1] = 5。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:06:07