【问题标题】:script prints out of order脚本打印乱序
【发布时间】:2013-01-26 18:42:32
【问题描述】:

我正在使用 Python 2.7.3 并试图理解为什么这个脚本会乱序执行打印语句。即“-”在第二个 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 在字典之前执行?

【问题讨论】:

    标签: python printing python-2.7


    【解决方案1】:

    您没有将字典作为关键字传入。使用** 语法这样做:

    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")
    

    【讨论】:

    • 打败我。可能要注意,在字典周围添加的括号不是必需的。
    • 谢谢马丁!这就解释了。
    • @cwallenpoole:确实,我正要检查一下,但另一个谈话让我分心了几秒钟。
    • 如果需要括号我会很惊讶,毕竟这不是 PHP :)
    • @phant0m:对于*** 的情况,解析器可能有点挑剔。现在想不出我头顶的例子,但对于字典文字来说确实很好。
    猜你喜欢
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 2018-09-11
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多