3

私は Python 2.7.3 を使用しており、このスクリプトが印刷ステートメントを順不同で実行する理由を理解しようとしています。つまり、「-」は 2 番目の for ループの後に出力されます。

私のスクリプト:

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("Limburger", "It's very runny, sir.",
           "It's really very, VERY runny, sir.",
           {'shopkeeper':'Michael Palin',
           'client':"John Cleese",
           'sketch':"Cheese Shop Sketch"})

出力:

-- Do you have any Limburger ?
-- I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
{'shopkeeper': 'Michael Palin', 'sketch': 'Cheese Shop Sketch', 'client': 'John Cleese'}
----------------------------------------

予想されるように、辞書の前に "-"*40 を実行するのはなぜですか?

4

1 に答える 1

8

辞書をキーワードとして渡しませんでした。これを行うには、次の構文を使用し**ます。

cheeseshop("Limburger", "It's very runny, sir.",
           "It's really very, VERY runny, sir.",
           **{'shopkeeper':'Michael Palin',
           'client':"John Cleese",
           'sketch':"Cheese Shop Sketch"})

または、辞書をまったく使用しない:

cheeseshop("Limburger", "It's very runny, sir.",
           "It's really very, VERY runny, sir.",
           shopkeeper='Michael Palin',
           client="John Cleese",
           sketch="Cheese Shop Sketch")
于 2013-01-26T18:45:10.433 に答える