gpt4 book ai didi

python - 传递数据以在 python 中打印的更好方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:44 24 4
gpt4 key购买 nike

我正在浏览 http://web2py.com/book/default/chapter/02并发现了这个:

>>> print 'number is ' + str(3)
number is 3
>>> print 'number is %s' % (3)
number is 3
>>> print 'number is %(number)s' % dict(number=3)
number is 3

已给出 最后一个符号更明确且更不容易出错,并且是首选。

我想知道使用最后一个表示法有什么好处。它不会有性能开销吗?

最佳答案

>>> print 'number is ' + str(3)
number is 3

这绝对是最糟糕的解决方案,如果您犯了初学者的错误,可能会给您带来麻烦 "Value of obj: " + obj其中 obj不是字符串或 unicode 对象。对于许多连接,它根本不可读 - 它类似于 echo "<p>Hello ".$username."!</p>"; 之类的东西在 PHP 中(这可能会变得任意丑陋)。


print 'number is %s' % (3) number is 3

现在好多了。您可以立即看到输出格式,而不是难以阅读的串联。回到输出值的初学者错误,你可以做 print "Value of obj: %r" % obj , 例如。在大多数情况下,我个人更喜欢这个。但请注意,如果您有多个格式说明符,则不能在 gettext 翻译的字符串中使用它,因为顺序可能会在其他语言中发生变化。

这里忘了说了,你也可以使用新的字符串格式化方法,类似的:

>>> "number is {0}".format(3)
'number is 3'


接下来,字典查找:

>>> print 'number is %(number)s' % dict(number=3)
number is 3

如前所述,gettext-translated strings 可能会改变位置格式说明符的顺序,所以这个选项在处理翻译时是最好的。性能下降应该可以忽略不计 - 如果您的程序不只是格式化字符串。

与位置格式一样,您也可以采用新样式:

>>> "number is {number}".format(number=3)
'number is 3'


很难说要拿哪一个。我建议您将位置参数与 % 一起使用简单字符串的符号和翻译字符串的字典查找格式。

关于python - 传递数据以在 python 中打印的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com