Dua generasi formatting sebelumnya menempatkan nilai di luar template, sehingga string dan variabelnya terpisah jauh. Sejak Python 3.6, Python menyediakan formatted string literal — f-string — yang menempatkan nilai tepat di titik kemunculannya di dalam string. Hari ini f-string adalah cara standar komunitas Python menyusun teks, dan sepanjang sisa Course Python kita akan memakainya hampir di setiap contoh kode.
Dasar f-String #
f-string adalah string biasa yang diawali huruf f (atau F) sebelum tanda kutip. Di dalam string, setiap pasangan kurung kurawal {...} dievaluasi sebagai ekspresi Python, dan hasil evaluasinya diubah menjadi string:
nama = "Budi"
umur = 25
print(f"Halo, {nama}!")
print(f"{nama} berumur {umur} tahun.")Output yang Dihasilkan:
Halo, Budi!
Budi berumur 25 tahun.Interpreter Python membaca {nama} pada baris 3, mencari nilai variabel nama, lalu menyisipkan Budi ke posisi tersebut — semua terjadi pada saat baris tersebut dieksekusi, bukan saat file dibaca. Karena nilai dibaca saat runtime, variabel harus sudah ada sebelum f-string dievaluasi.
Untuk mencetak kurung kurawal literal di dalam f-string, gandakan karakter tersebut: f"{{}}" menghasilkan teks {}.
Ekspresi di Dalam Kurung Kurawal #
Isi kurung kurawal tidak terbatas pada nama variabel; setiap ekspresi valid boleh dituliskan: operasi matematika, pemanggilan method, penggabungan string, sampai fungsi bawaan seperti len():
harga = 15000
jumlah = 3
print(f"Total: {harga * jumlah}")
print(f"Nama lengkap: {'Budi ' + 'Santoso'}")
print(f"Panjang nama: {len('Budi Santoso')}")Output yang Dihasilkan:
Total: 45000
Nama lengkap: Budi Santoso
Panjang nama: 12Perhatikan tiga baris di atas:
- Baris 4 (
{harga * jumlah}): interpreter mengalikan15000 * 3terlebih dahulu, lalu hasil45000disisipkan ke string. - Baris 5 (
{'Budi ' + 'Santoso'}): penggabungan string di dalam kurung kurawal memakai kutip tunggal agar tidak bertabrakan dengan kutip ganda pembungkus f-string. - Baris 6 (
{len('Budi Santoso')}): fungsilen()dijalankan lebih dulu dan hasilnya,12, menjadi bagian dari string.
Debugging Cepat dengan = #
Python 3.8 menambahkan satu fitur kecil yang sangat menghemat waktu debugging: menuliskan tanda = setelah ekspresi di dalam kurung kurawal. f-string akan mencetak nama ekspresi, tanda sama dengan, lalu nilainya:
harga = 15000
jumlah = 3
total = harga * jumlah
print(f"{harga=}, {jumlah=}")
print(f"{total=}")Output yang Dihasilkan:
harga=15000, jumlah=3
total=45000Alih-alih menulis print("harga:", harga) yang memisahkan label dan nilai, penulisan f"{harga=}" menjaga keduanya selalu sinkron — label otomatis mengikuti nama variabel yang ditulis di dalam kode.
Format Spec #
Sama seperti str.format(), f-string menerima format spec setelah tanda titik dua di dalam kurung kurawal: {nilai:spec}. Spesifikasi ini mengatur perataan, jumlah desimal, pemisah ribuan, hingga format persen:
nama = "Budi"
nilai = 87.5678
pendapatan = 2500000
rasio = 0.876
print(f"|{nama:>10}|")
print(f"|{nama:<10}|")
print(f"Nilai: {nilai:.2f}")
print(f"Pendapatan: {pendapatan:,}")
print(f"Rasio: {rasio:.1%}")Output yang Dihasilkan:
| Budi|
|Budi |
Nilai: 87.57
Pendapatan: 2,500,000
Rasio: 87.6%Ringkasan spec yang dipakai di atas dan varian yang paling sering dibutuhkan:
| Format spec | Arti | Contoh hasil |
|---|---|---|
:>10 | rata kanan, lebar 10 karakter | ` |
:<10 | rata kiri, lebar 10 karakter | ` |
:^10 | rata tengah, lebar 10 karakter | ` |
:.2f | desimal dengan 2 angka di belakang koma | 87.57 |
:, | pemisah ribuan | 2,500,000 |
:.1% | persen dengan 1 desimal | 87.6% |
Spec :.1% melakukan dua hal sekaligus: mengalikan nilai dengan 100 lalu menempelkan tanda % di belakangnya — nilai 0.876 tampil sebagai 87.6%.
f-string menutup trilogi string formatting dengan sintaks paling ringkas. Selanjutnya kita beralih ke dua operasi tekstual yang menjadi jantung pengolahan data: memecah string dengan split() dan merakitnya kembali dengan join().