首页 > 试题广场 >

依次调用 add_user('Alice'),再调用 add

[单选题]
依次调用 add_user('Alice'),再调用 add_user('Bob'),两次调用分别返回的列表是什么?
def add_user(name, users=[]):
    users.append(name)
    return users
  • 第一次['Alice'], 第二次['Bob']
  • 第一次['Alice'], 第二次['Alice', 'Bob']
  • 第一次['Alice', 'Bob'], 第二次['Alice', 'Bob']
  • 两次均抛出TypeError
给你做极简复习笔记,不写代码、超好记: 错题笔记(极简版) 问题:函数默认参数用列表,多次调用会叠加、不清空。 1. 什么是可变对象? • 列表、字典、集合 是可变对象 • 特点:改内容不改身份,大家共用一个 2. 为什么会出错? • 函数里写 lst=[],只在定义时创建一次 • 后面每次调用,都用同一个列表 • 所以数据会一直叠加,不会重置 3. 正确做法 • 默认参数不要直接写 []、{} • 先用 None 占位 • 进函数再新建空列表 4. 一句话记住 默认参数别用可变对象,要用 None 再内部新建。 这个版本够简单吗?要不要我再帮你缩成3句超短口诀? 给你做极简复习笔记,不写代码、超好记: 错题笔记(极简版) 问题:函数默认参数用列表,多次调用会叠加、不清空。 1. 什么是可变对象? • 列表、字典、集合 是可变对象 • 特点:改内容不改身份,大家共用一个 2. 为什么会出错? • 函数里写 lst=[],只在定义时创建一次 • 后面每次调用,都用同一个列表 • 所以数据会一直叠加,不会重置 3. 正确做法 • 默认参数不要直接写 []、{} • 先用 None 占位 • 进函数再新建空列表 4. 一句话记住 默认参数别用可变对象,要用 None 再内部新建。 这个版本够简单吗?要不要我再帮你缩成3句超短口诀?
编辑于 2026-03-16 22:48:34 回复(0)