Python f-strings: Hướng dẫn hoàn chỉnh
Python f-strings nhúng biểu thức vào trong chuỗi. Biểu thức có thể là nội dung của một biến, kết quả của phép tính toán, hoặc bất kỳ giá trị Python nào. f-strings khác với chuỗi thông thường ở chỗ chữ f đứng trước chuỗi.
Khi viết chuỗi, bạn có thể muốn thay đổi một phần của chuỗi để sử dụng một giá trị cụ thể. Ví dụ: bạn muốn chuỗi hiển thị giá trị mà người dùng đã nhập vào bảng điều khiển.
Python đã hỗ trợ định dạng chuỗi lâu rồi, nhưng Python 3.6 giới thiệu phương pháp mới để thay đổi chuỗi để bao gồm các giá trị mới: f-strings.
Hướng dẫn này sẽ thảo luận, kèm ví dụ, về cơ bản của f-strings trong Python. Sau khi đọc xong, bạn sẽ thành thạo việc sử dụng f-strings trong Python.
Định dạng chuỗi trong Python
Trước Python 3.6, có hai cách định dạng chuỗi: dùng toán tử phần trăm (%) và phương thức str.format().
Định dạng bằng phần trăm (%)
Định dạng bằng % đã có từ đầu và cho phép định dạng chuỗi với một hoặc nhiều giá trị.
Ví dụ về định dạng %:
email = "lindsay.ballantyne@gmail.com" new_string = "Địa chỉ email của bạn là %s." % email print(new_string)
Kết quả:
Địa chỉ email của bạn là lindsay.ballantyne@gmail.com
Trong mã, ta dùng %s làm placeholder trong chuỗi "Địa chỉ email của bạn là %s.". Ở cuối dòng, ta dùng dấu % theo sau bởi email để thay thế %s bằng địa chỉ email của người dùng.
str.format()
Python 2.6 giới thiệu phương pháp mới: hàm format().
Giả sử ta muốn định dạng chuỗi với hai giá trị:
name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
new_string = "Xin chào, {}. Địa chỉ email của bạn là {}.".format(name, email)
Kết quả:
Xin chào, Lindsay Ballantyne. Địa chỉ email của bạn là lindsay.ballantyne@gmail.com.
Ta khai báo hai biến name và email lưu tên và email. Sau đó dùng cú pháp .format() để chèn giá trị vào chuỗi.
Định dạng f-string trong Python
Python f-strings nhúng biểu thức vào chuỗi literal. Bạn có thể dùng f-strings để nhúng biến, chuỗi, hoặc kết quả của hàm vào chuỗi. f-string có tiền tố f ở đầu, trước khi chuỗi bắt đầu.
Được giới thiệu từ Python 3.6, f-strings giúp định dạng chuỗi dễ dàng hơn.
f-strings dùng ngoặc nhọn {} để lưu các giá trị cần định dạng vào chuỗi. f-strings cũng có thể dùng chữ F in hoa để biểu diễn chuỗi đã định dạng.
Cú pháp:
f"Đây là một chuỗi."
Ta vừa định nghĩa một chuỗi literal đã định dạng. Ta có thể thêm giá trị vào chuỗi dùng ngoặc nhọn: {}.
Một số người gọi định dạng chuỗi là nội suy chuỗi (string interpolation). Hai khái niệm này chỉ cùng một ý tưởng: thêm một giá trị vào chuỗi khác.
Hãy xem ví dụ f-string:
Ví dụ f-string trong Python
Giả sử ta muốn thêm tên "Lindsay Ballantyne" vào chuỗi:
name = "Lindsay Ballantyne"
print(f"Tên của bạn là {name}.")
Kết quả:
Tên của bạn là Lindsay Ballantyne.
Ta khai báo biến name lưu tên người dùng. Sau đó dùng f-string để chèn giá trị vào chuỗi. Cú pháp này dễ dàng hơn các tùy chọn định dạng khác như format() hay chuỗi %.
Không chỉ vậy, f-strings còn hỗ trợ hàm hoặc bất kỳ biểu thức nào, được đánh giá bên trong chuỗi. Giả sử ta muốn thực hiện phép tính toán trong f-string:
name = "Lindsay Ballantyne"
print(f"Tên của bạn là {name}. Sinh nhật tới bạn sẽ {22 + 1} tuổi.")
Kết quả:
Tên của bạn là Lindsay Ballantyne. Sinh nhật tới bạn sẽ 23 tuổi.
Ta đã thực hiện được phép tính toán. Điều này vì biểu thức trong chuỗi literal được đánh giá tại runtime (thời gian chạy), và là một phần của chương trình chính. Phép tính là 22 + 1, được thực hiện bằng cách đặt nó trong ngoặc nhọn.
f-string nhiều dòng trong Python
Cú pháp f-string hỗ trợ định dạng chuỗi nhiều dòng. Bạn có thể tạo f-string nhiều dòng bằng cách đặt nhiều f-string trong ngoặc nhọn.
Giả sử ta muốn định dạng giá trị trong chuỗi nhiều dòng:
name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
age = 22
profile = (
f"Tên: {name} \n"
f"Email: {email} \n"
f"Tuổi: {age} \n"
)
print(profile)
Kết quả:
Tên: Lindsay Ballantyne Email: lindsay.ballantyne@gmail.com Tuổi: 22
Ta khai báo ba biến — name, email, age — lưu thông tin người dùng. Sau đó tạo chuỗi nhiều dòng được định dạng bằng các biến đó.
Chú ý: trong mã, ta đặt chữ f trước mỗi dòng trong chuỗi nhiều dòng. Nếu không đặt f trước mỗi dòng, cú pháp f-string sẽ không hoạt động.
Các ký tự đặc biệt trong f-string
Vẫn còn một điều bạn cần biết trước khi dùng f-string: cách xử lý ký tự đặc biệt.
Dưới đây là một số quy tắc cần nhớ:
Dấu nháy
Khi dùng f-strings, bạn có thể dùng dấu nháy trong biểu thức. Nhưng cần dùng loại dấu nháy khác với loại dùng bên ngoài f-string. Ví dụ:
print(f"{'Đang là thứ Năm!'}")
Kết quả:
Đang là thứ Năm
Ta dùng dấu nháy đơn (') bên trong f-string (được biểu diễn bằng ngoặc nhọn), và dấu nháy kép (") để biểu diễn chuỗi toàn bộ.
Dictionary (Từ điển)
Để tham chiếu giá trị trong dictionary Python, bạn cần dùng dấu nháy. Hãy chắc chắn dùng loại dấu nháy khác nhau khi tham chiếu từng giá trị.
Ví dụ làm việc với dictionary và f-string:
user = {"name": "Lindsay Ballantyne", "email": "lindsay.ballantyne@gmail.com"}
print(f"Xin chào, {user['name']}. Địa chỉ email của bạn là: {user['email']}.")
Kết quả:
Xin chào, Lindsay Ballantyne. Địa chỉ email của bạn là: lindsay.ballantyne@gmail.com
Lưu ý: khi tham chiếu giá trị trong dictionary, ta dùng dấu nháy đơn (''). f-string chính dùng dấu nháy kép (""). Điều này ngăn chặn lỗi định dạng chuỗi.
Ngoặc nhọn
Để dùng ngoặc nhọn trong f-string, bạn cần dùng ngoặc nhọn kép. Ví dụ:
print(f"{{Đây là một test}}")
Kết quả:
{Đây là một test}
Bạn thấy chỉ một cặp ngoặc xuất hiện trong kết quả. Điều này vì một cặp ngoặc được dùng bởi f-string để biểu thị việc định dạng chuỗi sẽ xảy ra. Vì vậy, chỉ cặp ngoặc bên trong mới xuất hiện.
Comment (Chú thích)
Khi viết f-string, f-string không nên chứa dấu thăng (#). Dấu này biểu thị comment trong Python, và sẽ gây lỗi cú pháp.
Nếu muốn dùng dấu thăng trong chuỗi, hãy chắc chắn nó được định dạng trong chuỗi, không phải trong f-string. Ví dụ:
user_id = "202"
print(f"ID người dùng: #{user_id}")
Kết quả:
ID người dùng: #202
Ta thêm dấu thăng trước ngoặc nhọn của f-string để chắc chắn nó xuất hiện đúng trong chuỗi.
Kết luận
Python f-strings là công cụ mới cho phép bạn đặt biểu thức bên trong chuỗi literal.
Ưu điểm của f-strings so với các tùy chọn trước đây là rất nhiều. f-strings dễ đọc hơn. Chúng hoạt động tốt ngay cả khi bạn làm việc với nhiều giá trị.
Hướng dẫn này đã thảo luận, kèm ví dụ, so sánh f-strings với các tùy chọn định dạng chuỗi khác, và cách dùng f-strings trong mã. Bây giờ bạn đã có kiến thức để bắt đầu làm việc với Python f-strings như một nhà phát triển chuyên nghiệp!
Nếu muốn tìm hiểu thêm về Python, hãy xem hướng dẫn "Cách học Python" của chúng tôi.