复杂的定制
大法师要求 Hoppy 制造一种新型的 魔法傀儡 (Golem)。
这种傀儡太复杂了,客户的要求五花八门:
有的要 material="Iron" (铁做的),有的要 weapon="Sword" (拿剑),有的要 height=5 (5米高),有的甚至要 name="Bob"。
如果我们在图纸上把所有可能的参数都写出来,那参数列表得有几百米长!
标签金库 (**kwargs)
在参数名前加 两颗星星 **,它就变成了一个能容纳任意 带标签数据 的金库(魔法术语叫 字典 Dictionary)。
def build_golem(**options):
print("收到订单配置:")
for key, value in options.items():
print(key + ": " + str(value))
现在,你可以用任何 标签=值 的方式来调用它:
build_golem(material="Wood", type="Guard")build_golem(name="Bob", power=9000, color="Red")
你的任务
1
定义图纸
创建一个名为 configure_robot 的函数,使用 **specs 作为参数。
2
读取标签
在函数内部,使用 print("Robot Specs:"),然后遍历 specs.items() 打印出所有的配置项。
3
制造机器人
调用一次函数,传入以下配置:type="Battle", cpu="M1", armor="Titanium"。
顺序规则
在函数定义中:
- 普通参数 (x)
- 默认参数 (y=1)
- *args (收纳盒)
- **kwargs (标签金库) kwargs 必须永远放在最后!
参考答案点击展开点击收起
点击展开点击收起
参考答案:
def configure_robot(**specs):
print("Robot Specs:")
for part, model in specs.items():
print(part + ": " + model)
configure_robot(type="Battle", cpu="M1", armor="Titanium")高级技巧想更进一步?点击展开点击收起
F. 现实桥接 (Bridge to Reality)
- 标签金库 = 关键字参数 (Keyword Arguments),常缩写为
kwargs。 - 双星 ()** = 字典解包 (Dictionary Unpacking)。
- 这是 Python 最强大的特性之一。很多复杂的库(如 Matplotlib 画图、Django 数据库查询)都大量使用
**kwargs来让用户传入各种可选配置,而不需要改动函数签名。
Loading...
终端输出
Terminal
Ready to run...