Hướng dẫn dùng python formatter python
Mục lục bài viết:
Nội dung chính Show
Kể từ Python 3.6, f-string là một cách mới tuyệt vời để định dạng chuỗi. Chúng không chỉ dễ đọc hơn, ngắn gọn hơn và ít bị lỗi hơn so với các cách định dạng khác mà còn nhanh hơn! Đến cuối bài viết này, bạn sẽ học cách làm thế nào và tại sao nên bắt đầu sử dụng f-strings ngay hôm nay. Nhưng trước hết ta sẽ xem phải định dạng chuỗi thế nào khi chưa có f-strings. Định dạng chuỗi cũ trong PythonTrước Python 3.6, bạn có hai cách chính để nhúng các biểu thức Python vào bên trong chuỗi ký tự để định dạng: %-formatting và Lựa chọn #1: %-formatĐây là OG của định dạng Python và đã được sử dụng trong ngôn ngữ này ngay từ đầu. Cách sử dụng %-formattingCác đối tượng chuỗi có
một hoạt động tích hợp bằng cách sử dụng toán tử
Để chèn nhiều biến bạn có thể làm như sau:
Tại sao %-format không phải là tuyệt vờiCác ví dụ mã mà bạn vừa thấy ở trên là đủ để đọc. Tuy nhiên, một khi bạn bắt đầu sử dụng một số tham số và chuỗi dài hơn, mã của bạn sẽ nhanh chóng trở nên khó đọc hơn nhiều. Mọi thứ bắt đầu có
vẻ hơi lộn xộn rồi:
Thật không may, loại định dạng này không tuyệt vời vì nó dài dòng và dẫn đến lỗi, chẳng hạn như không hiển thị các bộ giá trị hoặc từ điển một cách chính xác. May mắn thay, có những ngày tươi sáng hơn ở phía trước. Ta xem tùy chọn #2 xem sao. Tùy chọn #2: str.format()Cách mới hơn này để hoàn thành công việc đã được giới thiệu trong Python 2.6. Cách sử dụng str.format()
Với
Bạn có thể tham chiếu các biến theo bất kỳ thứ tự nào bằng cách tham chiếu chỉ mục của chúng:
Nhưng nếu bạn chèn tên biến, bạn sẽ nhận được đặc quyền bổ sung là có thể truyền các đối tượng và sau đó
tham chiếu các tham số và phương thức ở giữa các dấu ngoặc nhọn:
Bạn cũng có thể sử dụng thủ thuật
Tại sao str.format() chưa ổnSử dụng mã
Nếu bạn có các biến mà bạn muốn chuyển đến f-string: Một cách mới và cải tiến để định dạng chuỗi trong Pythonf-string được đề xuất từ phiên bản Python 3.6. Bạn có thể đọc tất cả về nó trong PEP 498, được viết bởi Eric V. Smith vào tháng 8 năm 2015. Còn được gọi là "các ký tự chuỗi được định dạng", f-string là các ký tự chuỗi có một ký tự Dưới đây là một số cách f-string có thể giúp cuộc sống của bạn dễ dàng hơn. Cú pháp đơn giảnCú pháp tương tự như cú pháp bạn đã sử dụng
Nó cũng sẽ hợp lệ nếu bạn sử dụng một chữ cái viết hoa
Bạn yêu thích f-string chưa? Tôi hy vọng rằng, đến cuối bài viết này, bạn sẽ trả lời: Biểu thức tùy ýVì chuỗi f được đánh giá trong thời gian chạy, bạn có thể đặt bất kỳ và tất cả các biểu thức Python hợp lệ nào vào chúng. Điều này cho phép bạn làm một số việc tiện lợi. Bạn có thể làm điều gì đó khá đơn giản, như thế này:
Nhưng bạn cũng có thể gọi các hàm. Đây là một ví dụ:
Bạn cũng có tùy chọn gọi một phương thức trực tiếp:
Bạn thậm chí có thể sử dụng các đối tượng được tạo từ các lớp với
f-string. Hãy tưởng tượng bạn có lớp sau:
Bạn có thể làm điều này:
Các phương thức __str__() và __repr__() xử lý cách các đối tượng được trình bày dưới dạng chuỗi, vì vậy bạn sẽ cần đảm bảo rằng bạn đưa vào ít nhất một trong những phương thức đó trong định nghĩa lớp của mình. Nếu bạn phải chọn một phương thức, hãy chọn Chuỗi được trả
về Theo mặc định, f-string sẽ sử dụng
Đa dòng trong f-stringBạn có thể có các chuỗi nhiều dòng như sau:
Nhưng hãy nhớ rằng bạn cần phải đặt một
Nếu bạn không đặt Nếu bạn muốn trải rộng các chuỗi
trên nhiều dòng, bạn cũng có tùy chọn là thêm
Nhưng đây là những gì sẽ xảy ra nếu bạn sử dụng
Đọc kỹ hướng dẫn thụt lề trong PEP 8. Tốc độ
f-string nhanh hơn cả %-format và
Trong thời gian chạy, biểu thức bên trong dấu ngoặc nhọn được đánh giá trong phạm vi riêng của nó và sau đó được đặt cùng với phần ký tự của chuỗi f-string. Chuỗi kết quả sau đó được trả về. Đó là tất cả những gì nó cần. Đây là một so sánh tốc độ:
Như bạn có thể thấy, chuỗi f có thời gian thực thi nhỏ nhất. Tuy nhiên, không
phải lúc nào cũng vậy. Khi chúng được triển khai lần đầu tiên, chúng có một số vấn đề về tốc độ và cần phải được thực hiện nhanh hơn Một số chú ýBây giờ bạn đã tìm hiểu tất cả về lý do tại sao f-string lại tuyệt vời, tôi chắc chắn rằng bạn đang rất muốn bắt đầu sử dụng chúng. Dưới đây là một số chi tiết cần ghi nhớ. Dấu ngoặc képBạn có thể sử dụng nhiều loại dấu ngoặc kép khác nhau bên trong các biểu thức. Chỉ cần đảm bảo rằng bạn không sử dụng cùng một loại dấu ngoặc kép ở bên ngoài chuỗi f như bạn đang sử dụng trong biểu thức. Mã sau sẽ hoạt động:
Mã sau cũng sẽ hoạt động:
Bạn cũng có thể sử dụng dấu ngoặc kép:
Nếu bạn thấy mình cần sử dụng cùng một loại dấu ngoặc kép ở cả bên trong và
bên ngoài chuỗi, thì bạn có thể thoát bằng
Từ điểnNói về dấu ngoặc kép, hãy để ý khi bạn đang làm việc với từ điển. Nếu bạn định sử dụng dấu ngoặc kép đơn cho các khóa của từ điển, thì hãy nhớ đảm bảo rằng bạn đang sử dụng dấu ngoặc kép cho các chuỗi f chứa khóa. Điều sau sẽ hoạt động:
Nhưng đây sẽ là một mớ hỗn độn nóng với một lỗi cú pháp:
Nếu bạn sử dụng cùng một loại dấu ngoặc kép xung quanh các khóa từ điển như khi bạn làm ở bên ngoài chuỗi f, thì dấu ngoặc kép ở đầu khóa từ điển đầu tiên sẽ được hiểu là cuối chuỗi. Ngoặc xoắn ({})Để tạo một dấu ngoặc xoắn trong chuỗi của bạn, bạn phải sử dụng dấu ngoặc kép:
Lưu ý rằng nếu bạn sử dụng ba dấu ngoặc xoắn sẽ dẫn đến việc chỉ có một dấu ngoặc nhọn trong chuỗi của bạn:
Tuy nhiên, bạn có thể nhận được nhiều ngặc xoắn hơn để
hiển thị nếu bạn sử dụng nhiều hơn ba ngoặc xoắn:
Dấu gạch chéo ngược (xổ trái)Như bạn đã thấy trước đó, bạn có thể sử dụng các thoát dấu gạch chéo ngược trong phần chuỗi của một chuỗi f. Tuy nhiên, bạn không thể sử dụng dấu gạch chéo ngược để thoát trong phần biểu thức của chuỗi f:
Bạn có thể giải quyết vấn đề này bằng cách đánh giá trước biểu thức và sử dụng kết quả trong chuỗi f:
Chú thích (comment) bên trongBiểu thức không được bao gồm các chú thích sử dụng biểu tượng
Đọc thêmNếu bạn muốn xem thảo luận mở rộng về nội suy chuỗi, hãy xem PEP 502. Ngoài ra, dự thảo PEP 536 có thêm một số suy nghĩ về tương lai của chuỗi f. Để có thêm niềm vui với chuỗi, hãy xem các bài viết sau:
|