String Formatting Python

Ada 4 cara utama untuk menggunakan string formatting dengan Python.

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

1. Printf Style Formatting

String dalam Python memiliki operasi bawaan unik yang dapat diakses dengan operator % (persen). Memungkinkan melakukan pemformatan posisi sederhana dengan sangat mudah. Jika pernah menggunakan fungsi printf di C, mungkin akan langsung mengenalinya.

name = 'Rizki'

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

Saya menggunakan penentu format %s di sini untuk memberi tahu Python tempat untuk mengganti nilai nama, yang direpresentasikan sebagai string.

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!

Cara ini membuat string format lebih mudah dimaintain dan lebih mudah dimodifikasi di masa mendatang.

Kelemahannya adalah teknik ini membutuhkan lebih banyak pengetikan dan memastikan nilai yang dirujuk itu benar urutannya.

2. String Formatting (str.format)

Python versi 3 memperkenalkan cara baru untuk melakukan pemformatan string yang juga kemudian di-porting kembali ke Python 2.7. Pemformatan string ini menghilangkan sintaks khusus operator % (persen) dan membuat sintaks untuk pemformatan string lebih teratur.

Pemformatan sekarang ditangani dengan memanggil .format() pada objek string. Contohnya seperti kode di bawah ini :

name = 'Rizki'

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

Atau bisa merujuk ke substitusi variabel dengan nama. Ini adalah fitur yang cukup bagus karena memungkinkan untuk mengatur ulang tampilan tanpa mengubah argumen yang diteruskan ke format() :

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!

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

Python versi 3.6 menambahkan string formatting yang disebut literals atau f-Strings. Menggunakan ekspresi Python yang disematkan di dalam sebuah string. Contohnya seperti kode di bawah ini :

name = 'Rizki'

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

Seperti yang bisa dilihat di atas, untuk formatting ini diawali dengan huruf f oleh karena itu disebut f-Strings. Sintaks pemformatan ini sangat powerful. Atau bahkan dapat melakukan proses aritmatika seperti kode di bawah ini :

a = 5
b = 10

print(f'Lima ditambah dengan Sepuluh sama dengan {a + b}.')
# Lima ditambah dengan Sepuluh sama dengan 15.
def sayHello(name, question):
    return f'Halo {name}!. Bagaimana {question}?'

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

Dari 4 string formatting di atas, saya lebih sering menggunakan String Interpolation / f-Strings untuk pemformatan string ketika menggunakan Python. Tapi tergantung kasus, tidak selamanya juga saya menggunakan cara nomor 3.