Một ví dụ sử dụng:
>>> s = 'Hello world'
>>> t = buffer(s, 6, 5)
>>> t
<read-only buffer for 0x10064a4b0, size 5, offset 6 at 0x100634ab0>
>>> print t
world
Bộ đệm trong trường hợp này là một chuỗi con, bắt đầu từ vị trí 6 với độ dài 5 và nó không chiếm thêm dung lượng lưu trữ - nó tham chiếu một lát của chuỗi.
Điều này không hữu ích cho các chuỗi ngắn như thế này, nhưng nó có thể cần thiết khi sử dụng lượng lớn dữ liệu. Ví dụ này sử dụng một biến đổi bytearray
:
>>> s = bytearray(1000000) # a million zeroed bytes
>>> t = buffer(s, 1) # slice cuts off the first byte
>>> s[1] = 5 # set the second element in s
>>> t[0] # which is now also the first element in t!
'\x05'
Điều này có thể rất hữu ích nếu bạn muốn có nhiều hơn một lượt xem trên dữ liệu và không muốn (hoặc không thể) giữ nhiều bản sao trong bộ nhớ.
Lưu ý rằng buffer
đã được thay thế bằng tên tốt hơn memoryview
trong Python 3, mặc dù bạn có thể sử dụng trong Python 2.7.
Cũng lưu ý rằng bạn không thể triển khai giao diện bộ đệm cho các đối tượng của riêng mình mà không đào sâu vào API C, tức là bạn không thể làm điều đó bằng Python thuần túy.
s[6:11]
không chiếm thêm dung lượng lưu trữ, tôi có sai không?