Python - Serialisasi

Halo di sana, ahli penyusun Python masa depan! Hari ini, kita akan menyelam ke dunia yang menarik serialisasi. Jangan khawatir jika kata ini terdengar menakutkan – pada akhir pelajaran ini, kamu akan melakukan serialisasi data seperti seorang profesional! Mari kita melakukan perjalanan yang menarik ini bersama-sama.

Python - Serialization

Serialisasi di Python

Bayangkan jika kamu sedang untuk membuat persediaan untuk perjalanan. Kamu perlu untuk memasukkan semua barang milikmu ke atas rak penyimpanan. Itu hampir seperti apa yang dilakukan serialisasi dengan data – ia mengemasnya dengan rapih sehingga bisa disimpan atau dikirim ke tempat lain. Dalam istilah Python, serialisasi adalah proses pengubahan struktur data kompleks menjadi format yang dapat dengan mudah disimpan atau dikirim.

Mengapa ini penting, kamu tanya? Baiklah, katakanlah kamu telah membuat program Python yang luar biasa yang menghasilkan daftar film kesukaan kamu. Kamu ingin menyimpan daftar ini sehingga kamu dapat menggunakannya nanti atau mengirimkannya ke seorang teman. Serialisasi membolehkan kamu untuk melakukan hal itu!

Pustaka Serialisasi di Python

Python, sebagai bahasa yang dermawan, menyediakan beberapa pustaka untuk serialisasi. Ini seperti memiliki jenis rak penyimpanan berbeda untuk perjalanan berbeda. Mari kita lihat yang paling umum:

Pustaka Keterangan
Pickle Modul serialisasi bawaan Python
JSON JavaScript Object Notation, sangat baik untuk aplikasi web
YAML YAML Ain't Markup Language, format yang dapat dibaca manusia

Kita akan menjelajahi masing-masing dari ini secara rinci, tetapi mari kita mulai dengan yang paling spesifik Python: Pickle.

Penggunaan Modul Pickle untuk Serialisasi

Pickle adalah modul yang pertama kali dipilih Python untuk serialisasi. Ini seperti pembersih tangan Swiss Army – serba guna dan terbina langsung ke dalam Python. Mari lihat bagaimana ia bekerja:

import pickle

# Daftar film kesukaan kita
favorite_movies = ['The Matrix', 'Star Wars', 'The Lord of the Rings']

# Serialisasi daftar
with open('movies.pkl', 'wb') as file:
pickle.dump(favorite_movies, file)

print("Daftar film telah di-serialisasi!")

Dalam contoh ini, kita sedang "membuatkan pickle" daftar film kesukaan kita. Fungsi dump() melakukan pekerjaan berat di sini, mengubah daftar kita menjadi format binari dan menyimpannya ke dalam file bernama 'movies.pkl'.

Sekarang, mari lihat bagaimana kita dapat mendapatkan daftar kita kembali:

# Deserialisasi daftar
with open('movies.pkl', 'rb') as file:
loaded_movies = pickle.load(file)

print("Daftar film yang di-deserialisasi:", loaded_movies)

Voila! Kita telah berhasil untuk membuka rak penyimpanan kita (atau dalam kasus ini, gelas pickle kita). Fungsi load() membaca file binari dan mengubahnya kembali menjadi objek Python.

Protokol Pickle

Pickle menggunakan sesuatu yang disebut "protokol" untuk menentukan bagaimana meng-serialisasi objek. Pada dasarnya, ini adalah metode pengemasan berbeda untuk rak penyimpanan kamu. Python 3 mendukung 5 protokol (0 hingga 4), dengan nomor yang lebih tinggi adalah lebih efisien tetapi kemungkinan kurang kompatibel dengan versi Python yang lama.

import pickle

data = {'name': 'Alice', 'age': 30}

# Menggunakan protokol 4 (paling efisien di Python 3)
serialized = pickle.dumps(data, protocol=4)
print("Data yang di-serialisasi:", serialized)

# Deserialisasi
deserialized = pickle.loads(serialized)
print("Data yang di-deserialisasi:", deserialized)

Dalam contoh ini, kita menggunakan dumps() untuk serialisasi ke string bukannya ke file, dan menentukan protokol 4 untuk efisiensi maksimum.

Kelas Pickler dan Unpickler

