Traffine I/O

Bahasa Indonesia

2022-07-10

Posisi Garis Bawah dalam Python

Pendahuluan

Dalam bahasa pemrograman Python, karakter garis bawah (_) memiliki posisi yang penting karena sering digunakan dalam berbagai konteks dengan arti yang berbeda-beda. Artikel ini akan membahas berbagai kasus penggunaan garis bawah dalam Python.

Garis Bawah Tunggal (_)

Dalam Python, garis bawah tunggal (_) sering digunakan sebagai variabel yang sederhana dalam pemrograman. Biasanya disebut sebagai variabel "throwaway" karena tujuan utamanya adalah untuk menampung nilai yang tidak akan digunakan lagi. Meskipun namanya tampak sepele, penggunaannya berperan penting dalam menulis kode Python yang bersih dan efisien.

Berikut beberapa contoh kasus penggunaan garis bawah sebagai variabel "throwaway":

Mengabaikan Nilai

Ketika membongkar nilai, Anda mungkin menemukan nilai yang tidak diperlukan. Daripada membuat variabel yang tidak berguna dan hanya membuat namespace menjadi berantakan, Anda dapat menetapkan nilai yang tidak diinginkan ke dalam garis bawah.

python
a, _, c = (1, 2, 3 )
print(a, c) # Outputs: 1 3

Pada contoh ini, tuple (1, 2, 3) dibongkar menjadi a, _, dan c. Nilai kedua tidak dibutuhkan, sehingga ditetapkan ke garis bawah.

Melakukan Perulangan Sejumlah Kali Tertentu

Dalam perulangan, garis bawah sering digunakan ketika variabel perulangan itu sendiri tidak digunakan dalam perulangan. Ini terutama umum pada perulangan yang digunakan untuk mengulang blok kode sejumlah kali tertentu.

python
for _ in range(3):
    print("Hello, World!") # Outputs "Hello, World!" three times

Pada contoh ini, perulangan hanya mencetak "Hello, World!" sebanyak tiga kali. Variabel perulangan sebenarnya tidak relevan, sehingga garis bawah digunakan.

Bekerja dengan Interpreter Interaktif

Dalam interpreter interaktif Python, variabel garis bawah secara otomatis diberi nilai hasil dari operasi terakhir. Hal ini berguna ketika bekerja di shell Python atau notebook Jupyter.

python
>>> 10 + 20
30
>>> _
30

Pada contoh ini, hasil penjumlahan 10 dan 20 adalah 30. Ketika _ dimasukkan, ia mengambil hasil operasi terakhir.

Garis Bawah Tunggal sebagai Awalan (_var)

Dalam Python, variabel, fungsi, atau metode yang dimulai dengan garis bawah tunggal adalah sinyal yang jelas bagi programmer lain bahwa elemen tersebut dimaksudkan untuk penggunaan internal. Ini tidak membatasi akses seperti 'private' pada bahasa seperti Java atau C++, tetapi berfungsi sebagai pengingat untuk menghindari akses langsung.

Variabel dan Metode dalam Kelas

Ketika garis bawah tunggal digunakan sebagai awalan untuk variabel atau metode dalam kelas, itu menjadi konvensi bahwa elemen-elemen ini dimaksudkan untuk penggunaan internal dalam kelas. Namun, elemen-elemen ini masih dapat diakses dan dimodifikasi di luar kelas.

Berikut contoh bagaimana ini bisa diterapkan pada praktik:

python
class KelasRahasiaSaya:
    def __init__(self):
        self._atribut_rahasia = 42

    def _metode_rahasia(self):
        print("Ini adalah metode internal!")

Pada contoh ini, _atribut_rahasia dan _metode_rahasia dimaksudkan untuk penggunaan internal dalam kelas KelasRahasiaSaya. Namun Python tidak menerapkan batasan apa pun, sehingga elemen-elemen ini masih dapat diakses dari objek kelas.

python
obj = MySecretClass()
print(obj._secret_attribute)  # Outputs: 42
obj._secret_method()  # Outputs: "This is an internal method!"

Fungsi

Sama seperti dengan atribut dan metode kelas, garis bawah tunggal di awalan nama fungsi menunjukkan bahwa fungsi itu untuk penggunaan internal. Ini biasanya berarti bahwa fungsi itu tidak merupakan bagian dari API publik modul, dan oleh karena itu, tidak boleh diakses langsung.

python
def _fungsi_internal():
    print("Fungsi ini untuk penggunaan internal.")

Pada contoh ini, _fungsi_internal adalah fungsi yang dimaksudkan untuk digunakan secara internal, dalam modul di mana ia didefinisikan. Seperti pada atribut dan metode kelas, Python tidak menerapkan batasan ini, sehingga fungsi masih bisa dipanggil seperti biasa.

Garis Bawah Tunggal sebagai Suffix (var_)

Dalam Python, Anda mungkin menemukan variabel, fungsi, atau nama metode dengan garis bawah di akhir (misalnya, var_). Ini kurang umum dibandingkan dengan beberapa pola garis bawah lainnya, tetapi memegang tujuan penting: memungkinkan Anda menggunakan kata kunci Python sebagai nama variabel.

Python memiliki sekelompok kata kunci yang tidak dapat digunakan sebagai nama variabel karena memiliki makna khusus dalam sintaks bahasa tersebut. Ini termasuk kata-kata seperti class, def, for, if, dan while, antara lain.

