Python关键字输出解释

时间:2013-07-16 13:13:38

标签: python dictionary keyword

我正在阅读Python 2.7教程,我正在查看以下语句的输出:

def cheeseshop(kind, *arguments, **keywords):
    print "-- Do you have any", kind, "?"
    print "-- I'm sorry, we're all out of", kind
    for arg in arguments:
        print arg
    print "-" * 40
    keys = sorted(keywords.keys())
    for kw in keys:
        print kw, ":", keywords[kw]

所以,如果我这样称呼该程序:

cheeseshop("Cheddar", "No.", "Seriously?",
       Shopkeeper="Michael Palin",
       Client="John Cleese")

输出:

Do you have any Cheddar?
I'm sorry, we're all out of Cheddar
No.
Seriously?
--------------------------------------
Client: John Cleese
Shopkeeper: Michael Palin

这是对的。

如果我将该print语句更改为print keywords,我会得到以下表示:

{'Shopkeeper': 'Ryan Lambert', 'Client': 'John Cleese'}

我对打印keywords[kw]如何使用名称返回时感到有点困惑,keywords没有。

3 个答案:

答案 0 :(得分:3)

In Python, you can pass optional keyword parameters by putting a ** in front of the function parameter's list.

因此keywords变量实际上是字典类型。因此,如果你这样做:

print keywords

你回来了(重新格式化以使映射更加明显)

{
    'Shopkeeper': 'Ryan Lambert', 
    'Client': 'John Cleese'
}

这是一本字典。如果你这样做:

print keywords[kw]

您将获得与密钥kw关联的字典的值。因此,如果kw'Shopkeeper',则keywords[kw]变为'Ryan Lambert',如果kw'Client',则keywords[kw]变为'John Cleese' 1}}

答案 1 :(得分:1)

关键字存储为字典。 (有关详细信息,请参阅this

如果您打印字典本身,它将输出它包含的完整对(键,值)。

在您的计划上:

  • 键是:'店主'和'客户'
  • 值分别为:'Ryan Lambert'和'John Cleese'

访问值的一种方法是使用其键“dict [key]

”搜索它

所以当你写道:“keywords [kw]”你实际上是传递一个键而python会给你相应的值。

您可以认为它与访问数组值类似:

a = ['a', 'b', 'c']

如果你:

print a #output: ['a', 'b', 'c']    
print a[0] # outputs: 'a'

与数组不同,数据不是“整齐地”存储在内存中,而是使用散列

希望它有所帮助,干杯

答案 2 :(得分:1)

使用

调用该功能时
cheeseshop("Cheddar", "No.", "Seriously?",
           Shopkeeper="Michael Palin", Client="John Cleese")

keywords参数采用值{'Shopkeeper': 'Ryan Lambert', 'Client': 'John Cleese'},即它是字典。

这相当于(并且更容易阅读)将函数调用为

cheeseshop("Cheddar", *["No.", "Seriously?"],
           **{"Shopkeeper":"Michael Palin", "Client":"John Cleese"})

也就是说,第一个函数调用中的值会自动包含在*arguments**keywords参数中 - 这就是那些***的用途。< / p>

现在,当你这样做时:

keys = sorted(keywords.keys())
for kw in keys:
    print kw, ":", keywords[kw]

keyword.keys()['Shopkeeper', 'Client'],即字典中的“键”。接下来,您对这些键进行排序,并为每个键打印字典中的相应条目,例如“John Cleese”为“Client”。