# 직렬화(Serialization) 직렬화란 파이썬 객체를 바이트 스트림으로 변환하는 과정을 의미합니다. 이렇게 변환된 데이터는 파일로 저장하거나 네트워크를 통해 전송할 수 있으며, 필요할 때 다시 원래의 객체로 복원할 수 있습니다. 마치 객체를 압축하여 박스에 담아 옮기는 것과 비슷합니다. ## 직렬화 과정 * 객체 생성: 파이썬에서 사용할 객체를 생성합니다. * 직렬화: pickle 모듈 등을 사용하여 객체를 바이트 스트림으로 변환합니다. * 저장 또는 전송: 변환된 바이트 스트림을 파일로 저장하거나 네트워크를 통해 전송합니다. * 역직렬화: 저장된 바이트 스트림을 다시 원래의 객체로 복원합니다. ## 직렬화에 사용되는 모듈 * pickle: 파이썬 객체를 바이너리 형태로 직렬화하는 가장 일반적인 모듈입니다. 간단하고 사용하기 쉽지만, 보안 문제가 있을 수 있습니다. * json: JSON 형식으로 직렬화합니다. 사람이 읽을 수 있는 형식이며, 다양한 언어에서 지원됩니다. * marshal: 파이썬 객체를 바이트 스트림으로 변환하는 간단한 모듈입니다. * shelve: 파이썬 객체를 파일에 저장하고 불러오는 데 특화된 모듈입니다. ## pickle ```python import pickle class Person: def __init__(self, name, age): self.name = name self.age = age # 객체 생성 person = Person("Alice", 30) # 직렬화 (파일 저장) with open('person.pkl', 'wb') as f: pickle.dump(person, f) # 역직렬화 (파일 읽기) with open('person.pkl', 'rb') as f: loaded_person = pickle.load(f) print(loaded_person.name) # 출력: Alice print(loaded_person.age) # 출력: 30 ```