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
Template
lớp học được giới thiệu vào Python 2.4 - Các
format
phươ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
printf
dạng -style không được dùng nữa hay sẽ không được dùng nữa? - Trong
Template class
,substitute
phươ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à
printf
phươ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.
Formatter
lớp học không?