python - 在 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__
方法也是如此:
class Foo:
def __str__(self):
return "str"
然而,使用 format 将使用以下__str__
方法自动转换传递的参数:
"{}".format(Foo()) # "str"
在某些情况下,这种行为可能是不可取的或不必要的,例如当您只是将字符串文字与预期为字符串的对象连接时。
在所有其他情况下,我同意评论中引用的帖子,它提供了很多很好的理由说明格式化更符合习惯用法并且可能更有效。
推荐阅读
- ios - 数组到数组复制
- jquery - 如何将两个 DateTimePicker 与 JQuery 进行比较?
- nativescript - 如何修复 nativescript 中的“TypeError:process.hrtime 不是函数”?
- python - 如何使用熊猫从对象数组中创建数据框?
- android - com.google.firebase.FirebaseException:发生内部错误。[ API 密钥无效。请传递有效的 API 密钥。]
- python - 将迭代数分配给变量的 n 行
- acumatica - 发布后保存客户记录出错,做 T300 YogiFon 练习在线课程
- javascript - 如何使用 Eslint 格式化和 Intellij IDEA 标准重新格式化(Ctrl+Alt+L)
- angular - 为什么在类的构造函数中声明的属性不存在?
- javascript - javascript 在下拉框选择上显示所有关联的 DIV