Python có ít nhất sáu cách định dạng một chuỗi:
In [1]: world = "Earth"
# method 1a
In [2]: "Hello, %s" % world
Out[2]: 'Hello, Earth'
# method 1b
In [3]: "Hello, %(planet)s" % {"planet": world}
Out[3]: 'Hello, Earth'
# method 2a
In [4]: "Hello, {0}".format(world)
Out[4]: 'Hello, Earth'
# method 2b
In [5]: "Hello, {planet}".format(planet=world)
Out[5]: 'Hello, Earth'
# method 2c
In [6]: f"Hello, {world}"
Out[6]: 'Hello, Earth'
In [7]: from string import Template
# method 3
In [8]: Template("Hello, $planet").substitute(planet=world)
Out[8]: 'Hello, Earth'
Sơ lược về lịch sử của các phương pháp khác nhau:
printfđịnh dạng kiểu đã có từ khi Pythons còn nhỏ- Các
Templatelớp học được giới thiệu vào Python 2.4 - Các
formatphương pháp được giới thiệu vào Python 2.6 f-strings được giới thiệu trong Python 3.6
Câu hỏi của tôi là:
- Định
printfdạng -style không được dùng nữa hay sẽ không được dùng nữa? - Trong
Template class,substitutephương thức không được chấp nhận hay sẽ không được dùng nữa? (Tôi không nói vềsafe_substituteđiều này, theo tôi hiểu thì nó cung cấp các khả năng độc đáo)
Các câu hỏi tương tự và tại sao tôi nghĩ chúng không trùng lặp:
Định dạng chuỗi trong Python:% so với .format - chỉ xử lý các phương pháp 1 và 2 và hỏi phương thức nào tốt hơn; câu hỏi của tôi rõ ràng là về việc không dùng nữa theo Zen of Python
Tùy chọn định dạng chuỗi: ưu và nhược điểm - chỉ xử lý các phương pháp 1a và 1b trong câu hỏi, 1 và 2 trong câu trả lời và cũng không có gì về việc không dùng nữa
định dạng chuỗi nâng cao so với chuỗi mẫu - chủ yếu là về phương pháp 1 và 3 và không giải quyết việc không dùng nữa
Biểu thức định dạng chuỗi (Python) - câu trả lời đề cập rằng phương pháp tiếp cận '%' ban đầu được lên kế hoạch không được dùng nữa . Nhưng sự khác biệt giữa dự kiến sẽ không dùng nữa , đang chờ xử lý và thực tế không dùng nữa là gì? Và
printfphương thức kiểu không tăng thậm chí aPendingDeprecationWarning, vì vậy điều này có thực sự không được chấp nhận không? Bài này cũng khá cũ nên thông tin có thể bị lỗi thời.
Formatterlớp học không?