🐸

标签金库

Python 基础python-architect-04-kwargs
奖励: 120 XP
|

复杂的定制

大法师要求 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"

顺序规则

在函数定义中:

  1. 普通参数 (x)
  2. 默认参数 (y=1)
  3. *args (收纳盒)
  4. **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...