为什么下面的代码在“Snakes and Coffee”对 Blender 的帖子的评论中被称为“古老的不被批准的打印方法”在python中打印多个参数 https://stackoverflow.com/questions/15286401/print-multiple-arguments-in-python?它与 Python 2 或 Python 3 的后端代码/实现有关吗?
print("Total score for " + str(name) + " is " + str(score))
添加许多字符串不被批准,因为:
- 与其他替代方案相比,它并不是真正可读。
- 它不如替代方案有效。
- 如果你有其他类型,你必须手动调用
str
在他们。
而且,是的,它真的很旧。 :-)
理论上,字符串相加会创建一个新字符串。所以,假设你添加n
字符串,那么你需要创建n-1
字符串,但除一个之外的所有这些都被丢弃,因为您只对最终结果感兴趣。
字符串是作为数组实现的,因此您可能会进行大量昂贵的(重新)分配,但没有任何好处。
如果你有一个带有占位符的字符串,它不仅更具可读性(你没有这些+
and str
之间),但 python 也可以计算最终字符串的长度,并为最终字符串仅分配一个数组并插入所有内容。
实际上,情况并非如此,因为 Python 会检查字符串是否是中间字符串并进行一些优化。所以它并不像创建那么糟糕n-2
不必要的数组。
对于小字符串和/或交互式使用,您甚至不会注意到差异。但其他方式的优点是更具可读性。
替代方案可能是(前两个是从 @MKemps 答案复制的):
"Total score for {} is {}".format(name, score)
-
"Total score for %s is %s" % (name, score)
(也老了!)
"Total score for {name} is {score}".format(name=name, score=score)
-
f"Total score for {name} is {score}"
(非常新 - 在 Python 3.6 中引入)
特别是后两个示例表明您甚至可以读取模板字符串而无需插入任何内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)