Namun, terkadang mungkin berguna untuk menggunakan kata kunci Python sebagai nama variabel karena jelas dan akurat merepresentasikan apa yang dimaksudkan oleh variabel. Dalam hal tersebut, Anda dapat menambahkan garis bawah di akhir kata kunci untuk menggunakan kata kunci sebagai nama variabel.

Berikut contoh penggunaannya:

python
# This would cause a syntax error:
# class = 'Computer Science 101'

# But this is perfectly valid:
class_ = 'Computer Science 101'

Pada contoh ini, class_ digunakan sebagai nama variabel untuk menampung sebuah string yang merepresentasikan nama kelas. class sebenarnya adalah nama variabel yang paling intuitif digunakan, tetapi karena itu adalah kata kunci yang terdapat dalam Python, maka tidak dapat digunakan sebagai nama variabel. Maka, digunakanlah nama class_.

Perlu diingat, penggunaan garis bawah di akhir untuk menghindari konflik penamaan dengan kata kunci Python hanya merupakan konvensi, bukan aturan yang diterapkan oleh bahasa Python. Seperti banyak konvensi dalam Python, ini dirancang untuk meningkatkan keterbacaan dan keberlanjutan kode.

Perlu dicatat juga bahwa meskipun konvensi ini memungkinkan Anda menghindari konflik dengan kata kunci Python, ini tidak membantu dengan konflik dengan nama fungsi atau metode bawaan. Misalnya, list_ = [1, 2, 3] adalah kode Python yang valid, tetapi mungkin membingungkan karena list adalah fungsi Python bawaan. Secara umum, sebaiknya hindari nama yang dapat disalahartikan dengan fungsi atau tipe bawaan, bahkan jika Anda menggunakan garis bawah di akhir.

Dua Garis Bawah di Awal (__var)

Dalam Python, jika sebuah variabel, fungsi, atau metode dimulai dengan dua garis bawah (__var), itu memicu mekanisme yang disebut "name mangling". Ini berbeda dengan awalan satu garis bawah (_var). Name mangling adalah cara Python mengubah nama variabel untuk membuatnya lebih sulit membuat subclass yang secara tidak sengaja mengganti metode dan atribut pribadi.

Mari kita bahas lebih dalam tentang konsep name mangling dan bagaimana itu digunakan di Python.

Name Mangling

Name mangling adalah mekanisme yang mengubah nama variabel sedemikian rupa sehingga sulit untuk mengambil atau mengubahnya secara tidak sengaja. Ini adalah cara untuk memastikan "privasi" variabel atau metode, meskipun Python tidak mendukung konsep variabel atau metode yang sepenuhnya pribadi.

Ketika sebuah variabel atau metode dimulai dengan dua garis bawah, Python mengubah namanya untuk menyertakan nama kelas sebagai awalan, yang membuatnya lebih sulit untuk diakses atau dimodifikasi secara tidak sengaja.

Berikut contoh penggunaannya:

python
class MyClass:
    def __init__(self):
        self.__private_var = "I am private"

Variabel __var_privat tunduk pada name mangling, yang membuatnya tampak berbeda di luar kelas.

python
obj = MyClass()
print(obj.__private_var)  # Outputs: AttributeError: 'MyClass' object has no attribute '__private_var'

Catatan Mengenai Name Mangling

Meskipun name mangling dapat memberikan tingkat privasi, itu tidak sepenuhnya terjamin. Nama yang dimangling masih dapat diakses secara langsung jika Anda tahu sintaksnya. Berikut adalah cara untuk mengakses variabel "pribadi" dari contoh sebelumnya:

python
print(obj._MyClass__private_var)  # Outputs: "I am private"

Seperti yang dapat Anda lihat, Python telah menambahkan _MyClass (garis bawah diikuti oleh nama kelas) sebelum __private_var.

Perlu dicatat juga bahwa name mangling tidak terjadi jika terdapat dua garis bawah di awal dan akhir nama variabel atau metode (misalnya, __var__). Pola ini digunakan untuk metode khusus, yang sering disebut sebagai metode "dunder".

Dua Garis Bawah di Awal dan Akhir (__var__)

Metode Python yang dikelilingi oleh dua garis bawah di awal dan akhir (__var__) dikenal sebagai metode "dunder" (singkatan dari "double underscore"). Metode ini memiliki arti khusus dan tidak tunduk pada name mangling. Mereka juga dikenal sebagai "metode ajaib" karena sifat khusus mereka.

Metode dunder ini digunakan untuk mengimplementasikan perilaku tertentu di Python, biasanya meniru tipe yang sudah ada. Beberapa metode dunder yang paling sering digunakan termasuk __init__, __str__, __len__, dan __getitem__.

Garis Bawah di Tengah Nama (var_var)

Garis bawah digunakan dalam nama untuk meningkatkan keterbacaan, terutama dengan nama variabel, fungsi, atau metode yang terdiri dari beberapa kata. Ini disebut kasus ular, dan umum digunakan di Python.

python
def hitung_nilai_rata_rata():
    ...

Dalam fungsi ini, garis bawah memisahkan kata-kata hitung, nilai, dan rata-rata, sehingga lebih mudah dibaca.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!