【问题标题】:Python way of printing: with 'format' or percent form? [duplicate]Python 打印方式:使用“格式”还是百分比形式? [复制]
【发布时间】:2012-09-05 03:37:55
【问题描述】:

在 Python 中似乎有两种不同的方式来生成格式化输出:

user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))

有没有一种方法比另一种更受欢迎?它们是等价的,有什么区别?应该使用什么形式,尤其是 Python3?

【问题讨论】:

    标签: python printing format


    【解决方案1】:

    使用format 方法,特别是如果您担心 Python 3 和未来。来自the documentation

    此处描述的格式化操作以 C 的 printf() 为模型 句法。它们仅支持某些内置类型的格式。这 使用二元运算符意味着可能需要小心,以便 正确格式化元组和字典。作为新 :ref:string-formatting 语法更灵活,可以处理元组和 字典自然,推荐用于新代码。然而,有 目前没有弃用 printf 样式格式的计划。

    【讨论】:

    【解决方案2】:

    .format是在Python2.6中引入的

    如果你需要向后兼容早期的 Python,你应该使用%

    对于 Python3 和更新版本,您肯定应该使用 .format

    .format% 更强大。将% 移植到.format 很容易,但反过来也不是小事

    【讨论】:

    • 如何更强大?
    • @yossi 这是一个例子stackoverflow.com/a/3228928/174728。它还可以让您进行键/索引查找import sys;"{[version]}".format(vars(sys))
    • 怎么样:import sys;"%(version)s" % (vars(sys))
    • @Pax0r:链接的例子是'{num:{fill}{width}}'.format(num=123, fill='0', width=6)。你不能用% 做到这一点,除非你“双重转义”并应用两次
    • '%s' % (str(123).rjust(6, '0'))
    【解决方案3】:

    The docs 表示format 方法是新代码的首选。不过,目前没有删除 % 格式的计划。

    【讨论】:

      【解决方案4】:

      您可以同时使用。没有人说 % 格式化表达式已被弃用。但是,如前所述,格式方法调用更强大。 另请注意,% 表达式更简洁且更易于编码。试试它们,看看哪种最适合您

      【讨论】:

      • 可能值得注意的是logging 模块使用%-like 语法,因此出于一致性原因它可能是首选。
      猜你喜欢
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      相关资源
      最近更新 更多