簡體   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