문자열과 바이트의 경계
str.encode('utf-8')는 글자를 바이트로, bytes.decode('utf-8')는 바이트를 글자로 바꿔. 인코딩을 양쪽에서 합의하지 않으면 같은 바이트도 다른 글자로 해석되거나 오류가 나.
bytes는 불변인 숫자 시퀀스야
bytes의 각 원소는 0부터 255까지의 정수라서 b'abc'[0]은 97을 돌려줘. 한 바이트짜리 bytes가 필요하면 [0:1]처럼 슬라이스해야 해. b'' 리터럴은 ASCII 문자와 이스케이프를 직접 담아.
점점 채울 때는 bytearray
bytearray는 바꿀 수 있는 바이트 시퀀스라서 패킷이나 파일 내용을 여러 조각으로 조립할 때 유용해. 완성 뒤 bytes로 고정할 수 있어.
복사하지 않고 바라보는 memoryview
memoryview는 같은 버퍼를 다른 창으로 보여줘. 큰 바이트 배열의 일부를 슬라이스해도 내용을 복사하지 않으므로 파서나 반복 처리에서 메모리와 시간을 아낄 수 있어. 원본의 수명과 가변성은 그대로 공유해.