Untuk lebih kontrol atas proses serialisasi, Python menyediakan kelas Pickler dan Unpickler. Ini seperti memiliki asisten pribadi pengemasan kamu:

import pickle

class PickleHelper:
def __init__(self, filename):
self.filename = filename

def save_data(self, data):
with open(self.filename, 'wb') as file:
pickler = pickle.Pickler(file)
pickler.dump(data)

def load_data(self):
with open(self.filename, 'rb') as file:
unpickler = pickle.Unpickler(file)
return unpickler.load()

# Penggunaan
helper = PickleHelper('data.pkl')
helper.save_data(['apple', 'banana', 'cherry'])
loaded_data = helper.load_data()
print("Data yang dimuat:", loaded_data)

Kelas PickleHelper ini menyediakan pendekatan yang lebih berorientasi objek ke serialisasi, yang dapat sangat berguna dalam projek yang lebih besar.

Menggunakan Kelas Custom untuk Menghasilkan Objek Pickle

Sekarang, mari kita mengambil hal yang sedikit lebih tingkat – menghasilkan objek kelas custom. Bayangkan jika kita memiliki kelas Person:

import pickle

class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def greet(self):
return f"Halo, nama saya {self.name} dan saya berumur {self.age} tahun."

# Membuat objek Person
alice = Person("Alice", 30)

# Menghasilkan objek Pickle
with open('person.pkl', 'wb') as file:
pickle.dump(alice, file)

# Menghasilkan objek dari Pickle
with open('person.pkl', 'rb') as file:
loaded_alice = pickle.load(file)

print(loaded_alice.greet())  # Output: Halo, nama saya Alice dan saya berumur 30 tahun.

Apakah itu keren? Kita baru saja mengemas seorang orang ke dalam file dan membuka kembali mereka!

Penggunaan JSON untuk Serialisasi

Meskipun Pickle sangat baik untuk serialisasi spesifik Python, terkadang kita perlu berinteraksi dengan bahasa atau sistem lain. Itu tempat JSON menjadi sangat berguna. Ini seperti bahasa universal untuk data:

import json

# Data yang akan di-serialisasi
data = {
"name": "Bob",
"age": 35,
"city": "New York",
"hobbies": ["membaca", "renang", "koding"]
}

# Serialisasi ke JSON
json_string = json.dumps(data, indent=4)
print("String JSON:", json_string)

# Deserialisasi dari JSON
parsed_data = json.loads(json_string)
print("Data yang diurai:", parsed_data)

JSON sangat berguna untuk aplikasi web dan API, karena itu sangat didukung oleh platform yang berbeda.

Penggunaan YAML untuk Serialisasi

Terakhir tapi tidak terkecil, mari kita lihat YAML. YAML dikenal karena keterbacaannya bagi manusia, membuatnya favorit untuk file konfigurasi:

import yaml

# Data yang akan di-serialisasi
data = {
"name": "Charlie",
"age": 40,
"pets": ["anjing", "kucing", "ikan"],
"address": {
"street": "123 Jalan Utama",
"city": "Kota Apa saja"
}
}

# Serialisasi ke YAML
yaml_string = yaml.dump(data, default_flow_style=False)
print("String YAML:\n", yaml_string)

# Deserialisasi dari YAML
parsed_data = yaml.safe_load(yaml_string)
print("Data yang diurai:", parsed_data)

Format YAML mudah dipandang, membuatnya sangat baik untuk data yang manusia perlu membaca atau mengedit secara rutin.

Dan itu adalah, para pelajar tercinta! Kita telah membuka konsep serialisasi di Python, dari dasar-dasar Pickle ke versatilitas JSON dan keterbacaan YAML. Ingat, setiap metode memiliki kekuatan masing-masing, jadi pilih satu yang paling sesuai dengan kebutuhanmu.

Pada saat kita menutup pelajaran ini, saya ingat sebuah kutipan oleh ilmu komputer yang besar Alan Kay: "Hal yang sederhana harus sederhana, hal yang kompleks harus mungkin." Serialisasi di Python mengutip prinsip ini dengan indah, menawarkan solusi sederhana untuk tugas sehari-hari sementara memungkinkan pengelolaan data kompleks saat diperlukan.

Terus latihan, tetap curious, dan happy coding!

Credits: Image by storyset