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:

python
nama = "Budi"
umur = 25

print(f"Halo, {nama}!")
print(f"{nama} berumur {umur} tahun.")

Output yang Dihasilkan:

text
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():

python
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:

text
Total: 45000
Nama lengkap: Budi Santoso
Panjang nama: 12

Perhatikan tiga baris di atas:

  1. Baris 4 ({harga * jumlah}): interpreter mengalikan 15000 * 3 terlebih dahulu, lalu hasil 45000 disisipkan ke string.
  2. Baris 5 ({'Budi ' + 'Santoso'}): penggabungan string di dalam kurung kurawal memakai kutip tunggal agar tidak bertabrakan dengan kutip ganda pembungkus f-string.
  3. Baris 6 ({len('Budi Santoso')}): fungsi len() 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:

python
harga = 15000
jumlah = 3
total = harga * jumlah

print(f"{harga=}, {jumlah=}")
print(f"{total=}")

Output yang Dihasilkan:

text
harga=15000, jumlah=3
total=45000

Alih-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:

python
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:

text
|      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 specArtiContoh hasil
:>10rata kanan, lebar 10 karakter`
:<10rata kiri, lebar 10 karakter`
:^10rata tengah, lebar 10 karakter`
:.2fdesimal dengan 2 angka di belakang koma87.57
:,pemisah ribuan2,500,000
:.1%persen dengan 1 desimal87.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().