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

Python函数在控制台执行两次?解析代码输出异常原因

问题解析:为什么代码输出None和[1, 2, 3, 4]?

先看你的代码:

def changeList(myList1):
    myList2 = myList1.append(4)
    print(myList2)
    return
myList1 = [1,2,3]
changeList(myList1)
print (myList1)

控制台输出:

None
[1, 2, 3, 4]

1. 为什么会输出None?

这是Python列表append()方法的特性导致的:

  • append()是原地修改列表的方法,它的作用是直接在原列表末尾添加元素,不会创建并返回一个新的列表。
  • 所以当你执行myList2 = myList1.append(4)时,append(4)完成添加操作后,会返回None,myList2就被赋值成了None,后续print(myList2)自然输出None。

2. 为什么myList1变成了[1, 2, 3, 4]?

Python中,列表属于可变对象,当你把myList1作为参数传入changeList函数时,传递的是这个列表对象的引用(不是列表的副本)。

  • 函数内部对myList1调用append(4),本质上是直接修改了内存中那个原本的列表对象。
  • 所以函数执行完后,外部的myList1指向的还是同一个对象,自然能看到修改后的结果。

3. 函数并没有执行两次!

控制台的两行输出来自两个不同的print语句:

  • 第一行None是函数内部的print(myList2)输出的;
  • 第二行[1, 2, 3, 4]是函数执行完后,外部的print(myList1)输出的。
    整个过程中changeList(myList1)只被调用了一次,函数只执行了一遍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:29:09