@@ -2264,8 +2264,8 @@ The :mod:`array` module supports efficient storage of basic data types like
2264
2264
2265
2265
.. _typebytes :
2266
2266
2267
- Bytes
2268
- -----
2267
+ Bytes Objects
2268
+ -------------
2269
2269
2270
2270
.. index :: object: bytes
2271
2271
@@ -2274,65 +2274,67 @@ binary protocols are based on the ASCII text encoding, bytes objects offer
2274
2274
several methods that are only valid when working with ASCII compatible
2275
2275
data and are closely related to string objects in a variety of other ways.
2276
2276
2277
- Firstly, the syntax for bytes literals is largely the same as that for string
2278
- literals, except that a ``b `` prefix is added:
2277
+ .. class :: bytes([source[, encoding[, errors]]])
2279
2278
2280
- * Single quotes: ``b'still allows embedded "double" quotes' ``
2281
- * Double quotes: ``b"still allows embedded 'single' quotes" ``.
2282
- * Triple quoted: ``b'''3 single quotes''' ``, ``b"""3 double quotes""" ``
2279
+ Firstly, the syntax for bytes literals is largely the same as that for string
2280
+ literals, except that a ``b `` prefix is added:
2283
2281
2284
- Only ASCII characters are permitted in bytes literals (regardless of the
2285
- declared source code encoding). Any binary values over 127 must be entered
2286
- into bytes literals using the appropriate escape sequence.
2282
+ * Single quotes: `` b'still allows embedded "double" quotes' ``
2283
+ * Double quotes: `` b"still allows embedded 'single' quotes" ``.
2284
+ * Triple quoted: `` b'''3 single quotes''' ``, `` b"""3 double quotes""" ``
2287
2285
2288
- As with string literals, bytes literals may also use a `` r `` prefix to disable
2289
- processing of escape sequences. See :ref: ` strings ` for more about the various
2290
- forms of bytes literal, including supported escape sequences .
2286
+ Only ASCII characters are permitted in bytes literals (regardless of the
2287
+ declared source code encoding). Any binary values over 127 must be entered
2288
+ into bytes literals using the appropriate escape sequence .
2291
2289
2292
- While bytes literals and representations are based on ASCII text, bytes
2293
- objects actually behave like immutable sequences of integers, with each
2294
- value in the sequence restricted such that ``0 <= x < 256 `` (attempts to
2295
- violate this restriction will trigger :exc: `ValueError `. This is done
2296
- deliberately to emphasise that while many binary formats include ASCII based
2297
- elements and can be usefully manipulated with some text-oriented algorithms,
2298
- this is not generally the case for arbitrary binary data (blindly applying
2299
- text processing algorithms to binary data formats that are not ASCII
2300
- compatible will usually lead to data corruption).
2290
+ As with string literals, bytes literals may also use a ``r `` prefix to disable
2291
+ processing of escape sequences. See :ref: `strings ` for more about the various
2292
+ forms of bytes literal, including supported escape sequences.
2301
2293
2302
- In addition to the literal forms, bytes objects can be created in a number of
2303
- other ways:
2294
+ While bytes literals and representations are based on ASCII text, bytes
2295
+ objects actually behave like immutable sequences of integers, with each
2296
+ value in the sequence restricted such that ``0 <= x < 256 `` (attempts to
2297
+ violate this restriction will trigger :exc: `ValueError `. This is done
2298
+ deliberately to emphasise that while many binary formats include ASCII based
2299
+ elements and can be usefully manipulated with some text-oriented algorithms,
2300
+ this is not generally the case for arbitrary binary data (blindly applying
2301
+ text processing algorithms to binary data formats that are not ASCII
2302
+ compatible will usually lead to data corruption).
2304
2303
2305
- * A zero-filled bytes object of a specified length: ``bytes(10) ``
2306
- * From an iterable of integers: ``bytes(range(20)) ``
2307
- * Copying existing binary data via the buffer protocol: ``bytes(obj) ``
2304
+ In addition to the literal forms, bytes objects can be created in a number of
2305
+ other ways:
2308
2306
2309
- Also see the :ref: `bytes <func-bytes >` built-in.
2307
+ * A zero-filled bytes object of a specified length: ``bytes(10) ``
2308
+ * From an iterable of integers: ``bytes(range(20)) ``
2309
+ * Copying existing binary data via the buffer protocol: ``bytes(obj) ``
2310
2310
2311
- Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal
2312
- numbers are a commonly used format for describing binary data. Accordingly,
2313
- the bytes type has an additional class method to read data in that format:
2311
+ Also see the :ref: `bytes <func-bytes >` built-in.
2314
2312
2315
- .. classmethod :: bytes.fromhex(string)
2313
+ Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal
2314
+ numbers are a commonly used format for describing binary data. Accordingly,
2315
+ the bytes type has an additional class method to read data in that format:
2316
2316
2317
- This :class: `bytes ` class method returns a bytes object, decoding the
2318
- given string object. The string must contain two hexadecimal digits per
2319
- byte, with ASCII spaces being ignored.
2317
+ .. classmethod :: fromhex(string)
2320
2318
2321
- >>> bytes .fromhex(' 2Ef0 F1f2 ' )
2322
- b'.\xf0\xf1\xf2'
2319
+ This :class: `bytes ` class method returns a bytes object, decoding the
2320
+ given string object. The string must contain two hexadecimal digits per
2321
+ byte, with ASCII whitespace being ignored.
2323
2322
2324
- A reverse conversion function exists to transform a bytes object into its
2325
- hexadecimal representation.
2323
+ >>> bytes .fromhex( ' 2Ef0 F1f2 ' )
2324
+ b'.\xf0\xf1\xf2'
2326
2325
2327
- .. method :: bytes.hex()
2326
+ A reverse conversion function exists to transform a bytes object into its
2327
+ hexadecimal representation.
2328
2328
2329
- Return a string object containing two hexadecimal digits for each
2330
- byte in the instance.
2329
+ .. method :: hex()
2331
2330
2332
- >>> b ' \xf0\xf1\xf2 ' .hex()
2333
- 'f0f1f2'
2331
+ Return a string object containing two hexadecimal digits for each
2332
+ byte in the instance.
2334
2333
2335
- .. versionadded :: 3.5
2334
+ >>> b ' \xf0\xf1\xf2 ' .hex()
2335
+ 'f0f1f2'
2336
+
2337
+ .. versionadded :: 3.5
2336
2338
2337
2339
Since bytes objects are sequences of integers (akin to a tuple), for a bytes
2338
2340
object *b *, ``b[0] `` will be an integer, while ``b[0:1] `` will be a bytes
@@ -2362,45 +2364,49 @@ Bytearray Objects
2362
2364
.. index :: object: bytearray
2363
2365
2364
2366
:class: `bytearray ` objects are a mutable counterpart to :class: `bytes `
2365
- objects. There is no dedicated literal syntax for bytearray objects, instead
2366
- they are always created by calling the constructor:
2367
+ objects.
2367
2368
2368
- * Creating an empty instance: ``bytearray() ``
2369
- * Creating a zero-filled instance with a given length: ``bytearray(10) ``
2370
- * From an iterable of integers: ``bytearray(range(20)) ``
2371
- * Copying existing binary data via the buffer protocol: ``bytearray(b'Hi!') ``
2369
+ .. class :: bytearray([source[, encoding[, errors]]])
2372
2370
2373
- As bytearray objects are mutable, they support the
2374
- :ref: `mutable <typesseq-mutable >` sequence operations in addition to the
2375
- common bytes and bytearray operations described in :ref: `bytes-methods `.
2371
+ There is no dedicated literal syntax for bytearray objects, instead
2372
+ they are always created by calling the constructor:
2376
2373
2377
- Also see the :ref: `bytearray <func-bytearray >` built-in.
2374
+ * Creating an empty instance: ``bytearray() ``
2375
+ * Creating a zero-filled instance with a given length: ``bytearray(10) ``
2376
+ * From an iterable of integers: ``bytearray(range(20)) ``
2377
+ * Copying existing binary data via the buffer protocol: ``bytearray(b'Hi!') ``
2378
2378
2379
- Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal
2380
- numbers are a commonly used format for describing binary data. Accordingly,
2381
- the bytearray type has an additional class method to read data in that format:
2379
+ As bytearray objects are mutable, they support the
2380
+ :ref: ` mutable < typesseq-mutable >` sequence operations in addition to the
2381
+ common bytes and bytearray operations described in :ref: ` bytes-methods `.
2382
2382
2383
- .. classmethod :: bytearray.fromhex(string)
2383
+ Also see the :ref: ` bytearray < func- bytearray>` built-in.
2384
2384
2385
- This :class: ` bytearray ` class method returns bytearray object, decoding
2386
- the given string object. The string must contain two hexadecimal digits
2387
- per byte, with ASCII spaces being ignored.
2385
+ Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal
2386
+ numbers are a commonly used format for describing binary data. Accordingly,
2387
+ the bytearray type has an additional class method to read data in that format:
2388
2388
2389
- >>> bytearray .fromhex(' 2Ef0 F1f2 ' )
2390
- bytearray(b'.\xf0\xf1\xf2')
2389
+ .. classmethod :: fromhex(string)
2391
2390
2392
- A reverse conversion function exists to transform a bytearray object into its
2393
- hexadecimal representation.
2391
+ This :class: `bytearray ` class method returns bytearray object, decoding
2392
+ the given string object. The string must contain two hexadecimal digits
2393
+ per byte, with ASCII whitespace being ignored.
2394
2394
2395
- .. method :: bytearray.hex()
2395
+ >>> bytearray .fromhex(' 2Ef0 F1f2 ' )
2396
+ bytearray(b'.\xf0\xf1\xf2')
2396
2397
2397
- Return a string object containing two hexadecimal digits for each
2398
- byte in the instance .
2398
+ A reverse conversion function exists to transform a bytearray object into its
2399
+ hexadecimal representation .
2399
2400
2400
- >>> bytearray (b ' \xf0\xf1\xf2 ' ).hex()
2401
- 'f0f1f2'
2401
+ .. method :: hex()
2402
+
2403
+ Return a string object containing two hexadecimal digits for each
2404
+ byte in the instance.
2402
2405
2403
- .. versionadded :: 3.5
2406
+ >>> bytearray (b ' \xf0\xf1\xf2 ' ).hex()
2407
+ 'f0f1f2'
2408
+
2409
+ .. versionadded :: 3.5
2404
2410
2405
2411
Since bytearray objects are sequences of integers (akin to a list), for a
2406
2412
bytearray object *b *, ``b[0] `` will be an integer, while ``b[0:1] `` will be
0 commit comments