Hướng dẫn f-string python là gì
Contents Show
Bài hướng dẫn này chỉ ra cách định dạng chuỗi trong Python bằng f-string. Python f-string là cú pháp Python mới nhất để thực hiện định dạng chuỗi. f-string được support từ Python 3.6. f-string cung cấp cách định dạng chuỗi nhanh hơn, dễ đọc hơn, ngắn gọn hơn và ít mắc lỗi hơn trong Python. f-string có tiền tố f và sử dụng dấu ngoặc {} để đánh giá giá trị. Định dạng stringVí dụ sau tổng hợp các cách định dạng string trong Python name = 'Peter' age = 23 print('%s is %d years old' % (name, age)) print('{} is {} years old'.format(name, age)) print(f'{name} is {age} years old') Trong ví dụ, chúng ta định dạng string với 2 biến name và age. print('%s is %d years old' % (name, age)) Đây là cách định dạng chuỗi cũ trong Python, sử dụng toán tử % và định dạng chuỗi classic chỉ định như %s và %d. print('{} is {} years old'.format(name, age)) Kể từ Python 3.0, hàm format () đã được giới thiệu để cung cấp các tùy chọn định dạng nâng cao. print(f'{name} is {age} years old') f-string được support từ Python 3.6, f-string có tiền tố f và sử dụng dấu ngoặc {} để đánh giá giá trị. C:\Programs\Python\Python37>python.exe formatting_strings.py Peter is 23 years old Peter is 23 years old Peter is 23 years old Kết quả cả 3 cách định dạng string đều cho kết quả giống nhau. Biểu thức f-stringChúng ta add biểu thức trong ngoặc {} bags = 3 apples_in_bag = 12 print(f'There are total of {bags * apples_in_bag} apples') Biểu thức bags*apples_in_bag được đặt trong ngoặc {} C:\Programs\Python\Python37>python.exe expressions.py There are total of 36 apples f-string dictionariesChúng ta có thể sử dụng dictionary trong f-string user = {'name': 'John Doe', 'occupation': 'gardener'} print(f"{user['name']} is a {user['occupation']}") Ví dụ này đánh giá dictionary trong f-string C:\Programs\Python\Python37>python.exe dicts.py John Doe is a gardener f-string debugKể từ version Python 3.8 support tự đánh giá giá trị biểu thức bằng toán tử = import math x = 0.8 print(f'{math.cos(x) = }') print(f'{math.sin(x) = }') Ví dụ hiển thị
giá trị hàm cos và sin ở mode debug. C:\Programs\Python\Python38-32>python.exe debug.py math.cos(x) = 0.6967067093471654 math.sin(x) = 0.7173560908995228 f-string multilineChúng ta có thể làm việc với multi string name = 'John Doe' age = 32 occupation = 'gardener' msg = ( f'Name: {name}\n' f'Age: {age}\n' f'Occupation: {occupation}' ) print(msg) Ví dụ minh họa định dạng string nhiều dòng. f-string được đặt giữa ngoặc (); mỗi string được đi kèm kí tự f. C:\Programs\Python\Python37>python.exe multiline.py Name: John Doe Age: 32 Occupation: gardener f-string gọi hàmChúng ta có thể gọi hàm trong f-string def mymax(x, y): return x if x > y else y a = 3 b = 4 print(f'Max of {a} and {b} is {mymax(a, b)}') Ví dụ minh họa
cách gọi hàm trong f-string C:\Programs\Python\Python37>python.exe call_function.py Max of 3 and 4 is 4 f-string objectf-string chấp nhận object; các object phải có hoặc là __str__() hoặc __repr__() class User: def __init__(self, name, occupation): self.name = name self.occupation = occupation def __repr__(self): return f"{self.name} is a {self.occupation}" u = User('John Doe', 'gardener') print(f'{u}') Ví dụ đánh giá object trong f-string C:\Programs\Python\Python37>python.exe objects.py John Doe is a gardener f-string kí tự escapeVí dụ sau minh họa cách add thêm kí tự escape trong f-string print(f'Python uses {{}} to evaludate variables in f-strings') print(f'This was a \'great\' film') Để thêm kí tự {}, chúng ta double kí tự đó. Để thêm kí tự
nháy đơn ‘, chúng ta thêm kí tự \ đi kèm kí tự ‘ C:\Programs\Python\Python37>python.exe escaping.py Python uses {} to evaludate variables in f-strings This was a 'great' film f-string định dạng date timeVí dụ sau minh họa định dạng date time import datetime now = datetime.datetime.now() print(f'{now:%Y-%m-%d %H:%M}') Hiển thị thời gian hiện tại trên PC. Kết quả như sau: C:\Programs\Python\Python37>python.exe format_datetime.py 2020-08-30 20:23 f-string định dạng floatGiá trị dấu phẩy động có hậu tố f. Chúng tôi cũng có thể chỉ định độ chính xác: số chữ số thập phân. Độ chính xác là một giá
trị nằm ngay sau ký tự dấu chấm. val = 12.3 print(f'{val:.2f}') print(f'{val:.5f}') Ví dụ in ra định dạng dấu phẩy động. Kết quả in ra số phẩy động với độ chính xác lần lượt 2 và 5 chữ số ở phần thập phân. C:\Programs\Python\Python37>python.exe format_floats.py 12.30 12.30000 f-string định dạng độ rộngf-string có thể fill space hoặc giá trị khác nếu số lượng kí tự ít hơn độ rộng chỉ định. Xem ví dụ sau for x in range(1, 11): print(f'{x:02} {x*x:3} {x*x*x:4}') Ví dụ in ra ba cột. Mỗi cột có chiều rộng được xác định trước. Kết quả C:\Programs\Python\Python37>python.exe format_width.py 01 1 1 02 4 8 03 9 27 04 16 64 05 25 125 06 36 216 07 49 343 08 64 512 09 81 729 10 100 1000 f-string căn lềTheo mặc định, các chuỗi được căn bên trái. Chúng ta có thể sử dụng ký tự> để căn các chuỗi ở bên phải. Ký tự> theo
sau ký tự dấu hai chấm. s1 = 'a' s2 = 'ab' s3 = 'abc' s4 = 'abcd' print(f'{s1:>10}') print(f'{s2:>10}') print(f'{s3:>10}') print(f'{s4:>10}') Chúng tôi có bốn chuỗi có độ dài khác nhau. Chúng tôi đặt chiều rộng của đầu ra là 10 ký tự. Các giá trị được căn lề bên phải. C:\Programs\Python\Python37>python.exe justify.py a ab abc abcd f-string biểu diễn sốCó thể biểu diễn số dưới dạng: cơ số 10, octo (cơ số 8), hexa (cơ số 16),… a = 300 # hexadecimal print(f"{a:x}") # octal print(f"{a:o}") # scientific print(f"{a:e}") Ví dụ in một giá trị với 3 cơ số C:\Programs\Python\Python37>python.exe format_notations.py 12c 454 3.000000e+02 |