Float to bytes in python
It depends what you want, and what you are going to do with it. If all you want is a bytearray then: Show
Where
EDIT: This gives (for value 5.1):
However, CPython uses the C type
Gives: The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some collection classes are mutable. The methods that add, subtract, or rearrange their members in place, and don’t return a specific item, never return the collection instance itself but Some operations are supported by several
object types; in particular, practically all objects can be compared, tested for truth value, and converted to a string (with the 4.1. Truth Value Testing¶Any object can be tested for truth value, for use in an
By default, an object is considered true unless its class defines either a
Operations and built-in functions that have a Boolean result always return 4.2. Boolean Operations — and, or, not¶These are the Boolean operations, ordered by ascending priority:
Notes:
4.3. Comparisons¶There are eight comparison operations in Python. They all have the same priority (which is higher than that of the Boolean operations). Comparisons can be chained arbitrarily; for example, This table summarizes the comparison operations:
Objects of different types, except different numeric types, never compare equal. Furthermore, some types (for example, function objects) support only a degenerate notion of comparison where any two objects of that type are unequal. The Non-identical instances of a class normally compare as non-equal unless the class defines the Instances of a class cannot be ordered with respect to other
instances of the same class, or other types of object, unless the class defines enough of the methods The behavior of the Two more operations with the same syntactic priority, 4.4. Numeric Types — int, float, complex¶There are three distinct numeric types: integers, floating point numbers, and complex numbers. In addition, Booleans are a subtype of integers.
Integers have unlimited precision. Floating point numbers are usually implemented using Numbers are created by numeric literals or as the result of built-in functions and operators. Unadorned integer literals (including hex, octal and binary numbers) yield integers. Numeric literals containing a decimal point or an exponent sign yield floating point numbers. Appending Python fully supports mixed arithmetic: when a binary arithmetic operator has operands of different numeric types, the operand with the “narrower” type is widened to that of the other, where integer is narrower than floating point, which is narrower than complex. Comparisons between numbers of mixed type use the same rule.
[2] The constructors All numeric types (except complex) support the following operations, sorted by ascending priority (all numeric operations have a higher priority than comparison operations):
Notes:
All
For additional numeric operations see the 4.4.1. Bitwise Operations on Integer Types¶Bitwise operations only make sense for integers. Negative numbers are treated as their 2’s complement value (this assumes that there are enough bits so that no overflow occurs during the operation). The priorities of the binary bitwise operations are all lower than the numeric operations and
higher than the comparisons; the unary operation This table lists the bitwise operations sorted in ascending priority:
Notes:
4.4.2. Additional Methods on Integer Types¶The int type implements the int. bit_length ()¶Return the number of bits necessary to represent an integer in binary, excluding the sign and leading zeros: >>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6 More precisely, if Equivalent to: def bit_length(self): s = bin(self) # binary representation: bin(-37) --> '-0b100101' s = s.lstrip('-0b') # remove leading zeros and minus sign return len(s) # len('100101') --> 6 New in version 3.1. int. to_bytes (length,
byteorder, *, signed=False)¶Return an array of bytes representing an integer. >>> (1024).to_bytes(2, byteorder='big') b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() + 7) // 8, byteorder='little') b'\xe8\x03' The integer is represented using length bytes. An The byteorder argument determines the byte order used to represent the integer. If byteorder is The signed argument determines whether two’s complement is used to represent the integer. If signed is New in version 3.2. classmethodint. from_bytes (bytes, byteorder, *, signed=False)¶Return the integer represented by the given array of bytes. >>> int.from_bytes(b'\x00\x10', byteorder='big') 16 >>> int.from_bytes(b'\x00\x10', byteorder='little') 4096 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680 The argument bytes must either be a bytes-like object or an iterable producing bytes. The byteorder argument determines the byte order used to represent the integer. If byteorder is The signed argument indicates whether two’s complement is used to represent the integer. New in version 3.2. 4.4.3. Additional Methods on Float¶The float type implements the float. as_integer_ratio ()¶Return a pair of integers whose ratio is exactly equal to the original float and with a positive denominator. Raises
float. is_integer ()¶Return >>> (-2.0).is_integer() True >>> (3.2).is_integer() False Two methods support conversion to and from hexadecimal strings. Since Python’s floats are stored internally as binary numbers, converting a float to or from a decimal string usually involves a small rounding error. In contrast, hexadecimal strings allow exact representation and specification of floating-point numbers. This can be useful when debugging, and in numerical work. float. hex ()¶Return a representation of a
floating-point number as a hexadecimal string. For finite floating-point numbers, this representation will always include a leading float. fromhex (s)¶Class method to return the float represented by a hexadecimal string s. The string s may have leading and trailing whitespace. Note that A hexadecimal string takes the form: [sign] ['0x'] integer ['.' fraction] ['p' exponent] where
the optional Note that the exponent is written in decimal rather than
hexadecimal, and that it gives the power of 2 by which to multiply the coefficient. For example, the hexadecimal string >>> float.fromhex('0x3.a7p10') 3740.0 Applying the reverse conversion to >>> float.hex(3740.0) '0x1.d380000000000p+11' 4.4.4. Hashing of numeric types¶For numbers CPython implementation detail: Currently, the prime used is Here are the rules in detail:
To clarify the above rules, here’s some example Python code, equivalent to the built-in hash, for computing the hash of a rational number, import sys, math def hash_fraction(m, n): """Compute the hash of a rational number m / n. Assumes m and n are integers, with n positive. Equivalent to hash(fractions.Fraction(m, n)). """ P = sys.hash_info.modulus # Remove common factors of P. (Unnecessary if m and n already coprime.) while m % P == n % P == 0: m, n = m // P, n // P if n % P == 0: hash_value = sys.hash_info.inf else: # Fermat's Little Theorem: pow(n, P-1, P) is 1, so # pow(n, P-2, P) gives the inverse of n modulo P. hash_value = (abs(m) % P) * pow(n, P - 2, P) % P if m < 0: hash_value = -hash_value if hash_value == -1: hash_value = -2 return hash_value def hash_float(x): """Compute the hash of a float x.""" if math.isnan(x): return sys.hash_info.nan elif math.isinf(x): return sys.hash_info.inf if x > 0 else -sys.hash_info.inf else: return hash_fraction(*x.as_integer_ratio()) def hash_complex(z): """Compute the hash of a complex number z.""" hash_value = hash_float(z.real) + sys.hash_info.imag * hash_float(z.imag) # do a signed reduction modulo 2**sys.hash_info.width M = 2**(sys.hash_info.width - 1) hash_value = (hash_value & (M - 1)) - (hash_value & M) if hash_value == -1: hash_value = -2 return hash_value 4.5. Iterator Types¶Python supports a concept of iteration over containers. This is implemented using two distinct methods; these are used to allow user-defined classes to support iteration. Sequences, described below in more detail, always support the iteration methods. One method needs to be defined for container objects to provide iteration support: container. __iter__ ()¶Return an iterator object. The object is
required to support the iterator protocol described below. If a container supports different types of iteration, additional methods can be provided to specifically request iterators for those iteration types. (An example of an object supporting multiple forms of iteration would be a tree structure which supports both breadth-first and depth-first traversal.) This method corresponds to the The iterator objects themselves are required to support the following two methods, which together form the iterator protocol: iterator. __iter__ ()¶Return
the iterator object itself. This is required to allow both containers and iterators to be used with the iterator. __next__ ()¶Return the next item from the
container. If there are no further items, raise the Python defines several iterator objects to support iteration over general and specific sequence types, dictionaries, and other more specialized forms. The specific types are not important beyond their implementation of the iterator protocol. Once an iterator’s 4.6. Sequence Types — list, tuple, range¶There are three basic sequence types: lists, tuples, and range objects. Additional sequence types tailored for processing of binary data and text strings are described in dedicated sections. 4.6.1. Common Sequence Operations¶The operations in the following table are supported by most sequence types, both mutable and immutable. The This table lists the sequence operations sorted in ascending priority. In the table, s and t are sequences of the same type, n, i, j and k are integers and x is an arbitrary object that meets any type and value restrictions imposed by s. The
Sequences of the same type also support comparisons. In particular, tuples and lists are compared lexicographically by comparing corresponding elements. This means that to compare equal, every element must compare equal and the two sequences must be of the same type and have the same length. (For full details see Comparisons in the language reference.) Notes:
4.6.2. Immutable Sequence Types¶The only operation that immutable sequence types generally implement that is not also implemented by mutable sequence types is support for the This support allows immutable sequences, such as Attempting to hash an immutable sequence that contains unhashable values will result
in 4.6.3. Mutable Sequence Types¶The operations in the following table are defined on mutable sequence types. The
In the table s is an instance of a mutable sequence type, t is any iterable object and x is an arbitrary object that meets any type and value restrictions imposed by s (for
example,
Notes:
4.6.4. Lists¶Lists are mutable sequences, typically used to store collections of homogeneous items (where the precise degree of similarity will vary by application). classlist ([iterable])¶Lists may be constructed in several ways:
The constructor builds a list whose items are the same and in the same order as iterable‘s items. iterable may be either a sequence, a container that supports iteration, or an iterator object. If iterable is already a list, a copy is made and returned, similar to Many other operations also produce lists, including the Lists implement all of the common and mutable sequence operations. Lists also provide the following additional method: sort (*, key=None,
reverse=False)¶This method sorts the list in place, using only
key specifies a function of one argument that is used to extract a comparison key from each list element (for example, The reverse is a boolean value.
If set to This method modifies the sequence in place for economy of space when sorting a large sequence. To remind users that it operates by side effect, it does not return the sorted sequence (use The
CPython implementation detail: While a list is being sorted, the effect of attempting to mutate, or even
inspect, the list is undefined. The C implementation of Python makes the list appear empty for the duration, and raises 4.6.5. Tuples¶Tuples are immutable sequences, typically used to store collections of heterogeneous data (such as the 2-tuples produced by the tuple ([iterable])¶Tuples may be constructed in a number of ways:
The constructor builds a tuple whose items are the same and in the same order as iterable‘s items. iterable may be either a sequence, a container that supports iteration, or an iterator object. If iterable is already a tuple, it is returned unchanged. For example, Note that it is actually the comma which makes a tuple, not the parentheses. The parentheses are optional, except in the empty tuple case, or when they are needed to avoid syntactic ambiguity. For example, Tuples implement all of the common sequence operations. For heterogeneous collections of data where access by name is clearer than access by index,
4.6.6. Ranges¶The range (stop)¶ class range (start, stop[, step])The arguments
to the range constructor must be integers (either built-in For a positive step, the contents of a range For a negative step, the contents of the range are still determined by the formula A range object will be empty if Ranges containing absolute values larger than Range examples: >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> list(range(0, 30, 5)) [0, 5, 10, 15, 20, 25] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(0, -10, -1)) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> list(range(0)) [] >>> list(range(1, 0)) [] Ranges implement all of the common sequence operations except concatenation and repetition (due to the fact that range objects can only represent sequences that follow a strict pattern and repetition and concatenation will usually violate that pattern). start ¶The value of the start parameter (or stop ¶The value of the stop parameter step ¶The value of the step parameter (or The advantage of the Range objects implement the
>>> r = range(0, 20, 2) >>> r range(0, 20, 2) >>> 11 in r False >>> 10 in r True >>> r.index(10) 5 >>> r[5] 10 >>> r[:5] range(0, 10, 2) >>> r[-1] 18 Testing range objects for equality with
Changed in version 3.2: Implement the Sequence ABC. Support slicing and negative indices. Test Changed in version 3.3: Define ‘==’ and ‘!=’ to compare range objects based on the sequence of values they define (instead of comparing based on object identity). New in version 3.3: The See also
4.7. Text Sequence Type — str¶Textual data in Python is handled with
Triple quoted strings may span multiple lines - all associated whitespace will be included in the string literal. String literals that are part of a single expression and have only whitespace
between them will be implicitly converted to a single string literal. That is, See String and Bytes literals for more about the various forms of string literal, including supported escape sequences, and the Strings may also be created from other objects using the
Since there is no separate “character” type, indexing a string produces strings of length 1. That is, for a non-empty string s, There is also no mutable string type, but Changed in version 3.3: For backwards compatibility with the Python 2 series, the str (object='')¶ class str (object=b'', encoding='utf-8', errors='strict')Return a string version of object.
If object is not provided, returns the empty string. Otherwise, the behavior of If neither encoding nor errors is given, If at least one of encoding or errors is given, object should be a bytes-like object (e.g. Passing a >>> str(b'Zoot!') "b'Zoot!'" For more information on the 4.7.1. String Methods¶Strings implement all of the common sequence operations, along with the additional methods described below. Strings also support two styles of string formatting, one providing a large degree of flexibility and customization (see The Text Processing Services section of the standard library covers a number of other modules that provide various text related utilities (including regular expression support in the
str. capitalize ()¶Return a copy of the string with its first character capitalized and the rest lowercased. str. casefold ()¶Return a casefolded copy of the string. Casefolded strings may be used for caseless matching. Casefolding is similar to lowercasing but more aggressive because it is intended to remove all case distinctions in a string. For example, the German lowercase letter The casefolding algorithm is described in section 3.13 of the Unicode Standard. New in version 3.3. str. center (width[, fillchar])¶Return centered in a string of length width. Padding is done using the specified fillchar (default is an ASCII space). The original string is returned if width is less than or equal
to str. count (sub[, start[, end]])¶Return the number of non-overlapping occurrences of substring sub in the range [start, end]. Optional arguments start and end are interpreted as in slice notation. str. encode (encoding="utf-8", errors="strict")¶Return an encoded version of the string as a bytes object. Default encoding is Changed in version 3.1: Support for keyword arguments added. str. endswith (suffix[,
start[, end]])¶Return str. expandtabs (tabsize=8)¶Return a copy of the string where all tab characters are replaced by one or more spaces, depending on the current column and the given tab size. Tab positions occur every tabsize characters (default is
8, giving tab positions at columns 0, 8, 16 and so on). To expand the string, the current column is set to zero and the string is examined character by character. If the character is a tab ( >>> '01\t012\t0123\t01234'.expandtabs() '01 012 0123 01234' >>> '01\t012\t0123\t01234'.expandtabs(4) '01 012 0123 01234' str. find (sub[, start[, end]])¶Return the lowest index in the
string where substring sub is found within the slice Note The >>> 'Py' in 'Python' True str. format (*args, **kwargs)¶Perform a string formatting operation. The string on which this method is called can
contain literal text or replacement fields delimited by braces >>> "The sum of 1 + 2 is {0}".format(1+2) 'The sum of 1 + 2 is 3' See Format String Syntax for a description of the various formatting options that can be specified in format strings. str. format_map (mapping)¶Similar to >>> class Default(dict): ... def __missing__(self, key): ... return key ... >>> '{name} was born in {country}'.format_map(Default(name='Guido')) 'Guido was born in country' New in version 3.2. str. index (sub[, start[,
end]])¶Like str. isalnum ()¶Return true if all characters in the string are alphanumeric and there is at least one character, false otherwise. A character str. isalpha ()¶Return true if all characters in the string are alphabetic and there is at least one character, false otherwise. Alphabetic characters are those characters defined in the Unicode character database as “Letter”, i.e., those with general category property being one of “Lm”, “Lt”, “Lu”, “Ll”, or “Lo”. Note that this is different from the “Alphabetic” property defined in the Unicode Standard. str. isdecimal ()¶Return true if all characters in the string are decimal characters and there is at least one character, false otherwise. Decimal characters are those that can be used to form numbers in base 10, e.g. U+0660, ARABIC-INDIC DIGIT ZERO. Formally a decimal character is a character in the Unicode General Category “Nd”. str. isdigit ()¶Return true if all characters in the string are digits and there is at least one character, false otherwise. Digits include decimal characters and digits that need special handling, such as the compatibility superscript digits. This covers digits which cannot be used to form numbers in base 10, like the Kharosthi numbers. Formally, a digit is a character that has the property value Numeric_Type=Digit or Numeric_Type=Decimal. str. isidentifier ()¶Return true if the string is a valid identifier according to the language definition, section Identifiers and keywords. Use
str. islower ()¶Return true if all cased characters [4] in the string are lowercase and there is at least one cased character, false otherwise. str. isnumeric ()¶Return true if all characters in the string are numeric characters, and there is at least one character, false otherwise. Numeric characters include digit characters, and all characters that have the Unicode numeric value property, e.g. U+2155, VULGAR FRACTION ONE FIFTH. Formally, numeric characters are those with the property value Numeric_Type=Digit, Numeric_Type=Decimal or Numeric_Type=Numeric. str. isprintable ()¶Return true if all characters in the string are printable or the string is empty, false otherwise. Nonprintable characters are those characters
defined in the Unicode character database as “Other” or “Separator”, excepting the ASCII space (0x20) which is considered printable. (Note that printable characters in this context are those which should not be escaped when str. isspace ()¶Return true if there are only whitespace characters in the string and there is at least one character, false otherwise. Whitespace characters are those characters defined in the Unicode character database as “Other” or “Separator” and those with bidirectional property being one of “WS”, “B”, or “S”. str. istitle ()¶Return true if the string is a titlecased string and there is at least one character, for example uppercase characters may only follow uncased characters and lowercase characters only cased ones. Return false otherwise. str. isupper ()¶Return true if all cased characters [4] in the string are uppercase and there is at least one cased character, false otherwise. str. join (iterable)¶Return a string which is the concatenation of the strings in iterable. A str. ljust (width[,
fillchar])¶Return the string left justified in a string of length width. Padding is done using the specified fillchar (default is an ASCII space). The original string is returned if width is less than or equal to str. lower ()¶Return a copy of the string with all the cased characters [4] converted to lowercase. The lowercasing algorithm used is described in section 3.13 of the Unicode Standard. str. lstrip ([chars])¶Return a copy of the string with leading characters removed. The chars argument is a string specifying the set of characters to be removed. If omitted or >>> ' spacious '.lstrip() 'spacious ' >>> 'www.example.com'.lstrip('cmowz.') 'example.com'static str. maketrans (x[, y[, z]])¶This static method returns
a translation table usable for If there is only one argument, it must be a dictionary mapping Unicode ordinals (integers) or characters (strings of length 1) to Unicode ordinals, strings (of arbitrary lengths) or If there are two arguments, they must be strings of equal length, and in the
resulting dictionary, each character in x will be mapped to the character at the same position in y. If there is a third argument, it must be a string, whose characters will be mapped to str. partition (sep)¶Split the string at the first occurrence of sep, and return a 3-tuple containing the part before the separator, the separator itself, and the part after the separator. If the separator is not found, return a 3-tuple containing the string itself, followed by two empty strings. str. replace (old, new[,
count])¶Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. str. rfind (sub[,
start[, end]])¶Return the highest index in the string where substring sub is found, such that sub is contained within str. rindex (sub[, start[, end]])¶Like str. rjust (width[, fillchar])¶Return the string right
justified in a string of length width. Padding is done using the specified fillchar (default is an ASCII space). The original string is returned if width is less than or equal to str. rpartition (sep)¶Split the string at the last occurrence of sep, and return a 3-tuple containing the part before the separator, the separator itself, and the part after the separator. If the separator is not found, return a 3-tuple containing two empty strings, followed by the string itself. str. rsplit (sep=None, maxsplit=-1)¶Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done, the rightmost ones. If sep is not specified or str. rstrip ([chars])¶Return a copy of the string with trailing characters
removed. The chars argument is a string specifying the set of characters to be removed. If omitted or >>> ' spacious '.rstrip() ' spacious' >>> 'mississippi'.rstrip('ipz') 'mississ' str. split (sep=None,
maxsplit=-1)¶Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done (thus, the list will have at most If sep is given, consecutive delimiters are not grouped together and are deemed to delimit empty strings (for example, For example: >>> '1,2,3'.split(',') ['1', '2', '3'] >>> '1,2,3'.split(',', maxsplit=1) ['1', '2,3'] >>> '1,2,,3,'.split(',') ['1', '2', '', '3', ''] If sep is not specified or is For example: >>> '1 2 3'.split() ['1', '2', '3'] >>> '1 2 3'.split(maxsplit=1) ['1', '2 3'] >>> ' 1 2 3 '.split() ['1', '2', '3'] str. splitlines ([keepends])¶Return a list of the lines in the string, breaking at line boundaries. Line breaks are not included in the resulting list unless keepends is given and true. This method splits on the following line boundaries. In particular, the boundaries are a superset of universal newlines.
Changed in version 3.2: For example: >>> 'ab c\n\nde fg\rkl\r\n'.splitlines() ['ab c', '', 'de fg', 'kl'] >>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True) ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] Unlike >>> "".splitlines() [] >>> "One line\n".splitlines() ['One line'] For
comparison, >>> ''.split('\n') [''] >>> 'Two lines\n'.split('\n') ['Two lines', ''] str. startswith (prefix[, start[, end]])¶Return str. strip ([chars])¶Return a copy of the string with the leading and
trailing characters removed. The chars argument is a string specifying the set of characters to be removed. If omitted or >>> ' spacious '.strip() 'spacious' >>> 'www.example.com'.strip('cmowz.') 'example' The outermost leading and trailing chars argument values are stripped from the string. Characters are removed from the leading end until reaching a string character that is not contained in the set of characters in chars. A similar action takes place on the trailing end. For example: >>> comment_string = '#....... Section 3.2.1 Issue #32 .......' >>> comment_string.strip('.#! ') 'Section 3.2.1 Issue #32' str. swapcase ()¶Return a copy of the string with uppercase characters converted to lowercase and vice versa. Note that it
is not necessarily true that str. title ()¶Return a titlecased version of the string where words start with an uppercase character and the remaining characters are lowercase. For example: >>> 'Hello world'.title() 'Hello World' The algorithm uses a simple language-independent definition of a word as groups of consecutive letters. The definition works in many contexts but it means that apostrophes in contractions and possessives form word boundaries, which may not be the desired result: >>> "they're bill's friends from the UK".title() "They'Re Bill'S Friends From The Uk" A workaround for apostrophes can be constructed using regular expressions: >>> import re >>> def titlecase(s): ... return re.sub(r"[A-Za-z]+('[A-Za-z]+)?", ... lambda mo: mo.group(0)[0].upper() + ... mo.group(0)[1:].lower(), ... s) ... >>> titlecase("they're bill's friends.") "They're Bill's Friends." str. translate (table)¶Return a copy of the string in which each character has been mapped through the given translation table. The table must be an object that implements indexing via
You can use See also the str. upper ()¶Return a copy of the string with all the cased characters [4] converted to uppercase. Note that The uppercasing algorithm used is described in section 3.13 of the Unicode Standard. str. zfill (width)¶Return a copy of the string left filled with ASCII
For example: >>> "42".zfill(5) '00042' >>> "-42".zfill(5) '-0042' 4.7.2. printf-style String Formatting¶Note The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and dictionaries correctly). Using the newer
formatted string literals, the String objects have one unique built-in operation: the If format requires a single argument, values may be a single non-tuple object. [5] Otherwise, values must be a tuple with exactly the number of items specified by the format string, or a single mapping object (for example, a dictionary). A conversion specifier contains two or more characters and has the following components, which must occur in this order:
When the right argument is a dictionary (or other mapping type), then the formats in the string must include a parenthesised mapping
key into that dictionary inserted immediately after the >>> print('%(language)s has %(number)03d quote types.' % ... {'language': "Python", "number": 2}) Python has 002 quote types. In this case no The conversion flag characters are:
A length modifier ( The conversion types are:
Notes:
Since Python strings have an explicit length, Changed in version 3.1: 4.8. Binary Sequence Types — bytes, bytearray, memoryview¶The core built-in types for manipulating binary data are
The 4.8.1. Bytes Objects¶Bytes objects are immutable sequences of single bytes. Since many major binary protocols are based on the ASCII text encoding, bytes objects offer several methods that are only valid when working with ASCII compatible data and are closely related to string objects in a variety of other ways. classbytes ([source[, encoding[, errors]]])¶Firstly, the syntax for bytes literals is largely the same as that for string literals, except that a
Only ASCII characters are permitted in bytes literals (regardless of the declared source code encoding). Any binary values over 127 must be entered into bytes literals using the appropriate escape sequence. As with string literals, bytes literals may also use a While bytes literals and representations are based on ASCII text, bytes objects actually behave like immutable sequences of integers, with each value in the sequence restricted such that In addition to the literal forms, bytes objects can be created in a number of other ways:
Also see the bytes built-in. Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal numbers are a commonly used format for describing binary data. Accordingly, the bytes type has an additional class method to read data in that format: classmethodfromhex (string)¶This
>>> bytes.fromhex('2Ef0 F1f2 ') b'.\xf0\xf1\xf2' Changed in version 3.7: A reverse conversion function exists to transform a bytes object into its hexadecimal representation. hex ()¶Return a string object containing two hexadecimal digits for each byte in the instance. >>> b'\xf0\xf1\xf2'.hex() 'f0f1f2' New in version 3.5. Since bytes objects are sequences of integers (akin to a tuple), for a bytes object b, The representation of bytes objects uses the literal format ( Note For Python 2.x users: In the Python 2.x series, a variety of implicit conversions between 8-bit strings (the closest thing 2.x offers to a built-in binary data type) and Unicode strings were permitted. This was a backwards compatibility workaround to account for the fact that Python originally only supported 8-bit text, and Unicode text was a later addition. In Python 3.x, those implicit conversions are gone - conversions between 8-bit binary data and Unicode text must be explicit, and bytes and string objects will always compare unequal. 4.8.2. Bytearray Objects¶
bytearray ([source[, encoding[, errors]]])¶
There is no dedicated literal syntax for bytearray objects, instead they are always created by calling the constructor:
As bytearray objects are mutable, they support the mutable sequence operations in addition to the common bytes and bytearray operations described in Bytes and Bytearray Operations. Also see the bytearray built-in. Since 2 hexadecimal digits correspond precisely to a single byte, hexadecimal numbers are a commonly used format for describing binary data. Accordingly, the bytearray type has an additional class method to read data in that format: classmethodfromhex (string)¶This >>> bytearray.fromhex('2Ef0 F1f2 ') bytearray(b'.\xf0\xf1\xf2') Changed in version 3.7: A reverse conversion function exists to transform a bytearray object into its hexadecimal representation. hex ()¶Return a string object containing two hexadecimal digits for each byte in the instance. >>> bytearray(b'\xf0\xf1\xf2').hex() 'f0f1f2' New in version 3.5. Since bytearray objects are sequences of integers (akin to a list), for a bytearray object b, The representation of bytearray objects uses the bytes literal format ( 4.8.3. Bytes and Bytearray Operations¶Both bytes and bytearray objects support the common sequence operations. They interoperate not just with operands of the same type, but with any bytes-like object. Due to this flexibility, they can be freely mixed in operations without causing errors. However, the return type of the result may depend on the order of operands. Note The methods on bytes and bytearray objects don’t accept strings as their arguments, just as the methods on strings don’t accept bytes as their arguments. For example, you have to write: a = "abc" b = a.replace("a", "f") and: a = b"abc" b = a.replace(b"a", b"f") Some bytes and bytearray operations assume the use of ASCII compatible binary formats, and hence should be avoided when working with arbitrary binary data. These restrictions are covered below. Note Using these ASCII based operations to manipulate binary data that is not stored in an ASCII based format may lead to data corruption. The following methods on bytes and bytearray objects can be used with arbitrary binary data. bytes. count (sub[, start[, end]])¶ bytearray. count (sub[, start[,
end]])¶Return the number of non-overlapping occurrences of subsequence sub in the range [start, end]. Optional arguments start and end are interpreted as in slice notation. The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255. Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence. bytes. decode (encoding="utf-8",
errors="strict")¶ bytearray. decode (encoding="utf-8", errors="strict")¶Return a string decoded from the
given bytes. Default encoding is Note Passing the encoding argument to Changed in version 3.1: Added support for keyword arguments. bytes. endswith (suffix[, start[, end]])¶ bytearray. endswith (suffix[, start[,
end]])¶Return The suffix(es) to search for may be any bytes-like object. bytes. find (sub[, start[,
end]])¶ bytearray. find (sub[, start[,
end]])¶Return the lowest index in the data where the subsequence sub is found, such that sub is contained in the slice The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255. Note The >>> b'Py' in b'Python' True Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence. bytes. index (sub[, start[,
end]])¶ bytearray. index (sub[, start[,
end]])¶Like The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255. Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence. bytes. join (iterable)¶ bytearray. join (iterable)¶Return a bytes or bytearray
object which is the concatenation of the binary data sequences in iterable. A bytes. maketrans (from,
to)¶ static bytearray. maketrans (from, to)¶This static method returns a translation table
usable for New in version 3.1. bytes. partition (sep)¶ bytearray. partition (sep)¶Split the sequence at the first occurrence of sep, and return a 3-tuple containing the part before the separator, the separator itself or its bytearray copy, and the part after the separator. If the separator is not found, return a 3-tuple containing a copy of the original sequence, followed by two empty bytes or bytearray objects. The separator to search for may be any bytes-like object. bytes. replace (old, new[, count])¶ bytearray. replace (old, new[,
count])¶Return a copy of the sequence with all occurrences of subsequence old replaced by new. If the optional argument count is given, only the first count occurrences are replaced. The subsequence to search for and its replacement may be any bytes-like object. Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. rfind (sub[, start[,
end]])¶ bytearray. rfind (sub[, start[,
end]])¶Return the highest index in the sequence where the subsequence sub is found, such that sub is contained within The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255. Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence. bytes. rindex (sub[, start[,
end]])¶ bytearray. rindex (sub[, start[, end]])¶Like The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255. Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence. bytes. rpartition (sep)¶ bytearray. rpartition (sep)¶Split the sequence at the last occurrence of sep, and return a 3-tuple containing the part before the separator, the separator itself or its bytearray copy, and the part after the separator. If the separator is not found, return a 3-tuple containing a copy of the original sequence, followed by two empty bytes or bytearray objects. The separator to search for may be any bytes-like object. bytes. startswith (prefix[, start[, end]])¶ bytearray. startswith (prefix[, start[,
end]])¶Return The prefix(es) to search for may be any bytes-like object. bytes. translate (table, delete=b'')¶
bytearray. translate (table, delete=b'')¶Return a copy of the bytes or bytearray object where all bytes occurring in the optional argument delete are removed, and the remaining bytes have been mapped through the given translation table, which must be a bytes object of length 256. You can use the Set the table argument to >>> b'read this short text'.translate(None, b'aeiou') b'rd ths shrt txt' Changed in version 3.6: delete is now supported as a keyword argument. The following methods on bytes and bytearray objects have default behaviours that assume the use of ASCII compatible binary formats, but can still be used with arbitrary binary data by passing appropriate arguments. Note that all of the bytearray methods in this section do not operate in place, and instead produce new objects. bytes. center (width[,
fillbyte])¶ bytearray. center (width[, fillbyte])¶Return a copy of
the object centered in a sequence of length width. Padding is done using the specified fillbyte (default is an ASCII space). For Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. ljust (width[, fillbyte])¶ bytearray. ljust (width[,
fillbyte])¶Return a copy of the object left justified in a sequence of length width. Padding is done using the specified fillbyte (default is an ASCII space). For Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. lstrip ([chars])¶
bytearray. lstrip ([chars])¶Return a copy of the sequence with specified leading bytes removed. The chars argument is a binary sequence specifying the set of byte values to be removed - the name refers to the fact this method is usually used with
ASCII characters. If omitted or >>> b' spacious '.lstrip() b'spacious ' >>> b'www.example.com'.lstrip(b'cmowz.') b'example.com' The binary sequence of byte values to remove may be any bytes-like object. Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. rjust (width[, fillbyte])¶ bytearray. rjust (width[,
fillbyte])¶Return a copy of the object right justified in a sequence of length width. Padding is done using the specified fillbyte (default is an ASCII space). For Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. rsplit (sep=None,
maxsplit=-1)¶ bytearray. rsplit (sep=None, maxsplit=-1)¶Split the binary sequence into subsequences of the
same type, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done, the rightmost ones. If sep is not specified or bytes. rstrip ([chars])¶
bytearray. rstrip ([chars])¶Return a copy of the sequence with specified trailing bytes removed. The chars argument is a binary sequence specifying the set of byte values to be removed - the name refers to the fact this method is usually used with
ASCII characters. If omitted or >>> b' spacious '.rstrip() b' spacious' >>> b'mississippi'.rstrip(b'ipz') b'mississ' The binary sequence of byte values to remove may be any bytes-like object. Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. split (sep=None, maxsplit=-1)¶ bytearray. split (sep=None,
maxsplit=-1)¶Split the binary sequence into subsequences of the same type, using sep as the delimiter string. If maxsplit is given and non-negative, at most maxsplit splits are done (thus, the list will have at most If sep is given, consecutive delimiters are not grouped together and are deemed to delimit empty subsequences (for example, For example: >>> b'1,2,3'.split(b',') [b'1', b'2', b'3'] >>> b'1,2,3'.split(b',', maxsplit=1) [b'1', b'2,3'] >>> b'1,2,,3,'.split(b',') [b'1', b'2', b'', b'3', b''] If sep is not specified or is For example: >>> b'1 2 3'.split() [b'1', b'2', b'3'] >>> b'1 2 3'.split(maxsplit=1) [b'1', b'2 3'] >>> b' 1 2 3 '.split() [b'1', b'2', b'3'] bytes. strip ([chars])¶
bytearray. strip ([chars])¶Return a copy of the sequence with specified leading and trailing bytes removed. The chars argument is a binary sequence specifying the set of byte values to be removed - the name refers to the fact this method is usually
used with ASCII characters. If omitted or >>> b' spacious '.strip() b'spacious' >>> b'www.example.com'.strip(b'cmowz.') b'example' The binary sequence of byte values to remove may be any bytes-like object. Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. The following methods on bytes and bytearray objects assume the use of ASCII compatible binary formats and should not be applied to arbitrary binary data. Note that all of the bytearray methods in this section do not operate in place, and instead produce new objects. bytes. capitalize ()¶ bytearray. capitalize ()¶Return a copy of the sequence with each byte interpreted as an ASCII character, and the first byte capitalized and the rest lowercased. Non-ASCII byte values are passed through unchanged. Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. expandtabs (tabsize=8)¶ bytearray. expandtabs (tabsize=8)¶Return
a copy of the sequence where all ASCII tab characters are replaced by one or more ASCII spaces, depending on the current column and the given tab size. Tab positions occur every tabsize bytes (default is 8, giving tab positions at columns 0, 8, 16 and so on). To expand the sequence, the current column is set to zero and the sequence is examined byte by byte. If the byte is an ASCII tab character ( >>> b'01\t012\t0123\t01234'.expandtabs() b'01 012 0123 01234' >>> b'01\t012\t0123\t01234'.expandtabs(4) b'01 012 0123 01234' Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. isalnum ()¶ bytearray. isalnum ()¶
Return true if all bytes in the sequence are alphabetical ASCII characters or ASCII decimal digits and the sequence is not empty, false otherwise. Alphabetic ASCII characters are those byte values in the sequence For example: >>> b'ABCabc1'.isalnum() True >>> b'ABC abc1'.isalnum() False bytes. isalpha ()¶ bytearray. isalpha ()¶Return true if all bytes in the sequence are
alphabetic ASCII characters and the sequence is not empty, false otherwise. Alphabetic ASCII characters are those byte values in the sequence For example: >>> b'ABCabc'.isalpha() True >>> b'ABCabc1'.isalpha() False bytes. isdigit ()¶
bytearray. isdigit ()¶Return true if all bytes in the sequence are ASCII decimal digits and the sequence is not empty, false otherwise. ASCII decimal digits are those byte values in the sequence For example: >>> b'1234'.isdigit() True >>> b'1.23'.isdigit() False bytes. islower ()¶ bytearray. islower ()¶Return true if there is at least one lowercase ASCII character in the sequence and no uppercase ASCII characters, false otherwise. For example: >>> b'hello world'.islower() True >>> b'Hello world'.islower() False Lowercase ASCII characters are those byte values in the sequence bytes. isspace ()¶
bytearray. isspace ()¶Return true if all bytes in the sequence are ASCII whitespace and the sequence is not empty, false otherwise. ASCII whitespace characters are those byte values in the sequence bytes. istitle ()¶ bytearray. istitle ()¶Return true if the sequence is ASCII titlecase
and the sequence is not empty, false otherwise. See For example: >>> b'Hello World'.istitle() True >>> b'Hello world'.istitle() False bytes. isupper ()¶
bytearray. isupper ()¶Return true if there is at least one uppercase alphabetic ASCII character in the sequence and no lowercase ASCII characters, false otherwise. For example: >>> b'HELLO WORLD'.isupper() True >>> b'Hello world'.isupper() False Lowercase ASCII characters are those byte values in the sequence bytes. lower ()¶
bytearray. lower ()¶Return a copy of the sequence with all the uppercase ASCII characters converted to their corresponding lowercase counterpart. For example: >>> b'Hello World'.lower() b'hello world' Lowercase ASCII characters are those byte values in the sequence Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. splitlines (keepends=False)¶ bytearray. splitlines (keepends=False)¶Return a list of the lines in the binary sequence, breaking at ASCII line boundaries. This method uses the universal newlines approach to splitting lines. Line breaks are not included in the resulting list unless keepends is given and true. For example: >>> b'ab c\n\nde fg\rkl\r\n'.splitlines() [b'ab c', b'', b'de fg', b'kl'] >>> b'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True) [b'ab c\n', b'\n', b'de fg\r', b'kl\r\n'] Unlike >>> b"".split(b'\n'), b"Two lines\n".split(b'\n') ([b''], [b'Two lines', b'']) >>> b"".splitlines(), b"One line\n".splitlines() ([], [b'One line']) bytes. swapcase ()¶ bytearray. swapcase ()¶Return a copy of the sequence with all the lowercase ASCII characters converted to their corresponding uppercase counterpart and vice-versa. For example: >>> b'Hello World'.swapcase() b'hELLO wORLD' Lowercase ASCII characters are those byte values in the sequence Unlike Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. title ()¶ bytearray. title ()¶Return a titlecased version of the binary sequence where words start with an uppercase ASCII character and the remaining characters are lowercase. Uncased byte values are left unmodified. For example: >>> b'Hello world'.title() b'Hello World' Lowercase ASCII characters are those byte values in the sequence The algorithm uses a simple language-independent definition of a word as groups of consecutive letters. The definition works in many contexts but it means that apostrophes in contractions and possessives form word boundaries, which may not be the desired result: >>> b"they're bill's friends from the UK".title() b"They'Re Bill'S Friends From The Uk" A workaround for apostrophes can be constructed using regular expressions: >>> import re >>> def titlecase(s): ... return re.sub(rb"[A-Za-z]+('[A-Za-z]+)?", ... lambda mo: mo.group(0)[0:1].upper() + ... mo.group(0)[1:].lower(), ... s) ... >>> titlecase(b"they're bill's friends.") b"They're Bill's Friends." Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. upper ()¶ bytearray. upper ()¶Return a copy of the sequence with all the lowercase ASCII characters converted to their corresponding uppercase counterpart. For example: >>> b'Hello World'.upper() b'HELLO WORLD' Lowercase ASCII characters are those byte values in the sequence Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. bytes. zfill (width)¶ bytearray. zfill (width)¶Return a copy of the sequence left
filled with ASCII For example: >>> b"42".zfill(5) b'00042' >>> b"-42".zfill(5) b'-0042' Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. 4.8.4. printf-style Bytes Formatting¶Note The formatting operations described here exhibit a variety of quirks that lead to a number of common errors (such as failing to display tuples and dictionaries correctly). If the value being printed may be a tuple or dictionary, wrap it in a tuple. Bytes objects ( If format requires a single argument, values may be a single non-tuple object. [5] Otherwise, values must be a tuple with exactly the number of items specified by the format bytes object, or a single mapping object (for example, a dictionary). A conversion specifier contains two or more characters and has the following components, which must occur in this order:
When
the right argument is a dictionary (or other mapping type), then the formats in the bytes object must include a parenthesised mapping key into that dictionary inserted immediately after the >>> print(b'%(language)s has %(number)03d quote types.' % ... {b'language': b"Python", b"number": 2}) b'Python has 002 quote types.' In this case no The conversion flag characters are:
A length modifier ( The conversion types are:
Notes:
Note The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made. New in version 3.5. 4.8.5. Memory Views¶
memoryview (obj)¶Create a A
A >>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103 >>> v[1:4] If Here is an example with a non-byte format: >>> import array >>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444]) >>> m = memoryview(a) >>> m[0] -11111111 >>> m[-1] 44444444 >>> m[::2].tolist() [-11111111, -33333333] If the underlying object is writable, the memoryview supports one-dimensional slice assignment. Resizing is not allowed: >>> data = bytearray(b'abcefg') >>> v = memoryview(data) >>> v.readonly False >>> v[0] = ord(b'z') >>> data bytearray(b'zbcefg') >>> v[1:4] = b'123' >>> data bytearray(b'z123fg') >>> v[2:3] = b'spam' Traceback (most recent call last): File " One-dimensional memoryviews of hashable (read-only) types with formats ‘B’, ‘b’ or ‘c’ are also hashable. The hash is defined as >>> v = memoryview(b'abcefg') >>> hash(v) == hash(b'abcefg') True >>> hash(v[2:4]) == hash(b'ce') True >>> hash(v[::-2]) == hash(b'abcefg'[::-2]) True Changed in version 3.3: One-dimensional memoryviews can now be sliced. One-dimensional memoryviews with formats ‘B’, ‘b’ or ‘c’ are now hashable. Changed in version 3.5: memoryviews can now be indexed with tuple of integers.
__eq__ (exporter)¶A memoryview and a
PEP 3118 exporter are equal if their shapes are equivalent and if all corresponding values are equal when the operands’ respective format codes are interpreted using For the subset of >>> import array >>> a = array.array('I', [1, 2, 3, 4, 5]) >>> b = array.array('d', [1.0, 2.0, 3.0, 4.0, 5.0]) >>> c = array.array('b', [5, 3, 1]) >>> x = memoryview(a) >>> y = memoryview(b) >>> x == a == y == b True >>> x.tolist() == a.tolist() == y.tolist() == b.tolist() True >>> z = y[::-2] >>> z == c True >>> z.tolist() == c.tolist() True If either format string is not supported by the
>>> from ctypes import BigEndianStructure, c_long >>> class BEPoint(BigEndianStructure): ... _fields_ = [("x", c_long), ("y", c_long)] ... >>> point = BEPoint(100, 200) >>> a = memoryview(point) >>> b = memoryview(point) >>> a == point False >>> a == b False Note that, as with floating point numbers, Changed in version 3.3: Previous versions compared the raw memory disregarding the item format and the logical array structure. tobytes ()¶Return the data in the buffer as a bytestring. This is equivalent to calling the
>>> m = memoryview(b"abc") >>> m.tobytes() b'abc' >>> bytes(m) b'abc' For non-contiguous arrays the result is equal to the flattened list representation with all elements converted to bytes. hex ()¶Return a string object containing two hexadecimal digits for each byte in the buffer. >>> m = memoryview(b"abc") >>> m.hex() '616263' New in version 3.5. tolist ()¶Return the data in the buffer as a list of elements. >>> memoryview(b'abc').tolist() [97, 98, 99] >>> import array >>> a = array.array('d', [1.1, 2.2, 3.3]) >>> m = memoryview(a) >>> m.tolist() [1.1, 2.2, 3.3] Changed in version 3.3:
release ()¶Release the underlying buffer exposed by the memoryview object. Many objects take special actions when a view is held on them (for example, a After this method has been called, any further operation on the view raises a >>> m = memoryview(b'abc') >>> m.release() >>> m[0] Traceback (most recent call last): File " The context management protocol can be used for a similar effect, using the >>> with memoryview(b'abc') as m: ... m[0] ... 97 >>> m[0] Traceback (most recent call last): File " New in version 3.2. cast (format[,
shape])¶Cast a memoryview to a new format or shape. shape defaults to The destination format is restricted to a single element native format in Cast 1D/long to 1D/unsigned bytes: >>> import array >>> a = array.array('l', [1,2,3]) >>> x = memoryview(a) >>> x.format 'l' >>> x.itemsize 8 >>> len(x) 3 >>> x.nbytes 24 >>> y = x.cast('B') >>> y.format 'B' >>> y.itemsize 1 >>> len(y) 24 >>> y.nbytes 24 Cast 1D/unsigned bytes to 1D/char: >>> b = bytearray(b'zyz') >>> x = memoryview(b) >>> x[0] = b'a' Traceback (most recent call last): File " Cast 1D/bytes to 3D/ints to 1D/signed char: >>> import struct >>> buf = struct.pack("i"*12, *list(range(12))) >>> x = memoryview(buf) >>> y = x.cast('i', shape=[2,2,3]) >>> y.tolist() [[[0, 1, 2], [3, 4, 5]], [[6, 7, 8], [9, 10, 11]]] >>> y.format 'i' >>> y.itemsize 4 >>> len(y) 2 >>> y.nbytes 48 >>> z = y.cast('b') >>> z.format 'b' >>> z.itemsize 1 >>> len(z) 48 >>> z.nbytes 48 Cast 1D/unsigned char to 2D/unsigned long: >>> buf = struct.pack("L"*6, *list(range(6))) >>> x = memoryview(buf) >>> y = x.cast('L', shape=[2,3]) >>> len(y) 2 >>> y.nbytes 48 >>> y.tolist() [[0, 1, 2], [3, 4, 5]] New in version 3.3. Changed in version 3.5: The source format is no longer restricted when casting to a byte view. There are also several readonly attributes available: obj ¶The underlying object of the memoryview: >>> b = bytearray(b'xyz') >>> m = memoryview(b) >>> m.obj is b True New in version 3.3. nbytes ¶
>>> import array >>> a = array.array('i', [1,2,3,4,5]) >>> m = memoryview(a) >>> len(m) 5 >>> m.nbytes 20 >>> y = m[::2] >>> len(y) 3 >>> y.nbytes 12 >>> len(y.tobytes()) 12 Multi-dimensional arrays: >>> import struct >>> buf = struct.pack("d"*12, *[1.5*x for x in range(12)]) >>> x = memoryview(buf) >>> y = x.cast('d', shape=[3,4]) >>> y.tolist() [[0.0, 1.5, 3.0, 4.5], [6.0, 7.5, 9.0, 10.5], [12.0, 13.5, 15.0, 16.5]] >>> len(y) 3 >>> y.nbytes 96 New in version 3.3. readonly ¶A bool indicating whether the memory is read only. format ¶A string containing the format (in Changed in version 3.3: format itemsize ¶The size in bytes of each element of the memoryview: >>> import array, struct >>> m = memoryview(array.array('H', [32000, 32001, 32002])) >>> m.itemsize 2 >>> m[0] 32000 >>> struct.calcsize('H') == m.itemsize True ndim ¶An integer indicating how many dimensions of a multi-dimensional array the memory represents. shape ¶A tuple of integers the length of Changed in version 3.3: An empty tuple instead of strides ¶A tuple of integers the length of Changed in version 3.3: An empty tuple instead of suboffsets ¶Used internally for PIL-style arrays. The value is informational only. c_contiguous ¶A bool indicating whether the memory is C-contiguous. New in version 3.3. f_contiguous ¶A bool indicating whether the memory is Fortran contiguous. New in version 3.3. contiguous ¶A bool indicating whether the memory is contiguous. New in version 3.3. 4.9. Set Types — set, frozenset¶A set object is an unordered collection of distinct
hashable objects. Common uses include membership testing, removing duplicates from a sequence, and computing mathematical operations such as intersection, union, difference, and symmetric difference. (For other containers see the built-in Like other collections, sets support There are currently two built-in set types, Non-empty sets (not frozensets) can be created by placing a comma-separated list of elements within braces, for example: The constructors for both classes work the same: classset ([iterable])¶ class
frozenset ([iterable])¶Return a new set or frozenset object whose elements are taken from iterable. The elements of a set must be hashable. To represent
sets of sets, the inner sets must be Instances of len(s) Return the number of elements in set s (cardinality of s). x in s Test x for membership in s. x not in s Test x for non-membership in s. isdisjoint (other)¶Return issubset (other)¶ set <= other Test whether every element in the set is in other. set < other Test whether the set is a proper subset of other, that is, issuperset (other)¶ set >= other Test whether every element in other is in the set. set > other Test whether the set is a proper superset of other, that is, union (*others)¶ set | other | ... Return a new set with elements from the set and all others. intersection (*others)¶ set & other & ... Return a new set with elements common to the set and all others. difference (*others)¶ set - other - ... Return a new set with elements in the set that are not in the others. symmetric_difference (other)¶ set ^ other Return a new set with elements in either the set or other but not both. copy ()¶Return a new set with a shallow copy of s. Note, the non-operator versions of Both Instances of The subset and equality comparisons do not generalize to a total ordering function. For example, any two nonempty disjoint sets are not equal and are not subsets of each other, so all of the following return Since sets only define partial ordering (subset relationships), the output of the
Set elements, like dictionary keys, must be hashable. Binary operations that mix The following table lists operations available for
update (*others)¶ set |= other | ... Update the set, adding elements from all others. intersection_update (*others)¶ set &= other & ... Update the set, keeping only elements found in it and all others. difference_update (*others)¶ set -= other | ... Update the set, removing elements found in others. symmetric_difference_update (other)¶ set ^= other Update the set, keeping only elements found in either set, but not in both. add (elem)¶Add element elem to the set. remove (elem)¶
Remove element elem from the set. Raises discard (elem)¶Remove element elem from the set if it is present. pop ()¶Remove and return an arbitrary element from the set. Raises clear ()¶Remove all elements from the set. Note, the non-operator versions of the Note, the elem argument to the 4.10. Mapping Types — dict¶A mapping object maps
hashable values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapping type, the dictionary. (For other containers see the built-in A dictionary’s keys are almost arbitrary values. Values
that are not hashable, that is, values containing lists, dictionaries or other mutable types (that are compared by value rather than by object identity) may not be used as keys. Numeric types used for keys obey the normal rules for numeric comparison: if two numbers compare equal (such as Dictionaries can be created by placing a comma-separated list of dict (**kwarg)¶ class dict (mapping, **kwarg) class dict (iterable, **kwarg)Return a new dictionary initialized from an optional positional argument and a possibly empty set of keyword arguments. If no positional argument is given, an empty dictionary is created. If a positional argument is given and it is a mapping object, a dictionary is created with the same key-value pairs as the mapping object. Otherwise, the positional argument must be an iterable object. Each item in the iterable must itself be an iterable with exactly two objects. The first object of each item becomes a key in the new dictionary, and the second object the corresponding value. If a key occurs more than once, the last value for that key becomes the corresponding value in the new dictionary. If keyword arguments are given, the keyword arguments and their values are added to the dictionary created from the positional argument. If a key being added is already present, the value from the keyword argument replaces the value from the positional argument. To
illustrate, the following examples all return a dictionary equal to >>> a = dict(one=1, two=2, three=3) >>> b = {'one': 1, 'two': 2, 'three': 3} >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3])) >>> d = dict([('two', 2), ('one', 1), ('three', 3)]) >>> e = dict({'three': 3, 'one': 1, 'two': 2}) >>> a == b == c == d == e True Providing keyword arguments as in the first example only works for keys that are valid Python identifiers. Otherwise, any valid keys can be used. These are the operations that dictionaries support (and therefore, custom mapping types should support too): len(d) Return the number of items in the dictionary d. d[key] Return
the item of d with key key. Raises a If a subclass of dict defines a method >>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1 The example above shows part of the implementation of
d[key] = value Set del d[key] Remove key in d Return key not in d Equivalent to iter(d) Return an iterator over the keys of the dictionary. This is a shortcut for clear ()¶Remove all items from the dictionary. copy ()¶Return a shallow copy of the dictionary. classmethodfromkeys (seq[, value])¶Create a new dictionary with keys from seq and values set to value.
get (key[, default])¶Return
the value for key if key is in the dictionary, else default. If default is not given, it defaults to items ()¶Return a new view of the dictionary’s items ( keys ()¶Return a new view of the dictionary’s keys. See the documentation of view objects. pop (key[, default])¶If key is in the dictionary,
remove it and return its value, else return default. If default is not given and key is not in the dictionary, a popitem ()¶
Remove and return an arbitrary
setdefault (key[, default])¶If key is in the dictionary, return its value. If not, insert
key with a value of default and return default. default defaults to update ([other])¶Update the dictionary with the key/value pairs from other, overwriting existing keys. Return
values ()¶Return a new view of the dictionary’s values. See the documentation of view objects. Dictionaries compare equal if and only if they have the same 4.10.1. Dictionary view objects¶The objects returned by
Dictionary views can be iterated over to yield their respective data, and support membership tests: len(dictview) Return the number of entries in the dictionary. iter(dictview) Return an iterator over the keys, values or items (represented as tuples of Keys and values are iterated over in an arbitrary order which is non-random, varies across Python
implementations, and depends on the dictionary’s history of insertions and deletions. If keys, values and items views are iterated over with no intervening modifications to the dictionary, the order of items will directly correspond. This allows the creation of Iterating views while adding or
deleting entries in the dictionary may raise a x in dictview Return Keys views are set-like since their entries are unique and hashable. If all
values are hashable, so that An example of dictionary view usage: >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500} >>> keys = dishes.keys() >>> values = dishes.values() >>> # iteration >>> n = 0 >>> for val in values: ... n += val >>> print(n) 504 >>> # keys and values are iterated over in the same order >>> list(keys) ['eggs', 'bacon', 'sausage', 'spam'] >>> list(values) [2, 1, 1, 500] >>> # view objects are dynamic and reflect dict changes >>> del dishes['eggs'] >>> del dishes['sausage'] >>> list(keys) ['spam', 'bacon'] >>> # set operations >>> keys & {'eggs', 'bacon', 'salad'} {'bacon'} >>> keys ^ {'sausage', 'juice'} {'juice', 'sausage', 'bacon', 'spam'} 4.11. Context Manager Types¶Python’s contextmanager. __enter__ ()¶Enter the runtime context and return either
this object or another object related to the runtime context. The value returned by this method is bound to the identifier in the An example of a context manager that returns itself is a
file object. File objects return themselves from __enter__() to allow An example of a context
manager that returns a related object is the one returned by contextmanager. __exit__ (exc_type, exc_val,
exc_tb)¶Exit the runtime context and return a Boolean flag indicating if any exception that occurred should be suppressed. If an exception occurred while executing the body of the Returning a true value from this method will cause the The exception passed
in should never be reraised explicitly - instead, this method should return a false value to indicate that the method completed successfully and does not want to suppress the raised exception. This allows context management code to easily detect whether or not an Python defines several context
managers to support easy thread synchronisation, prompt closure of files or other objects, and simpler manipulation of the active decimal arithmetic context. The specific types are not treated specially beyond their implementation of the context management protocol. See the Python’s
generators and the Note that there is no specific slot for any of these methods in the type structure for Python objects in the Python/C API. Extension types wanting to define these methods must provide them as a normal Python accessible method. Compared to the overhead of setting up the runtime context, the overhead of a single class dictionary lookup is negligible. 4.12. Other Built-in Types¶The interpreter supports several other kinds of objects. Most of these support only one or two operations. 4.12.1. Modules¶The only special operation on a module is attribute access: A special attribute of every module is Modules built into the interpreter are written like this: 4.12.3. Functions¶Function objects are created by function definitions. The only operation on a function object is to call it: There are really two flavors of function objects: built-in functions and user-defined functions. Both support the same operation (to call the function), but the implementation is different, hence the different object types. See Function definitions for more information. 4.12.4. Methods¶Methods are functions that are called using the attribute notation. There are two flavors: built-in methods (such as If you access a method (a function defined in a class namespace) through an instance, you get a
special object: a bound method (also called instance method) object. When called, it will add the Like function objects, bound method objects support getting arbitrary attributes. However, since method attributes
are actually stored on the underlying function object ( >>> class C: ... def method(self): ... pass ... >>> c = C() >>> c.method.whoami = 'my name is method' # can't set on the method Traceback (most recent call last): File " See The standard type hierarchy for more information. 4.12.5. Code Objects¶Code objects are used by the implementation to represent “pseudo-compiled” executable Python code such as a function
body. They differ from function objects because they don’t contain a reference to their global execution environment. Code objects are returned by the built-in A code object can be executed or evaluated by passing it (instead of a source string) to the See The standard type hierarchy for more information. 4.12.6. Type Objects¶Type objects represent the various object types. An object’s type is accessed by the built-in function Types are written like this: 4.12.7. The Null Object¶This object is returned by functions that
don’t explicitly return a value. It supports no special operations. There is exactly one null object, named It is written as 4.12.8. The Ellipsis Object¶This object is commonly used by slicing (see
Slicings). It supports no special operations. There is exactly one ellipsis object, named It is written as 4.12.9. The NotImplemented Object¶This object is returned from comparisons and
binary operations when they are asked to operate on types they don’t support. See Comparisons for more information. There is exactly one It is written as 4.12.10. Boolean Values¶Boolean values are the two constant objects They are written as 4.12.11. Internal Objects¶See The standard type hierarchy for this information. It describes stack frame objects, traceback objects, and slice objects. 4.13. Special Attributes¶The implementation adds a few special read-only attributes to several object types, where they are relevant. Some of these are not reported by the object. __dict__ ¶A dictionary or other mapping object used to store an object’s (writable) attributes. instance. __class__ ¶The class to which a class instance belongs. class. __bases__ ¶The tuple of base classes of a class object. definition. __name__ ¶The name of the class, function, method, descriptor, or generator instance. definition. __qualname__ ¶The qualified name of the class, function, method, descriptor, or generator instance. New in version 3.3. class. __mro__ ¶This attribute is a tuple of classes that are considered when looking for base classes during method resolution. class. mro ()¶This method can be overridden by a metaclass to customize the method resolution order for its instances. It is called at class instantiation, and its result is stored in
class. __subclasses__ ()¶Each class keeps a list of weak references to its immediate subclasses. This method returns a list of all those references still alive. Example: >>> int.__subclasses__() [ Footnotes
Can we convert float to byte?Float to Byte Array Conversion
As we know, the size of a float in Java is 32 bit which is similar to an int. So we can use floatToIntBits or floatToRawIntBits functions available in the Float class of Java. And then shift the bits to return a byte array. Click here to learn more about bit shifting operations.
How many bytes is a float in Python?Typically, eight bytes are used for the Python floating type. Notice that this means that there are only 264 different floating-point numbers that can be represented.
Does Python use 64Python float values are represented as 64-bit double-precision values. 1.8 X 10308 is an approximate maximum value for any floating-point number. If it exceeds or exceeds the max value, Python returns an error with string inf (infinity).
What does byte () do in Python?Python bytes() Function
The bytes() function returns a bytes object. It can convert objects into bytes objects, or create empty bytes object of the specified size.
|