在 Python 3 中打印 kwargs

Printing kwargs in Python 3

我对 Python 比较陌生,最近遇到了 kwargs。我想我理解它们以及它们是如何工作的。但是,当我尝试使用 for 循环打印键和值时,会出现 ValueError: Too many values to unpack.

def shop(**kwargs):
    sh = 1
    print ("Welcome to the shop!")
    for i, v in kwargs:
        print ("    ", i, ": ", v)
    while sh == 1:
        b = input ("What would you like to buy?").lower()
        if b == i:
            Player.gold -= v
            Player.inv_plus(i)
        elif b == "exit":
            sh = 0

shop(Stone=5, Potion=10)

Player.gold 就是玩家拥有的金币数量,Player.inv_plus(i) 将玩家物品栏中的物品加 1。不过,这对我遇到的问题并不重要。

如果我在没有 for 循环的情况下打印 kwargs,它工作正常。但这不是我打印时想要的格式。

如果有人能解释我做错了什么,我将不胜感激,因为我很困惑为什么它不起作用。

kwargs 是一个字典,默认情况下只迭代它们 returns 键。你需要 kwargs.items().

for i, v in kwargs.items():
    print ("    ", i, ": ", v)