Ada 4 cara utama untuk melakukan string formatting di Python. Masing-masing memiliki kelebihan dan kekurangan, serta penggunaannya tergantung pada kebutuhan dan versi Python yang digunakan.

  1. Printf Style Formatting (Docs)
  2. String Formatting (str.format) (Docs)
  3. String Interpolation / f-Strings (Python 3.6+) (Docs)
  4. Template Strings (Docs)

1. Printf Style Formatting

String dalam Python memiliki operasi bawaan unik yang dapat diakses dengan operator % (persen). Cara ini mirip dengan fungsi printf di bahasa C, sehingga mudah dikenali jika sudah familiar dengan C.

name = 'Rizki'
print('Halo %s!' % name)
# Halo Rizki!

Format specifier seperti %s untuk string, %d untuk integer, dan %f untuk float digunakan untuk menentukan tipe data yang akan dimasukkan.

name = 'Rizki'
job = 'Mahasiswa'
print('Perkenalkan nama saya %s, dan saya adalah seorang %s!' % (name, job))
# Perkenalkan nama saya Rizki, dan saya adalah seorang Mahasiswa!

Kelebihan:

  • Sederhana dan mudah digunakan untuk kasus sederhana.
  • Familiar bagi pengguna C.

Kekurangan:

  • Kurang fleksibel untuk format kompleks.
  • Rentan error jika urutan argumen tidak sesuai.

2. String Formatting (str.format)

Python 2.7 dan 3.x memperkenalkan metode .format() yang lebih fleksibel dan powerful dibandingkan operator %.

name = 'Rizki'
print('Halo {}!'.format(name))
# Halo Rizki!

Bisa juga menggunakan penamaan argumen, sehingga urutan tidak menjadi masalah:

weather = 'Dingin'
food = 'Mie Kuah'
print('Cuaca hari ini {weather}. Sepertinya enak makan {food}!'.format(weather=weather, food=food))
# Cuaca hari ini Dingin. Sepertinya enak makan Mie Kuah!

Kelebihan:

  • Lebih fleksibel dan mudah dibaca.
  • Mendukung penamaan argumen dan pengaturan format angka.

Kekurangan:

  • Sintaks sedikit lebih panjang dibandingkan f-Strings.

3. String Interpolation / f-Strings (Python 3.6+)

Mulai Python 3.6, diperkenalkan f-Strings yang sangat powerful dan mudah digunakan. Cukup tambahkan huruf f di depan string, lalu gunakan {} untuk menyisipkan variabel atau ekspresi Python.

name = 'Rizki'
print(f'Halo nama saya {name}!')
# Halo nama saya Rizki!

f-Strings juga mendukung ekspresi langsung di dalam kurung kurawal:

a = 5
b = 10
print(f'Lima ditambah dengan Sepuluh sama dengan {a + b}.')
# Lima ditambah dengan Sepuluh sama dengan 15.

Bisa juga digunakan dalam fungsi:

def sayHello(name, question):
    return f'Halo {name}!. Bagaimana {question}?'

result = sayHello('Rizki', 'kabarnya hari ini')
# Halo Rizki!. Bagaimana kabarnya hari ini?

Kelebihan:

  • Sangat mudah dibaca dan ditulis.
  • Mendukung ekspresi Python langsung di dalam string.
  • Performa lebih baik dibandingkan .format().

Kekurangan:

  • Hanya tersedia di Python 3.6 ke atas.

4. Template Strings

Selain tiga cara di atas, Python juga menyediakan Template Strings melalui modul string. Cocok digunakan jika ingin membatasi eksekusi kode di dalam string (misal pada aplikasi yang menerima input dari user).

from string import Template

template = Template('Halo $name!')
print(template.substitute(name='Rizki'))
# Halo Rizki!

Kelebihan:

  • Lebih aman untuk input dari user.
  • Sintaks sederhana.

Kekurangan:

  • Tidak se-powerful f-Strings atau .format().

Kesimpulan

Dari keempat metode di atas, f-Strings adalah yang paling direkomendasikan untuk Python 3.6 ke atas karena sintaksnya yang ringkas, mudah dibaca, dan performa yang baik. Namun, pemilihan metode tetap tergantung pada kebutuhan dan kompatibilitas versi Python yang digunakan.