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