Python 3中:用%s和.format()(Python 3: using %s and .fo

2019-08-16 20:15发布

我终于从切换%.format()字符串格式化操作在我的2.x的代码,以使其更容易迁移在未来到3.x。 这是一个有点出人意料地发现,不仅%样式的格式仍然PY3,但它被广泛用于标准库代码。 这似乎是合乎逻辑的,因为写'(%s)' % variable是有点短,也许比更容易理解'({})'.format(variable) 。 但我还是怀疑。 它是正确的(Python的?)使用的代码两种方法? 谢谢。

Answer 1:

Python的3.2文件说, %最终会消失。

http://docs.python.org/3.2/tutorial/inputoutput.html#old-string-formatting

由于str.format()是相当新的,大量的Python代码仍然使用%运算符。 但是,由于格式的这个老风格将最终从语言中删除, str.format()一般应使用。

但作为@regilero说 , 这句话是从3.3消失了 ,这可能表明,它实际上并不是这样。 有一些谈话这里暗示了同样的事情。

作为Python的3.4段落7.1.1规定:

%运算符也可以用于字符串格式化。 这将左参数解释为类似于sprintf() - 被应用到正确的参数样式的格式字符串,并返回此格式化操作产生的字符串。

另见的Python 3.4 4.7.2 printf风格的字符串格式化。



Answer 2:

“%s”为现在的“{}”,所以insted的添加%s与替换它的{},你会想将变量添加到字符串。

def main():
    n="Python 3.+" 
    l="looks nice"
    f="does not look practical."


    print("This seems to be the new way {}".format(n)\
      + "will be working, rather than the ' % ',{} but {}".format(l,f))



main()

#In comparison to just injecting the variable

输出无视他们是出于说明原因引号

“这似乎是新路‘的Python 3 +’,将工作,而不是“%;,‘看起来不错’,但是‘看起来并不实用。’”



文章来源: Python 3: using %s and .format()