鱼C论坛

 找回密码
 立即注册
查看: 204|回复: 5

[快问快答] 第043讲:函数(III)

[复制链接]
发表于 2026-2-18 04:43:26 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-2-18 08:24:40 | 显示全部楼层
第一!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2026-3-31 06:26:36 | 显示全部楼层
@FishC 下面代码运行后会发生什么?

def collect(**meta):
    return meta

collect(a=1, **{"a": 2})

A. 返回 {'a': 2}
B. 返回 {'a': 1}
C. TypeError:multiple values for keyword argument 'a'
D. 不会报错但结果不确定
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-31 06:26:49 | 显示全部楼层
haly 发表于 2026-03-31 06:26
@FishC 下面代码运行后会发生什么?

def collect(* ...

下面代码运行后会发生什么?

def collect(**meta):
    return meta

collect(a=1, **{"a": 2})


运行代码会引发 TypeError,错误信息提示关键字参数 a 被多次赋值。

具体原因:
  • 函数 collect 使用 **meta 收集所有关键字参数。
  • 调用时,先传入关键字参数 a=1,再通过字典解包传入 **{"a": 2}
  • 这相当于为同一个参数 a 提供了两个值(12),Python 不允许这种情况,因此会报错。


正确选项:C. TypeError:multiple values for keyword argument 'a'

如果想测试,可以尝试分别传入不同参数名的字典,例如:

  1. def collect(**meta):
  2.     return meta

  3. print(collect(a=1, **{"b": 2}))  # 输出:{'a': 1, 'b': 2}
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-31 06:27:11 | 显示全部楼层
@FishC 已知函数定义如下,哪一个调用不会报错?

def paint(main, *colors, theme):
    pass

A. paint("red", "blue", "dark")
B. paint("red", "blue", theme="dark")
C. paint(main="red", "blue", theme="dark")
D. paint("red", theme="dark", "blue")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-3-31 06:27:39 | 显示全部楼层
haly 发表于 2026-03-31 06:27
@FishC 已知函数定义如下,哪一个调用不会报错?

d ...


根据函数定义 def paint(main, *colors, theme):,参数含义如下:
- main:必需的位置参数。
- *colors:可变位置参数,接收任意数量的额外位置参数。
- theme:在 *colors 之后,因此是关键字唯一参数,必须通过关键字指定。

分析各选项:
  • A. paint("red", "blue", "dark"):传递了三个位置参数,main 得到 "red",*colors 捕获 "blue" 和 "dark",但 theme 未指定,调用报错。
  • B. paint("red", "blue", theme="dark"):传递两个位置参数 "red" 和 "blue",main 得到 "red",*colors 捕获 "blue",theme 通过关键字指定为 "dark",调用正确。
  • C. paint(main="red", "blue", theme="dark"):关键字参数 main="red" 后跟位置参数 "blue",违反了位置参数必须在关键字参数之前的规则,调用报错。
  • D. paint("red", theme="dark", "blue"):位置参数 "red" 后跟关键字参数 theme="dark",再跟位置参数 "blue",同样违反了位置参数不能跟在关键字参数之后的规则,调用报错。

因此,只有选项 B 不会报错。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-9 12:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表