[英]Is it ever appropriate to join two strings using the plus sign (+) over concatenating with curly brackets ({}) and `format` in Python 2.7?
我正在尝试编写干净简洁的代码,并且在很多代码中,我看到有时候我看到人们的代码不一致。 我问的是,有没有这样的实例
print("Cars on the road: " + cars)
比这更合适
print("Cars on the road: {}".format(cars))
或者只是一个偏好的问题?
您给出的两个示例之间的最大功能差异是,当您使用+
连接时,如果操作数右侧的对象不是字符串,则操作将失败:
"abc" + object()
例如,将导致以下情况:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't convert 'object' object to str implicitly
即使右侧的对象实现__str__
方法,也是__str__
:
class Foo:
def __str__(self):
return "str"
但是,使用格式将使用__str__
方法自动转换传递的参数:
"{}".format(Foo()) # "str"
在某些情况下,这种行为可能不合适或不必要,例如,当您简单地将字符串文字与预期为字符串的对象连接时。
如果你知道你正在处理简单的字符串,那么,是的, 简单比复杂更好 。 格式化功能非常棒,类似于
“lit1” + var + “lit2”
是一种明确的代码气味。
你的例子不是,基于模板的版本的额外复杂性是一个轻微的额外认知负荷, 我会避免,或至少不努力,尽管广泛使用模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.