Tôi hiểu rằng chúng ta nên sử dụng %s
để nối chuỗi chứ không phải +
trong Python.
Tôi có thể làm bất cứ điều gì:
hello = "hello"
world = "world"
print hello + " " + world
print "%s %s" % (hello, world)
print "{} {}".format(hello, world)
print ' '.join([hello, world])
Nhưng tại sao tôi nên sử dụng bất cứ thứ gì khác ngoài +
? Viết nhanh hơn bằng cách viết đơn giản +
. Sau đó, nếu bạn nhìn vào chuỗi định dạng, bạn chỉ định các loại ví dụ %s
và %d
và như vậy. Tôi hiểu nó có thể tốt hơn để được rõ ràng về các loại.
Nhưng sau đó tôi đọc rằng +
nên tránh sử dụng để ghép nối mặc dù nó dễ gõ hơn. Có một lý do rõ ràng rằng các chuỗi nên được nối theo một trong những cách khác?
%s
không phải để nối, đó là một đặc tả chuyển đổi cho định dạng chuỗi có nguồn gốc từ C's printf(3)
. Có những trường hợp để sử dụng điều đó hoặc một toán tử ghép; mà bạn sử dụng nên dựa trên phán đoán của tình huống, không phải giáo điều. Việc viết mã dễ dàng như thế nào là hoàn toàn không liên quan vì bạn sẽ chỉ làm điều đó một lần.
print(f"{hello} {world}")
, có khả năng đọc kết nối vì các biến được nhìn thấy nơi chúng xuất hiện trong chuỗi và nhanh hơn str.format
.