Apa Itu Dynamic Typing pada Python


Python dikenal sebagai salah satu bahasa yang menerapkan dynamic typing, yakni bahasa pemrograman yang hanya mengetahui tipe variabel saat program berjalan dan dilakukan assignment. 

Tentu saja, pada Python juga umumnya tidak ada deklarasi variabel, hanya berupa assignment statement. Cara ini adalah salah satu bentuk simplifikasi alokasi memori dalam bahasa Python. 
Anda dapat selalu memeriksa tipe variabel yang digunakan dengan fungsi type() dan memastikan tipe variabel yang tepat dengan metode isinstance(). Anda akan mempelajari lebih jauh mengenai fungsi pada modul Fungsi dan mengenai class pada modul Pemrograman Berorientasi Objek.
Contoh:

  1. # Ketika kita memberikan nilai 6 pada variabel x

  2. x = 6  

  3. print(type(x))

  4. # Kemudian Berikan string “hello” pada variabel x di baris selanjutnya

  5. x = 'hello'

  6. print(type(x))


Output:
<class 'int'>
<class 'str'>


Dynamic Typing pada Python

Setiap bahasa pemrograman tentunya memiliki beberapa tipe atau kategori obyek dan variabel yang dapat digunakan serta bagaimana kategori tersebut diperlakukan (behavior, fungsi, dsb). Contohnya, sebuah kategori bertipe “numerik” dengan “86” adalah sebuah obyek dari tipe numerik tersebut. Pada bahasa Python, interpreter hanya mengartikan setiap baris kode saat dijalankan, dan sepanjang daur (cycle) program, dimungkinkan adanya perubahan dalam tipe/kategori variabel. Bagian ini hanya memberikan gambaran mengenai dinamisme tipe, Anda akan belajar lebih jauh tentang kondisional pada modul Percabangan. Contoh dinamisme Python dapat dilihat pada contoh berikut:

  1. if False:

  2.     1 + "two"  # This line never runs, so no TypeError is raised

  3. else:

  4.     1 + 2


Output:
3
Padahal jika kita jalankan 1 + "two":

  1. 1 + "two" 


Output:
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Pada contoh pertama, cabang 1+ “two” tidak pernah dioperasikan. Sehingga kode tidak akan diperiksa. Namun pada contoh kedua, pernyataan tersebut menimbulkan TypeError karena Anda tidak dapat menggabungkan Integer dan String. Bagian ini hanya memberikan gambaran tentang operasi antar tipe, Anda akan mempelajari lebih jauh tentang kesalahan (Error) di modul Penanganan Kesalahan.
Berikut, adalah contoh untuk assignment:

  1. thing = "Hello"

  2. type(thing)


Output:
<class 'str'>

  1. thing = 28.1

  2. type(thing)


Output:
<class 'float'>
Seperti dijelaskan sebelumnya, fungsi type() dapat digunakan untuk mengidentifikasi tipe variabel pada saat ia diperiksa. Contoh di atas menunjukkan bahwa tipe dari variabel “thing” dapat berubah dan Python dapat menerima perubahan ini pada saat program dijalankan
Python menggunakan dynamic typing sebagai opsi utama, namun sejak Python 3.6 sudah mendukung juga static typing. Pada PEP 484 diperkenalkan type hints, yang memungkinkan Anda untuk melakukan static type checking pada Python. 
Static typing seperti didefinisikan di PEP 484526544560, dan 563 dibangun bertahap di atas runtime Python yang ada dan dibatasi oleh perilaku sintaksis dan runtime yang ada. Tidak seperti pada bahasa lain, type hints tidak menjadikan sebuah variabel menjadi static typed, melainkan memberikan saran tipe. Terkait static type hints, dapat dibaca pada PEP 484.

Duck Typing

Python juga sering diafiliasikan dengan metode duck typing, yang merefleksikan pada frase: 
if it walks like a duck and it quacks like a duck, then it must be a duck
(Jika sesuatu berjalan seperti bebek dan bersuara seperti bebek, maka kemungkinan besar ia adalah bebek). 
Duck typing adalah sebuah konsep, tipe atau kelas dari sebuah obyek tidak lebih penting daripada metode yang menjadi perilakunya. Duck typing ini tidak terkait langsung dengan dynamic typing atau static typing, ini hanya memberikan keleluasaan pada developer untuk tidak perlu mencemaskan tentang tipe atau kelas dari sebuah obyek, yang lebih penting adalah kemampuan melakukan operasinya. Sehingga untuk memeriksa dan mengetahui tipe sebuah obyek, Anda cukup memastikan metode/fungsi/behavior dari obyek tersebut. Misalnya fungsi len() untuk mengetahui panjang string, yang tidak berlaku pada variabel numerik (misalnya integer).

  1. x=333

  2. len(x)


Output:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()

*

Post a Comment (0)
Previous Post Next Post