拆开的搭档
上一课,Hoppy 把卷轴名和架位号收进了一张固定档案卡。那一步解决的是“怎么保存”:两条天然绑定的信息,终于能像一对搭档一样一起行动。
但现在管理员真的要 Hoppy 去取卷轴了。只拿着整张卡片还不够,Hoppy 需要把卡片展开,分别拿到卷轴名和架位号,才能继续往架子前走。这一步就是把固定搭档打开,让里面的信息重新变得可用。
把记录卡展开成两个有名字的变量
这节课的关键动作很简单:一组固定搭档,可以直接拆成两个变量。因为 tuple 里的位置本来就已经有固定意义,所以拆出来后的名字也会很自然:第一格是卷轴名,第二格是架位号。
scroll_record = ("Fern Ledger", "A-7")
print("Record card:", scroll_record)
record_name, shelf_code = scroll_record
print("Opened name:", record_name)
print("Opened shelf:", shelf_code)
print(f"Fetch {record_name} from shelf {shelf_code}.")
这里的 record_name, shelf_code = scroll_record,就是把 tuple 一次展开。tuple 的第一格会进到 record_name,第二格会进到 shelf_code。你不是把这张卡变成了别的东西,而是把一条已经存好的记录,变成了两个可以立刻使用的名字。
为什么这比 [0] 和 [1] 更自然
你当然也可以写 scroll_record[0] 和 scroll_record[1]。那样也能拿到值,但读起来更像是在盒子里先掏第一格、再掏第二格。
unpacking 更像是在把一张记录卡直接展开。既然第一格本来就表示“名字”,第二格本来就表示“架位号”,那就顺手把它们交给对应的变量名。这样写会更清楚,也更像 Hoppy 现在真的在做的事情。
starter 已经给了你 scroll_record。这次你不用重新造卡,你真正要做的是把它打开。
用一行代码,把第一格交给 record_name,把第二格交给 shelf_code。
你会先看到 Record card: 那一行里的整张 tuple 卡片,再看到拆开的变量和最后的取卷轴提示。整节课最重要的感觉就是:一条固定记录,既可以一起保存,也可以拆开来用。
上一课解决的是“把两条绑定信息收在一起”。这一课解决的是下一个瞬间:当这对固定信息已经存在时,你可以把它展开成两个清楚的名字,马上拿来做事。这样 tuple 才会显得真的有用,而不是只是多包了一层。
参考答案点击展开点击收起
scroll_record = ("Moon Map", "B-12")
print("Record card:", scroll_record)
record_name, shelf_code = scroll_record
print("Opened name:", record_name)
print("Opened shelf:", shelf_code)
print(f"Fetch {record_name} from shelf {shelf_code}.")高级技巧想更进一步?点击展开点击收起
现在你还不需要学更大的 unpacking 技巧。这里最重要的新直觉更小:tuple 不是只能整体放着,它也可以在你真正要做事的时候,展开成几个有名字的信息。
记住这个画面就够了:先把一对信息存成一张卡,再在行动开始时把卡展开。把“收在一起”和“拆开使用”连成同一件事,就是这节 bridge 课真正想让你拿到的感觉。