繁体   English   中英

在Python 2.7中使用加号(+)连接大括号({})和`format`是否合适?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM