首页 > 解决方案 > 在 Python 2.7 中使用加号 (+) 连接两个字符串而不是用大括号 ({}) 和“格式”连接两个字符串是否合适?

问题描述

我正在尝试编写干净简洁的代码,在我查看的很多代码中,有时我发现人们的代码不一致。我要问的是,有没有这样的例子

print("Cars on the road: " + cars)

比这个更合适

print("Cars on the road: {}".format(cars))

还是只是偏好问题?

标签: pythonstringpython-2.7concatenationstring-formatting

解决方案


您给出的两个示例之间的最大功能差异是,当您与 连接时+,如果操作数右侧的对象不是字符串,则操作将失败:

"abc" + object()

例如会导致以下情况:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'object' object to str implicitly

即使右侧的对象实现了该__str__方法也是如此:

class Foo:
    def __str__(self):
        return "str"

然而,使用 format 将使用以下__str__方法自动转换传递的参数:

"{}".format(Foo()) # "str"

在某些情况下,这种行为可能是不可取的或不必要的,例如当您只是将字符串文字与预期为字符串的对象连接时。

在所有其他情况下,我同意评论中引用的帖子,它提供了很多很好的理由说明格式化更符合习惯用法并且可能更有效。


推荐阅读