1*cda5da8dSAndroid Build Coastguard Worker# -*- coding: utf-8 -*- 2*cda5da8dSAndroid Build Coastguard Worker# Autogenerated by Sphinx on Tue Jun 6 23:00:07 2023 3*cda5da8dSAndroid Build Coastguard Workertopics = {'assert': 'The "assert" statement\n' 4*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 5*cda5da8dSAndroid Build Coastguard Worker '\n' 6*cda5da8dSAndroid Build Coastguard Worker 'Assert statements are a convenient way to insert debugging ' 7*cda5da8dSAndroid Build Coastguard Worker 'assertions\n' 8*cda5da8dSAndroid Build Coastguard Worker 'into a program:\n' 9*cda5da8dSAndroid Build Coastguard Worker '\n' 10*cda5da8dSAndroid Build Coastguard Worker ' assert_stmt ::= "assert" expression ["," expression]\n' 11*cda5da8dSAndroid Build Coastguard Worker '\n' 12*cda5da8dSAndroid Build Coastguard Worker 'The simple form, "assert expression", is equivalent to\n' 13*cda5da8dSAndroid Build Coastguard Worker '\n' 14*cda5da8dSAndroid Build Coastguard Worker ' if __debug__:\n' 15*cda5da8dSAndroid Build Coastguard Worker ' if not expression: raise AssertionError\n' 16*cda5da8dSAndroid Build Coastguard Worker '\n' 17*cda5da8dSAndroid Build Coastguard Worker 'The extended form, "assert expression1, expression2", is ' 18*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 19*cda5da8dSAndroid Build Coastguard Worker '\n' 20*cda5da8dSAndroid Build Coastguard Worker ' if __debug__:\n' 21*cda5da8dSAndroid Build Coastguard Worker ' if not expression1: raise AssertionError(expression2)\n' 22*cda5da8dSAndroid Build Coastguard Worker '\n' 23*cda5da8dSAndroid Build Coastguard Worker 'These equivalences assume that "__debug__" and "AssertionError" ' 24*cda5da8dSAndroid Build Coastguard Worker 'refer\n' 25*cda5da8dSAndroid Build Coastguard Worker 'to the built-in variables with those names. In the current\n' 26*cda5da8dSAndroid Build Coastguard Worker 'implementation, the built-in variable "__debug__" is "True" under\n' 27*cda5da8dSAndroid Build Coastguard Worker 'normal circumstances, "False" when optimization is requested ' 28*cda5da8dSAndroid Build Coastguard Worker '(command\n' 29*cda5da8dSAndroid Build Coastguard Worker 'line option "-O"). The current code generator emits no code for ' 30*cda5da8dSAndroid Build Coastguard Worker 'an\n' 31*cda5da8dSAndroid Build Coastguard Worker 'assert statement when optimization is requested at compile time. ' 32*cda5da8dSAndroid Build Coastguard Worker 'Note\n' 33*cda5da8dSAndroid Build Coastguard Worker 'that it is unnecessary to include the source code for the ' 34*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 35*cda5da8dSAndroid Build Coastguard Worker 'that failed in the error message; it will be displayed as part of ' 36*cda5da8dSAndroid Build Coastguard Worker 'the\n' 37*cda5da8dSAndroid Build Coastguard Worker 'stack trace.\n' 38*cda5da8dSAndroid Build Coastguard Worker '\n' 39*cda5da8dSAndroid Build Coastguard Worker 'Assignments to "__debug__" are illegal. The value for the ' 40*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 41*cda5da8dSAndroid Build Coastguard Worker 'variable is determined when the interpreter starts.\n', 42*cda5da8dSAndroid Build Coastguard Worker 'assignment': 'Assignment statements\n' 43*cda5da8dSAndroid Build Coastguard Worker '*********************\n' 44*cda5da8dSAndroid Build Coastguard Worker '\n' 45*cda5da8dSAndroid Build Coastguard Worker 'Assignment statements are used to (re)bind names to values and ' 46*cda5da8dSAndroid Build Coastguard Worker 'to\n' 47*cda5da8dSAndroid Build Coastguard Worker 'modify attributes or items of mutable objects:\n' 48*cda5da8dSAndroid Build Coastguard Worker '\n' 49*cda5da8dSAndroid Build Coastguard Worker ' assignment_stmt ::= (target_list "=")+ (starred_expression ' 50*cda5da8dSAndroid Build Coastguard Worker '| yield_expression)\n' 51*cda5da8dSAndroid Build Coastguard Worker ' target_list ::= target ("," target)* [","]\n' 52*cda5da8dSAndroid Build Coastguard Worker ' target ::= identifier\n' 53*cda5da8dSAndroid Build Coastguard Worker ' | "(" [target_list] ")"\n' 54*cda5da8dSAndroid Build Coastguard Worker ' | "[" [target_list] "]"\n' 55*cda5da8dSAndroid Build Coastguard Worker ' | attributeref\n' 56*cda5da8dSAndroid Build Coastguard Worker ' | subscription\n' 57*cda5da8dSAndroid Build Coastguard Worker ' | slicing\n' 58*cda5da8dSAndroid Build Coastguard Worker ' | "*" target\n' 59*cda5da8dSAndroid Build Coastguard Worker '\n' 60*cda5da8dSAndroid Build Coastguard Worker '(See section Primaries for the syntax definitions for ' 61*cda5da8dSAndroid Build Coastguard Worker '*attributeref*,\n' 62*cda5da8dSAndroid Build Coastguard Worker '*subscription*, and *slicing*.)\n' 63*cda5da8dSAndroid Build Coastguard Worker '\n' 64*cda5da8dSAndroid Build Coastguard Worker 'An assignment statement evaluates the expression list ' 65*cda5da8dSAndroid Build Coastguard Worker '(remember that\n' 66*cda5da8dSAndroid Build Coastguard Worker 'this can be a single expression or a comma-separated list, the ' 67*cda5da8dSAndroid Build Coastguard Worker 'latter\n' 68*cda5da8dSAndroid Build Coastguard Worker 'yielding a tuple) and assigns the single resulting object to ' 69*cda5da8dSAndroid Build Coastguard Worker 'each of\n' 70*cda5da8dSAndroid Build Coastguard Worker 'the target lists, from left to right.\n' 71*cda5da8dSAndroid Build Coastguard Worker '\n' 72*cda5da8dSAndroid Build Coastguard Worker 'Assignment is defined recursively depending on the form of the ' 73*cda5da8dSAndroid Build Coastguard Worker 'target\n' 74*cda5da8dSAndroid Build Coastguard Worker '(list). When a target is part of a mutable object (an ' 75*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 76*cda5da8dSAndroid Build Coastguard Worker 'reference, subscription or slicing), the mutable object must\n' 77*cda5da8dSAndroid Build Coastguard Worker 'ultimately perform the assignment and decide about its ' 78*cda5da8dSAndroid Build Coastguard Worker 'validity, and\n' 79*cda5da8dSAndroid Build Coastguard Worker 'may raise an exception if the assignment is unacceptable. The ' 80*cda5da8dSAndroid Build Coastguard Worker 'rules\n' 81*cda5da8dSAndroid Build Coastguard Worker 'observed by various types and the exceptions raised are given ' 82*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 83*cda5da8dSAndroid Build Coastguard Worker 'definition of the object types (see section The standard type\n' 84*cda5da8dSAndroid Build Coastguard Worker 'hierarchy).\n' 85*cda5da8dSAndroid Build Coastguard Worker '\n' 86*cda5da8dSAndroid Build Coastguard Worker 'Assignment of an object to a target list, optionally enclosed ' 87*cda5da8dSAndroid Build Coastguard Worker 'in\n' 88*cda5da8dSAndroid Build Coastguard Worker 'parentheses or square brackets, is recursively defined as ' 89*cda5da8dSAndroid Build Coastguard Worker 'follows.\n' 90*cda5da8dSAndroid Build Coastguard Worker '\n' 91*cda5da8dSAndroid Build Coastguard Worker '* If the target list is a single target with no trailing ' 92*cda5da8dSAndroid Build Coastguard Worker 'comma,\n' 93*cda5da8dSAndroid Build Coastguard Worker ' optionally in parentheses, the object is assigned to that ' 94*cda5da8dSAndroid Build Coastguard Worker 'target.\n' 95*cda5da8dSAndroid Build Coastguard Worker '\n' 96*cda5da8dSAndroid Build Coastguard Worker '* Else:\n' 97*cda5da8dSAndroid Build Coastguard Worker '\n' 98*cda5da8dSAndroid Build Coastguard Worker ' * If the target list contains one target prefixed with an ' 99*cda5da8dSAndroid Build Coastguard Worker 'asterisk,\n' 100*cda5da8dSAndroid Build Coastguard Worker ' called a “starred” target: The object must be an iterable ' 101*cda5da8dSAndroid Build Coastguard Worker 'with at\n' 102*cda5da8dSAndroid Build Coastguard Worker ' least as many items as there are targets in the target ' 103*cda5da8dSAndroid Build Coastguard Worker 'list, minus\n' 104*cda5da8dSAndroid Build Coastguard Worker ' one. The first items of the iterable are assigned, from ' 105*cda5da8dSAndroid Build Coastguard Worker 'left to\n' 106*cda5da8dSAndroid Build Coastguard Worker ' right, to the targets before the starred target. The ' 107*cda5da8dSAndroid Build Coastguard Worker 'final items\n' 108*cda5da8dSAndroid Build Coastguard Worker ' of the iterable are assigned to the targets after the ' 109*cda5da8dSAndroid Build Coastguard Worker 'starred\n' 110*cda5da8dSAndroid Build Coastguard Worker ' target. A list of the remaining items in the iterable is ' 111*cda5da8dSAndroid Build Coastguard Worker 'then\n' 112*cda5da8dSAndroid Build Coastguard Worker ' assigned to the starred target (the list can be empty).\n' 113*cda5da8dSAndroid Build Coastguard Worker '\n' 114*cda5da8dSAndroid Build Coastguard Worker ' * Else: The object must be an iterable with the same number ' 115*cda5da8dSAndroid Build Coastguard Worker 'of items\n' 116*cda5da8dSAndroid Build Coastguard Worker ' as there are targets in the target list, and the items ' 117*cda5da8dSAndroid Build Coastguard Worker 'are\n' 118*cda5da8dSAndroid Build Coastguard Worker ' assigned, from left to right, to the corresponding ' 119*cda5da8dSAndroid Build Coastguard Worker 'targets.\n' 120*cda5da8dSAndroid Build Coastguard Worker '\n' 121*cda5da8dSAndroid Build Coastguard Worker 'Assignment of an object to a single target is recursively ' 122*cda5da8dSAndroid Build Coastguard Worker 'defined as\n' 123*cda5da8dSAndroid Build Coastguard Worker 'follows.\n' 124*cda5da8dSAndroid Build Coastguard Worker '\n' 125*cda5da8dSAndroid Build Coastguard Worker '* If the target is an identifier (name):\n' 126*cda5da8dSAndroid Build Coastguard Worker '\n' 127*cda5da8dSAndroid Build Coastguard Worker ' * If the name does not occur in a "global" or "nonlocal" ' 128*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 129*cda5da8dSAndroid Build Coastguard Worker ' in the current code block: the name is bound to the object ' 130*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 131*cda5da8dSAndroid Build Coastguard Worker ' current local namespace.\n' 132*cda5da8dSAndroid Build Coastguard Worker '\n' 133*cda5da8dSAndroid Build Coastguard Worker ' * Otherwise: the name is bound to the object in the global ' 134*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 135*cda5da8dSAndroid Build Coastguard Worker ' or the outer namespace determined by "nonlocal", ' 136*cda5da8dSAndroid Build Coastguard Worker 'respectively.\n' 137*cda5da8dSAndroid Build Coastguard Worker '\n' 138*cda5da8dSAndroid Build Coastguard Worker ' The name is rebound if it was already bound. This may cause ' 139*cda5da8dSAndroid Build Coastguard Worker 'the\n' 140*cda5da8dSAndroid Build Coastguard Worker ' reference count for the object previously bound to the name ' 141*cda5da8dSAndroid Build Coastguard Worker 'to reach\n' 142*cda5da8dSAndroid Build Coastguard Worker ' zero, causing the object to be deallocated and its ' 143*cda5da8dSAndroid Build Coastguard Worker 'destructor (if it\n' 144*cda5da8dSAndroid Build Coastguard Worker ' has one) to be called.\n' 145*cda5da8dSAndroid Build Coastguard Worker '\n' 146*cda5da8dSAndroid Build Coastguard Worker '* If the target is an attribute reference: The primary ' 147*cda5da8dSAndroid Build Coastguard Worker 'expression in\n' 148*cda5da8dSAndroid Build Coastguard Worker ' the reference is evaluated. It should yield an object with\n' 149*cda5da8dSAndroid Build Coastguard Worker ' assignable attributes; if this is not the case, "TypeError" ' 150*cda5da8dSAndroid Build Coastguard Worker 'is\n' 151*cda5da8dSAndroid Build Coastguard Worker ' raised. That object is then asked to assign the assigned ' 152*cda5da8dSAndroid Build Coastguard Worker 'object to\n' 153*cda5da8dSAndroid Build Coastguard Worker ' the given attribute; if it cannot perform the assignment, it ' 154*cda5da8dSAndroid Build Coastguard Worker 'raises\n' 155*cda5da8dSAndroid Build Coastguard Worker ' an exception (usually but not necessarily ' 156*cda5da8dSAndroid Build Coastguard Worker '"AttributeError").\n' 157*cda5da8dSAndroid Build Coastguard Worker '\n' 158*cda5da8dSAndroid Build Coastguard Worker ' Note: If the object is a class instance and the attribute ' 159*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 160*cda5da8dSAndroid Build Coastguard Worker ' occurs on both sides of the assignment operator, the ' 161*cda5da8dSAndroid Build Coastguard Worker 'right-hand side\n' 162*cda5da8dSAndroid Build Coastguard Worker ' expression, "a.x" can access either an instance attribute or ' 163*cda5da8dSAndroid Build Coastguard Worker '(if no\n' 164*cda5da8dSAndroid Build Coastguard Worker ' instance attribute exists) a class attribute. The left-hand ' 165*cda5da8dSAndroid Build Coastguard Worker 'side\n' 166*cda5da8dSAndroid Build Coastguard Worker ' target "a.x" is always set as an instance attribute, ' 167*cda5da8dSAndroid Build Coastguard Worker 'creating it if\n' 168*cda5da8dSAndroid Build Coastguard Worker ' necessary. Thus, the two occurrences of "a.x" do not ' 169*cda5da8dSAndroid Build Coastguard Worker 'necessarily\n' 170*cda5da8dSAndroid Build Coastguard Worker ' refer to the same attribute: if the right-hand side ' 171*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 172*cda5da8dSAndroid Build Coastguard Worker ' refers to a class attribute, the left-hand side creates a ' 173*cda5da8dSAndroid Build Coastguard Worker 'new\n' 174*cda5da8dSAndroid Build Coastguard Worker ' instance attribute as the target of the assignment:\n' 175*cda5da8dSAndroid Build Coastguard Worker '\n' 176*cda5da8dSAndroid Build Coastguard Worker ' class Cls:\n' 177*cda5da8dSAndroid Build Coastguard Worker ' x = 3 # class variable\n' 178*cda5da8dSAndroid Build Coastguard Worker ' inst = Cls()\n' 179*cda5da8dSAndroid Build Coastguard Worker ' inst.x = inst.x + 1 # writes inst.x as 4 leaving Cls.x ' 180*cda5da8dSAndroid Build Coastguard Worker 'as 3\n' 181*cda5da8dSAndroid Build Coastguard Worker '\n' 182*cda5da8dSAndroid Build Coastguard Worker ' This description does not necessarily apply to descriptor\n' 183*cda5da8dSAndroid Build Coastguard Worker ' attributes, such as properties created with "property()".\n' 184*cda5da8dSAndroid Build Coastguard Worker '\n' 185*cda5da8dSAndroid Build Coastguard Worker '* If the target is a subscription: The primary expression in ' 186*cda5da8dSAndroid Build Coastguard Worker 'the\n' 187*cda5da8dSAndroid Build Coastguard Worker ' reference is evaluated. It should yield either a mutable ' 188*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 189*cda5da8dSAndroid Build Coastguard Worker ' object (such as a list) or a mapping object (such as a ' 190*cda5da8dSAndroid Build Coastguard Worker 'dictionary).\n' 191*cda5da8dSAndroid Build Coastguard Worker ' Next, the subscript expression is evaluated.\n' 192*cda5da8dSAndroid Build Coastguard Worker '\n' 193*cda5da8dSAndroid Build Coastguard Worker ' If the primary is a mutable sequence object (such as a ' 194*cda5da8dSAndroid Build Coastguard Worker 'list), the\n' 195*cda5da8dSAndroid Build Coastguard Worker ' subscript must yield an integer. If it is negative, the ' 196*cda5da8dSAndroid Build Coastguard Worker 'sequence’s\n' 197*cda5da8dSAndroid Build Coastguard Worker ' length is added to it. The resulting value must be a ' 198*cda5da8dSAndroid Build Coastguard Worker 'nonnegative\n' 199*cda5da8dSAndroid Build Coastguard Worker ' integer less than the sequence’s length, and the sequence is ' 200*cda5da8dSAndroid Build Coastguard Worker 'asked\n' 201*cda5da8dSAndroid Build Coastguard Worker ' to assign the assigned object to its item with that index. ' 202*cda5da8dSAndroid Build Coastguard Worker 'If the\n' 203*cda5da8dSAndroid Build Coastguard Worker ' index is out of range, "IndexError" is raised (assignment to ' 204*cda5da8dSAndroid Build Coastguard Worker 'a\n' 205*cda5da8dSAndroid Build Coastguard Worker ' subscripted sequence cannot add new items to a list).\n' 206*cda5da8dSAndroid Build Coastguard Worker '\n' 207*cda5da8dSAndroid Build Coastguard Worker ' If the primary is a mapping object (such as a dictionary), ' 208*cda5da8dSAndroid Build Coastguard Worker 'the\n' 209*cda5da8dSAndroid Build Coastguard Worker ' subscript must have a type compatible with the mapping’s key ' 210*cda5da8dSAndroid Build Coastguard Worker 'type,\n' 211*cda5da8dSAndroid Build Coastguard Worker ' and the mapping is then asked to create a key/datum pair ' 212*cda5da8dSAndroid Build Coastguard Worker 'which maps\n' 213*cda5da8dSAndroid Build Coastguard Worker ' the subscript to the assigned object. This can either ' 214*cda5da8dSAndroid Build Coastguard Worker 'replace an\n' 215*cda5da8dSAndroid Build Coastguard Worker ' existing key/value pair with the same key value, or insert a ' 216*cda5da8dSAndroid Build Coastguard Worker 'new\n' 217*cda5da8dSAndroid Build Coastguard Worker ' key/value pair (if no key with the same value existed).\n' 218*cda5da8dSAndroid Build Coastguard Worker '\n' 219*cda5da8dSAndroid Build Coastguard Worker ' For user-defined objects, the "__setitem__()" method is ' 220*cda5da8dSAndroid Build Coastguard Worker 'called with\n' 221*cda5da8dSAndroid Build Coastguard Worker ' appropriate arguments.\n' 222*cda5da8dSAndroid Build Coastguard Worker '\n' 223*cda5da8dSAndroid Build Coastguard Worker '* If the target is a slicing: The primary expression in the ' 224*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 225*cda5da8dSAndroid Build Coastguard Worker ' is evaluated. It should yield a mutable sequence object ' 226*cda5da8dSAndroid Build Coastguard Worker '(such as a\n' 227*cda5da8dSAndroid Build Coastguard Worker ' list). The assigned object should be a sequence object of ' 228*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 229*cda5da8dSAndroid Build Coastguard Worker ' type. Next, the lower and upper bound expressions are ' 230*cda5da8dSAndroid Build Coastguard Worker 'evaluated,\n' 231*cda5da8dSAndroid Build Coastguard Worker ' insofar they are present; defaults are zero and the ' 232*cda5da8dSAndroid Build Coastguard Worker 'sequence’s\n' 233*cda5da8dSAndroid Build Coastguard Worker ' length. The bounds should evaluate to integers. If either ' 234*cda5da8dSAndroid Build Coastguard Worker 'bound is\n' 235*cda5da8dSAndroid Build Coastguard Worker ' negative, the sequence’s length is added to it. The ' 236*cda5da8dSAndroid Build Coastguard Worker 'resulting\n' 237*cda5da8dSAndroid Build Coastguard Worker ' bounds are clipped to lie between zero and the sequence’s ' 238*cda5da8dSAndroid Build Coastguard Worker 'length,\n' 239*cda5da8dSAndroid Build Coastguard Worker ' inclusive. Finally, the sequence object is asked to replace ' 240*cda5da8dSAndroid Build Coastguard Worker 'the\n' 241*cda5da8dSAndroid Build Coastguard Worker ' slice with the items of the assigned sequence. The length ' 242*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 243*cda5da8dSAndroid Build Coastguard Worker ' slice may be different from the length of the assigned ' 244*cda5da8dSAndroid Build Coastguard Worker 'sequence,\n' 245*cda5da8dSAndroid Build Coastguard Worker ' thus changing the length of the target sequence, if the ' 246*cda5da8dSAndroid Build Coastguard Worker 'target\n' 247*cda5da8dSAndroid Build Coastguard Worker ' sequence allows it.\n' 248*cda5da8dSAndroid Build Coastguard Worker '\n' 249*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** In the current ' 250*cda5da8dSAndroid Build Coastguard Worker 'implementation, the\n' 251*cda5da8dSAndroid Build Coastguard Worker 'syntax for targets is taken to be the same as for expressions, ' 252*cda5da8dSAndroid Build Coastguard Worker 'and\n' 253*cda5da8dSAndroid Build Coastguard Worker 'invalid syntax is rejected during the code generation phase, ' 254*cda5da8dSAndroid Build Coastguard Worker 'causing\n' 255*cda5da8dSAndroid Build Coastguard Worker 'less detailed error messages.\n' 256*cda5da8dSAndroid Build Coastguard Worker '\n' 257*cda5da8dSAndroid Build Coastguard Worker 'Although the definition of assignment implies that overlaps ' 258*cda5da8dSAndroid Build Coastguard Worker 'between\n' 259*cda5da8dSAndroid Build Coastguard Worker 'the left-hand side and the right-hand side are ‘simultaneous’ ' 260*cda5da8dSAndroid Build Coastguard Worker '(for\n' 261*cda5da8dSAndroid Build Coastguard Worker 'example "a, b = b, a" swaps two variables), overlaps *within* ' 262*cda5da8dSAndroid Build Coastguard Worker 'the\n' 263*cda5da8dSAndroid Build Coastguard Worker 'collection of assigned-to variables occur left-to-right, ' 264*cda5da8dSAndroid Build Coastguard Worker 'sometimes\n' 265*cda5da8dSAndroid Build Coastguard Worker 'resulting in confusion. For instance, the following program ' 266*cda5da8dSAndroid Build Coastguard Worker 'prints\n' 267*cda5da8dSAndroid Build Coastguard Worker '"[0, 2]":\n' 268*cda5da8dSAndroid Build Coastguard Worker '\n' 269*cda5da8dSAndroid Build Coastguard Worker ' x = [0, 1]\n' 270*cda5da8dSAndroid Build Coastguard Worker ' i = 0\n' 271*cda5da8dSAndroid Build Coastguard Worker ' i, x[i] = 1, 2 # i is updated, then x[i] is ' 272*cda5da8dSAndroid Build Coastguard Worker 'updated\n' 273*cda5da8dSAndroid Build Coastguard Worker ' print(x)\n' 274*cda5da8dSAndroid Build Coastguard Worker '\n' 275*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 276*cda5da8dSAndroid Build Coastguard Worker '\n' 277*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3132** - Extended Iterable Unpacking\n' 278*cda5da8dSAndroid Build Coastguard Worker ' The specification for the "*target" feature.\n' 279*cda5da8dSAndroid Build Coastguard Worker '\n' 280*cda5da8dSAndroid Build Coastguard Worker '\n' 281*cda5da8dSAndroid Build Coastguard Worker 'Augmented assignment statements\n' 282*cda5da8dSAndroid Build Coastguard Worker '===============================\n' 283*cda5da8dSAndroid Build Coastguard Worker '\n' 284*cda5da8dSAndroid Build Coastguard Worker 'Augmented assignment is the combination, in a single ' 285*cda5da8dSAndroid Build Coastguard Worker 'statement, of a\n' 286*cda5da8dSAndroid Build Coastguard Worker 'binary operation and an assignment statement:\n' 287*cda5da8dSAndroid Build Coastguard Worker '\n' 288*cda5da8dSAndroid Build Coastguard Worker ' augmented_assignment_stmt ::= augtarget augop ' 289*cda5da8dSAndroid Build Coastguard Worker '(expression_list | yield_expression)\n' 290*cda5da8dSAndroid Build Coastguard Worker ' augtarget ::= identifier | attributeref | ' 291*cda5da8dSAndroid Build Coastguard Worker 'subscription | slicing\n' 292*cda5da8dSAndroid Build Coastguard Worker ' augop ::= "+=" | "-=" | "*=" | "@=" | ' 293*cda5da8dSAndroid Build Coastguard Worker '"/=" | "//=" | "%=" | "**="\n' 294*cda5da8dSAndroid Build Coastguard Worker ' | ">>=" | "<<=" | "&=" | "^=" | "|="\n' 295*cda5da8dSAndroid Build Coastguard Worker '\n' 296*cda5da8dSAndroid Build Coastguard Worker '(See section Primaries for the syntax definitions of the last ' 297*cda5da8dSAndroid Build Coastguard Worker 'three\n' 298*cda5da8dSAndroid Build Coastguard Worker 'symbols.)\n' 299*cda5da8dSAndroid Build Coastguard Worker '\n' 300*cda5da8dSAndroid Build Coastguard Worker 'An augmented assignment evaluates the target (which, unlike ' 301*cda5da8dSAndroid Build Coastguard Worker 'normal\n' 302*cda5da8dSAndroid Build Coastguard Worker 'assignment statements, cannot be an unpacking) and the ' 303*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 304*cda5da8dSAndroid Build Coastguard Worker 'list, performs the binary operation specific to the type of ' 305*cda5da8dSAndroid Build Coastguard Worker 'assignment\n' 306*cda5da8dSAndroid Build Coastguard Worker 'on the two operands, and assigns the result to the original ' 307*cda5da8dSAndroid Build Coastguard Worker 'target.\n' 308*cda5da8dSAndroid Build Coastguard Worker 'The target is only evaluated once.\n' 309*cda5da8dSAndroid Build Coastguard Worker '\n' 310*cda5da8dSAndroid Build Coastguard Worker 'An augmented assignment expression like "x += 1" can be ' 311*cda5da8dSAndroid Build Coastguard Worker 'rewritten as\n' 312*cda5da8dSAndroid Build Coastguard Worker '"x = x + 1" to achieve a similar, but not exactly equal ' 313*cda5da8dSAndroid Build Coastguard Worker 'effect. In the\n' 314*cda5da8dSAndroid Build Coastguard Worker 'augmented version, "x" is only evaluated once. Also, when ' 315*cda5da8dSAndroid Build Coastguard Worker 'possible,\n' 316*cda5da8dSAndroid Build Coastguard Worker 'the actual operation is performed *in-place*, meaning that ' 317*cda5da8dSAndroid Build Coastguard Worker 'rather than\n' 318*cda5da8dSAndroid Build Coastguard Worker 'creating a new object and assigning that to the target, the ' 319*cda5da8dSAndroid Build Coastguard Worker 'old object\n' 320*cda5da8dSAndroid Build Coastguard Worker 'is modified instead.\n' 321*cda5da8dSAndroid Build Coastguard Worker '\n' 322*cda5da8dSAndroid Build Coastguard Worker 'Unlike normal assignments, augmented assignments evaluate the ' 323*cda5da8dSAndroid Build Coastguard Worker 'left-\n' 324*cda5da8dSAndroid Build Coastguard Worker 'hand side *before* evaluating the right-hand side. For ' 325*cda5da8dSAndroid Build Coastguard Worker 'example, "a[i]\n' 326*cda5da8dSAndroid Build Coastguard Worker '+= f(x)" first looks-up "a[i]", then it evaluates "f(x)" and ' 327*cda5da8dSAndroid Build Coastguard Worker 'performs\n' 328*cda5da8dSAndroid Build Coastguard Worker 'the addition, and lastly, it writes the result back to ' 329*cda5da8dSAndroid Build Coastguard Worker '"a[i]".\n' 330*cda5da8dSAndroid Build Coastguard Worker '\n' 331*cda5da8dSAndroid Build Coastguard Worker 'With the exception of assigning to tuples and multiple targets ' 332*cda5da8dSAndroid Build Coastguard Worker 'in a\n' 333*cda5da8dSAndroid Build Coastguard Worker 'single statement, the assignment done by augmented assignment\n' 334*cda5da8dSAndroid Build Coastguard Worker 'statements is handled the same way as normal assignments. ' 335*cda5da8dSAndroid Build Coastguard Worker 'Similarly,\n' 336*cda5da8dSAndroid Build Coastguard Worker 'with the exception of the possible *in-place* behavior, the ' 337*cda5da8dSAndroid Build Coastguard Worker 'binary\n' 338*cda5da8dSAndroid Build Coastguard Worker 'operation performed by augmented assignment is the same as the ' 339*cda5da8dSAndroid Build Coastguard Worker 'normal\n' 340*cda5da8dSAndroid Build Coastguard Worker 'binary operations.\n' 341*cda5da8dSAndroid Build Coastguard Worker '\n' 342*cda5da8dSAndroid Build Coastguard Worker 'For targets which are attribute references, the same caveat ' 343*cda5da8dSAndroid Build Coastguard Worker 'about\n' 344*cda5da8dSAndroid Build Coastguard Worker 'class and instance attributes applies as for regular ' 345*cda5da8dSAndroid Build Coastguard Worker 'assignments.\n' 346*cda5da8dSAndroid Build Coastguard Worker '\n' 347*cda5da8dSAndroid Build Coastguard Worker '\n' 348*cda5da8dSAndroid Build Coastguard Worker 'Annotated assignment statements\n' 349*cda5da8dSAndroid Build Coastguard Worker '===============================\n' 350*cda5da8dSAndroid Build Coastguard Worker '\n' 351*cda5da8dSAndroid Build Coastguard Worker '*Annotation* assignment is the combination, in a single ' 352*cda5da8dSAndroid Build Coastguard Worker 'statement, of\n' 353*cda5da8dSAndroid Build Coastguard Worker 'a variable or attribute annotation and an optional assignment\n' 354*cda5da8dSAndroid Build Coastguard Worker 'statement:\n' 355*cda5da8dSAndroid Build Coastguard Worker '\n' 356*cda5da8dSAndroid Build Coastguard Worker ' annotated_assignment_stmt ::= augtarget ":" expression\n' 357*cda5da8dSAndroid Build Coastguard Worker ' ["=" (starred_expression | ' 358*cda5da8dSAndroid Build Coastguard Worker 'yield_expression)]\n' 359*cda5da8dSAndroid Build Coastguard Worker '\n' 360*cda5da8dSAndroid Build Coastguard Worker 'The difference from normal Assignment statements is that only ' 361*cda5da8dSAndroid Build Coastguard Worker 'a single\n' 362*cda5da8dSAndroid Build Coastguard Worker 'target is allowed.\n' 363*cda5da8dSAndroid Build Coastguard Worker '\n' 364*cda5da8dSAndroid Build Coastguard Worker 'For simple names as assignment targets, if in class or module ' 365*cda5da8dSAndroid Build Coastguard Worker 'scope,\n' 366*cda5da8dSAndroid Build Coastguard Worker 'the annotations are evaluated and stored in a special class or ' 367*cda5da8dSAndroid Build Coastguard Worker 'module\n' 368*cda5da8dSAndroid Build Coastguard Worker 'attribute "__annotations__" that is a dictionary mapping from ' 369*cda5da8dSAndroid Build Coastguard Worker 'variable\n' 370*cda5da8dSAndroid Build Coastguard Worker 'names (mangled if private) to evaluated annotations. This ' 371*cda5da8dSAndroid Build Coastguard Worker 'attribute is\n' 372*cda5da8dSAndroid Build Coastguard Worker 'writable and is automatically created at the start of class or ' 373*cda5da8dSAndroid Build Coastguard Worker 'module\n' 374*cda5da8dSAndroid Build Coastguard Worker 'body execution, if annotations are found statically.\n' 375*cda5da8dSAndroid Build Coastguard Worker '\n' 376*cda5da8dSAndroid Build Coastguard Worker 'For expressions as assignment targets, the annotations are ' 377*cda5da8dSAndroid Build Coastguard Worker 'evaluated\n' 378*cda5da8dSAndroid Build Coastguard Worker 'if in class or module scope, but not stored.\n' 379*cda5da8dSAndroid Build Coastguard Worker '\n' 380*cda5da8dSAndroid Build Coastguard Worker 'If a name is annotated in a function scope, then this name is ' 381*cda5da8dSAndroid Build Coastguard Worker 'local\n' 382*cda5da8dSAndroid Build Coastguard Worker 'for that scope. Annotations are never evaluated and stored in ' 383*cda5da8dSAndroid Build Coastguard Worker 'function\n' 384*cda5da8dSAndroid Build Coastguard Worker 'scopes.\n' 385*cda5da8dSAndroid Build Coastguard Worker '\n' 386*cda5da8dSAndroid Build Coastguard Worker 'If the right hand side is present, an annotated assignment ' 387*cda5da8dSAndroid Build Coastguard Worker 'performs\n' 388*cda5da8dSAndroid Build Coastguard Worker 'the actual assignment before evaluating annotations (where\n' 389*cda5da8dSAndroid Build Coastguard Worker 'applicable). If the right hand side is not present for an ' 390*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 391*cda5da8dSAndroid Build Coastguard Worker 'target, then the interpreter evaluates the target except for ' 392*cda5da8dSAndroid Build Coastguard Worker 'the last\n' 393*cda5da8dSAndroid Build Coastguard Worker '"__setitem__()" or "__setattr__()" call.\n' 394*cda5da8dSAndroid Build Coastguard Worker '\n' 395*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 396*cda5da8dSAndroid Build Coastguard Worker '\n' 397*cda5da8dSAndroid Build Coastguard Worker ' **PEP 526** - Syntax for Variable Annotations\n' 398*cda5da8dSAndroid Build Coastguard Worker ' The proposal that added syntax for annotating the types ' 399*cda5da8dSAndroid Build Coastguard Worker 'of\n' 400*cda5da8dSAndroid Build Coastguard Worker ' variables (including class variables and instance ' 401*cda5da8dSAndroid Build Coastguard Worker 'variables),\n' 402*cda5da8dSAndroid Build Coastguard Worker ' instead of expressing them through comments.\n' 403*cda5da8dSAndroid Build Coastguard Worker '\n' 404*cda5da8dSAndroid Build Coastguard Worker ' **PEP 484** - Type hints\n' 405*cda5da8dSAndroid Build Coastguard Worker ' The proposal that added the "typing" module to provide a ' 406*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 407*cda5da8dSAndroid Build Coastguard Worker ' syntax for type annotations that can be used in static ' 408*cda5da8dSAndroid Build Coastguard Worker 'analysis\n' 409*cda5da8dSAndroid Build Coastguard Worker ' tools and IDEs.\n' 410*cda5da8dSAndroid Build Coastguard Worker '\n' 411*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: Now annotated assignments allow the ' 412*cda5da8dSAndroid Build Coastguard Worker 'same\n' 413*cda5da8dSAndroid Build Coastguard Worker 'expressions in the right hand side as regular assignments. ' 414*cda5da8dSAndroid Build Coastguard Worker 'Previously,\n' 415*cda5da8dSAndroid Build Coastguard Worker 'some expressions (like un-parenthesized tuple expressions) ' 416*cda5da8dSAndroid Build Coastguard Worker 'caused a\n' 417*cda5da8dSAndroid Build Coastguard Worker 'syntax error.\n', 418*cda5da8dSAndroid Build Coastguard Worker 'async': 'Coroutines\n' 419*cda5da8dSAndroid Build Coastguard Worker '**********\n' 420*cda5da8dSAndroid Build Coastguard Worker '\n' 421*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5.\n' 422*cda5da8dSAndroid Build Coastguard Worker '\n' 423*cda5da8dSAndroid Build Coastguard Worker '\n' 424*cda5da8dSAndroid Build Coastguard Worker 'Coroutine function definition\n' 425*cda5da8dSAndroid Build Coastguard Worker '=============================\n' 426*cda5da8dSAndroid Build Coastguard Worker '\n' 427*cda5da8dSAndroid Build Coastguard Worker ' async_funcdef ::= [decorators] "async" "def" funcname "(" ' 428*cda5da8dSAndroid Build Coastguard Worker '[parameter_list] ")"\n' 429*cda5da8dSAndroid Build Coastguard Worker ' ["->" expression] ":" suite\n' 430*cda5da8dSAndroid Build Coastguard Worker '\n' 431*cda5da8dSAndroid Build Coastguard Worker 'Execution of Python coroutines can be suspended and resumed at ' 432*cda5da8dSAndroid Build Coastguard Worker 'many\n' 433*cda5da8dSAndroid Build Coastguard Worker 'points (see *coroutine*). "await" expressions, "async for" and ' 434*cda5da8dSAndroid Build Coastguard Worker '"async\n' 435*cda5da8dSAndroid Build Coastguard Worker 'with" can only be used in the body of a coroutine function.\n' 436*cda5da8dSAndroid Build Coastguard Worker '\n' 437*cda5da8dSAndroid Build Coastguard Worker 'Functions defined with "async def" syntax are always coroutine\n' 438*cda5da8dSAndroid Build Coastguard Worker 'functions, even if they do not contain "await" or "async" ' 439*cda5da8dSAndroid Build Coastguard Worker 'keywords.\n' 440*cda5da8dSAndroid Build Coastguard Worker '\n' 441*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use a "yield from" expression inside the ' 442*cda5da8dSAndroid Build Coastguard Worker 'body\n' 443*cda5da8dSAndroid Build Coastguard Worker 'of a coroutine function.\n' 444*cda5da8dSAndroid Build Coastguard Worker '\n' 445*cda5da8dSAndroid Build Coastguard Worker 'An example of a coroutine function:\n' 446*cda5da8dSAndroid Build Coastguard Worker '\n' 447*cda5da8dSAndroid Build Coastguard Worker ' async def func(param1, param2):\n' 448*cda5da8dSAndroid Build Coastguard Worker ' do_stuff()\n' 449*cda5da8dSAndroid Build Coastguard Worker ' await some_coroutine()\n' 450*cda5da8dSAndroid Build Coastguard Worker '\n' 451*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.7: "await" and "async" are now keywords;\n' 452*cda5da8dSAndroid Build Coastguard Worker 'previously they were only treated as such inside the body of a\n' 453*cda5da8dSAndroid Build Coastguard Worker 'coroutine function.\n' 454*cda5da8dSAndroid Build Coastguard Worker '\n' 455*cda5da8dSAndroid Build Coastguard Worker '\n' 456*cda5da8dSAndroid Build Coastguard Worker 'The "async for" statement\n' 457*cda5da8dSAndroid Build Coastguard Worker '=========================\n' 458*cda5da8dSAndroid Build Coastguard Worker '\n' 459*cda5da8dSAndroid Build Coastguard Worker ' async_for_stmt ::= "async" for_stmt\n' 460*cda5da8dSAndroid Build Coastguard Worker '\n' 461*cda5da8dSAndroid Build Coastguard Worker 'An *asynchronous iterable* provides an "__aiter__" method that\n' 462*cda5da8dSAndroid Build Coastguard Worker 'directly returns an *asynchronous iterator*, which can call\n' 463*cda5da8dSAndroid Build Coastguard Worker 'asynchronous code in its "__anext__" method.\n' 464*cda5da8dSAndroid Build Coastguard Worker '\n' 465*cda5da8dSAndroid Build Coastguard Worker 'The "async for" statement allows convenient iteration over\n' 466*cda5da8dSAndroid Build Coastguard Worker 'asynchronous iterables.\n' 467*cda5da8dSAndroid Build Coastguard Worker '\n' 468*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 469*cda5da8dSAndroid Build Coastguard Worker '\n' 470*cda5da8dSAndroid Build Coastguard Worker ' async for TARGET in ITER:\n' 471*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 472*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 473*cda5da8dSAndroid Build Coastguard Worker ' SUITE2\n' 474*cda5da8dSAndroid Build Coastguard Worker '\n' 475*cda5da8dSAndroid Build Coastguard Worker 'Is semantically equivalent to:\n' 476*cda5da8dSAndroid Build Coastguard Worker '\n' 477*cda5da8dSAndroid Build Coastguard Worker ' iter = (ITER)\n' 478*cda5da8dSAndroid Build Coastguard Worker ' iter = type(iter).__aiter__(iter)\n' 479*cda5da8dSAndroid Build Coastguard Worker ' running = True\n' 480*cda5da8dSAndroid Build Coastguard Worker '\n' 481*cda5da8dSAndroid Build Coastguard Worker ' while running:\n' 482*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 483*cda5da8dSAndroid Build Coastguard Worker ' TARGET = await type(iter).__anext__(iter)\n' 484*cda5da8dSAndroid Build Coastguard Worker ' except StopAsyncIteration:\n' 485*cda5da8dSAndroid Build Coastguard Worker ' running = False\n' 486*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 487*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 488*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 489*cda5da8dSAndroid Build Coastguard Worker ' SUITE2\n' 490*cda5da8dSAndroid Build Coastguard Worker '\n' 491*cda5da8dSAndroid Build Coastguard Worker 'See also "__aiter__()" and "__anext__()" for details.\n' 492*cda5da8dSAndroid Build Coastguard Worker '\n' 493*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use an "async for" statement outside the ' 494*cda5da8dSAndroid Build Coastguard Worker 'body\n' 495*cda5da8dSAndroid Build Coastguard Worker 'of a coroutine function.\n' 496*cda5da8dSAndroid Build Coastguard Worker '\n' 497*cda5da8dSAndroid Build Coastguard Worker '\n' 498*cda5da8dSAndroid Build Coastguard Worker 'The "async with" statement\n' 499*cda5da8dSAndroid Build Coastguard Worker '==========================\n' 500*cda5da8dSAndroid Build Coastguard Worker '\n' 501*cda5da8dSAndroid Build Coastguard Worker ' async_with_stmt ::= "async" with_stmt\n' 502*cda5da8dSAndroid Build Coastguard Worker '\n' 503*cda5da8dSAndroid Build Coastguard Worker 'An *asynchronous context manager* is a *context manager* that is ' 504*cda5da8dSAndroid Build Coastguard Worker 'able\n' 505*cda5da8dSAndroid Build Coastguard Worker 'to suspend execution in its *enter* and *exit* methods.\n' 506*cda5da8dSAndroid Build Coastguard Worker '\n' 507*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 508*cda5da8dSAndroid Build Coastguard Worker '\n' 509*cda5da8dSAndroid Build Coastguard Worker ' async with EXPRESSION as TARGET:\n' 510*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 511*cda5da8dSAndroid Build Coastguard Worker '\n' 512*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 513*cda5da8dSAndroid Build Coastguard Worker '\n' 514*cda5da8dSAndroid Build Coastguard Worker ' manager = (EXPRESSION)\n' 515*cda5da8dSAndroid Build Coastguard Worker ' aenter = type(manager).__aenter__\n' 516*cda5da8dSAndroid Build Coastguard Worker ' aexit = type(manager).__aexit__\n' 517*cda5da8dSAndroid Build Coastguard Worker ' value = await aenter(manager)\n' 518*cda5da8dSAndroid Build Coastguard Worker ' hit_except = False\n' 519*cda5da8dSAndroid Build Coastguard Worker '\n' 520*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 521*cda5da8dSAndroid Build Coastguard Worker ' TARGET = value\n' 522*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 523*cda5da8dSAndroid Build Coastguard Worker ' except:\n' 524*cda5da8dSAndroid Build Coastguard Worker ' hit_except = True\n' 525*cda5da8dSAndroid Build Coastguard Worker ' if not await aexit(manager, *sys.exc_info()):\n' 526*cda5da8dSAndroid Build Coastguard Worker ' raise\n' 527*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 528*cda5da8dSAndroid Build Coastguard Worker ' if not hit_except:\n' 529*cda5da8dSAndroid Build Coastguard Worker ' await aexit(manager, None, None, None)\n' 530*cda5da8dSAndroid Build Coastguard Worker '\n' 531*cda5da8dSAndroid Build Coastguard Worker 'See also "__aenter__()" and "__aexit__()" for details.\n' 532*cda5da8dSAndroid Build Coastguard Worker '\n' 533*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use an "async with" statement outside the\n' 534*cda5da8dSAndroid Build Coastguard Worker 'body of a coroutine function.\n' 535*cda5da8dSAndroid Build Coastguard Worker '\n' 536*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 537*cda5da8dSAndroid Build Coastguard Worker '\n' 538*cda5da8dSAndroid Build Coastguard Worker ' **PEP 492** - Coroutines with async and await syntax\n' 539*cda5da8dSAndroid Build Coastguard Worker ' The proposal that made coroutines a proper standalone concept ' 540*cda5da8dSAndroid Build Coastguard Worker 'in\n' 541*cda5da8dSAndroid Build Coastguard Worker ' Python, and added supporting syntax.\n' 542*cda5da8dSAndroid Build Coastguard Worker '\n' 543*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 544*cda5da8dSAndroid Build Coastguard Worker '\n' 545*cda5da8dSAndroid Build Coastguard Worker '[1] The exception is propagated to the invocation stack unless ' 546*cda5da8dSAndroid Build Coastguard Worker 'there\n' 547*cda5da8dSAndroid Build Coastguard Worker ' is a "finally" clause which happens to raise another ' 548*cda5da8dSAndroid Build Coastguard Worker 'exception.\n' 549*cda5da8dSAndroid Build Coastguard Worker ' That new exception causes the old one to be lost.\n' 550*cda5da8dSAndroid Build Coastguard Worker '\n' 551*cda5da8dSAndroid Build Coastguard Worker '[2] In pattern matching, a sequence is defined as one of the\n' 552*cda5da8dSAndroid Build Coastguard Worker ' following:\n' 553*cda5da8dSAndroid Build Coastguard Worker '\n' 554*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from "collections.abc.Sequence"\n' 555*cda5da8dSAndroid Build Coastguard Worker '\n' 556*cda5da8dSAndroid Build Coastguard Worker ' * a Python class that has been registered as\n' 557*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.Sequence"\n' 558*cda5da8dSAndroid Build Coastguard Worker '\n' 559*cda5da8dSAndroid Build Coastguard Worker ' * a builtin class that has its (CPython) ' 560*cda5da8dSAndroid Build Coastguard Worker '"Py_TPFLAGS_SEQUENCE"\n' 561*cda5da8dSAndroid Build Coastguard Worker ' bit set\n' 562*cda5da8dSAndroid Build Coastguard Worker '\n' 563*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from any of the above\n' 564*cda5da8dSAndroid Build Coastguard Worker '\n' 565*cda5da8dSAndroid Build Coastguard Worker ' The following standard library classes are sequences:\n' 566*cda5da8dSAndroid Build Coastguard Worker '\n' 567*cda5da8dSAndroid Build Coastguard Worker ' * "array.array"\n' 568*cda5da8dSAndroid Build Coastguard Worker '\n' 569*cda5da8dSAndroid Build Coastguard Worker ' * "collections.deque"\n' 570*cda5da8dSAndroid Build Coastguard Worker '\n' 571*cda5da8dSAndroid Build Coastguard Worker ' * "list"\n' 572*cda5da8dSAndroid Build Coastguard Worker '\n' 573*cda5da8dSAndroid Build Coastguard Worker ' * "memoryview"\n' 574*cda5da8dSAndroid Build Coastguard Worker '\n' 575*cda5da8dSAndroid Build Coastguard Worker ' * "range"\n' 576*cda5da8dSAndroid Build Coastguard Worker '\n' 577*cda5da8dSAndroid Build Coastguard Worker ' * "tuple"\n' 578*cda5da8dSAndroid Build Coastguard Worker '\n' 579*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 580*cda5da8dSAndroid Build Coastguard Worker '\n' 581*cda5da8dSAndroid Build Coastguard Worker ' Subject values of type "str", "bytes", and "bytearray" do ' 582*cda5da8dSAndroid Build Coastguard Worker 'not\n' 583*cda5da8dSAndroid Build Coastguard Worker ' match sequence patterns.\n' 584*cda5da8dSAndroid Build Coastguard Worker '\n' 585*cda5da8dSAndroid Build Coastguard Worker '[3] In pattern matching, a mapping is defined as one of the ' 586*cda5da8dSAndroid Build Coastguard Worker 'following:\n' 587*cda5da8dSAndroid Build Coastguard Worker '\n' 588*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from "collections.abc.Mapping"\n' 589*cda5da8dSAndroid Build Coastguard Worker '\n' 590*cda5da8dSAndroid Build Coastguard Worker ' * a Python class that has been registered as\n' 591*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.Mapping"\n' 592*cda5da8dSAndroid Build Coastguard Worker '\n' 593*cda5da8dSAndroid Build Coastguard Worker ' * a builtin class that has its (CPython) ' 594*cda5da8dSAndroid Build Coastguard Worker '"Py_TPFLAGS_MAPPING"\n' 595*cda5da8dSAndroid Build Coastguard Worker ' bit set\n' 596*cda5da8dSAndroid Build Coastguard Worker '\n' 597*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from any of the above\n' 598*cda5da8dSAndroid Build Coastguard Worker '\n' 599*cda5da8dSAndroid Build Coastguard Worker ' The standard library classes "dict" and ' 600*cda5da8dSAndroid Build Coastguard Worker '"types.MappingProxyType"\n' 601*cda5da8dSAndroid Build Coastguard Worker ' are mappings.\n' 602*cda5da8dSAndroid Build Coastguard Worker '\n' 603*cda5da8dSAndroid Build Coastguard Worker '[4] A string literal appearing as the first statement in the ' 604*cda5da8dSAndroid Build Coastguard Worker 'function\n' 605*cda5da8dSAndroid Build Coastguard Worker ' body is transformed into the function’s "__doc__" attribute ' 606*cda5da8dSAndroid Build Coastguard Worker 'and\n' 607*cda5da8dSAndroid Build Coastguard Worker ' therefore the function’s *docstring*.\n' 608*cda5da8dSAndroid Build Coastguard Worker '\n' 609*cda5da8dSAndroid Build Coastguard Worker '[5] A string literal appearing as the first statement in the class\n' 610*cda5da8dSAndroid Build Coastguard Worker ' body is transformed into the namespace’s "__doc__" item and\n' 611*cda5da8dSAndroid Build Coastguard Worker ' therefore the class’s *docstring*.\n', 612*cda5da8dSAndroid Build Coastguard Worker 'atom-identifiers': 'Identifiers (Names)\n' 613*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 614*cda5da8dSAndroid Build Coastguard Worker '\n' 615*cda5da8dSAndroid Build Coastguard Worker 'An identifier occurring as an atom is a name. See ' 616*cda5da8dSAndroid Build Coastguard Worker 'section Identifiers\n' 617*cda5da8dSAndroid Build Coastguard Worker 'and keywords for lexical definition and section Naming ' 618*cda5da8dSAndroid Build Coastguard Worker 'and binding for\n' 619*cda5da8dSAndroid Build Coastguard Worker 'documentation of naming and binding.\n' 620*cda5da8dSAndroid Build Coastguard Worker '\n' 621*cda5da8dSAndroid Build Coastguard Worker 'When the name is bound to an object, evaluation of the ' 622*cda5da8dSAndroid Build Coastguard Worker 'atom yields\n' 623*cda5da8dSAndroid Build Coastguard Worker 'that object. When a name is not bound, an attempt to ' 624*cda5da8dSAndroid Build Coastguard Worker 'evaluate it\n' 625*cda5da8dSAndroid Build Coastguard Worker 'raises a "NameError" exception.\n' 626*cda5da8dSAndroid Build Coastguard Worker '\n' 627*cda5da8dSAndroid Build Coastguard Worker '**Private name mangling:** When an identifier that ' 628*cda5da8dSAndroid Build Coastguard Worker 'textually occurs in\n' 629*cda5da8dSAndroid Build Coastguard Worker 'a class definition begins with two or more underscore ' 630*cda5da8dSAndroid Build Coastguard Worker 'characters and\n' 631*cda5da8dSAndroid Build Coastguard Worker 'does not end in two or more underscores, it is ' 632*cda5da8dSAndroid Build Coastguard Worker 'considered a *private\n' 633*cda5da8dSAndroid Build Coastguard Worker 'name* of that class. Private names are transformed to a ' 634*cda5da8dSAndroid Build Coastguard Worker 'longer form\n' 635*cda5da8dSAndroid Build Coastguard Worker 'before code is generated for them. The transformation ' 636*cda5da8dSAndroid Build Coastguard Worker 'inserts the\n' 637*cda5da8dSAndroid Build Coastguard Worker 'class name, with leading underscores removed and a ' 638*cda5da8dSAndroid Build Coastguard Worker 'single underscore\n' 639*cda5da8dSAndroid Build Coastguard Worker 'inserted, in front of the name. For example, the ' 640*cda5da8dSAndroid Build Coastguard Worker 'identifier "__spam"\n' 641*cda5da8dSAndroid Build Coastguard Worker 'occurring in a class named "Ham" will be transformed to ' 642*cda5da8dSAndroid Build Coastguard Worker '"_Ham__spam".\n' 643*cda5da8dSAndroid Build Coastguard Worker 'This transformation is independent of the syntactical ' 644*cda5da8dSAndroid Build Coastguard Worker 'context in which\n' 645*cda5da8dSAndroid Build Coastguard Worker 'the identifier is used. If the transformed name is ' 646*cda5da8dSAndroid Build Coastguard Worker 'extremely long\n' 647*cda5da8dSAndroid Build Coastguard Worker '(longer than 255 characters), implementation defined ' 648*cda5da8dSAndroid Build Coastguard Worker 'truncation may\n' 649*cda5da8dSAndroid Build Coastguard Worker 'happen. If the class name consists only of underscores, ' 650*cda5da8dSAndroid Build Coastguard Worker 'no\n' 651*cda5da8dSAndroid Build Coastguard Worker 'transformation is done.\n', 652*cda5da8dSAndroid Build Coastguard Worker 'atom-literals': 'Literals\n' 653*cda5da8dSAndroid Build Coastguard Worker '********\n' 654*cda5da8dSAndroid Build Coastguard Worker '\n' 655*cda5da8dSAndroid Build Coastguard Worker 'Python supports string and bytes literals and various ' 656*cda5da8dSAndroid Build Coastguard Worker 'numeric\n' 657*cda5da8dSAndroid Build Coastguard Worker 'literals:\n' 658*cda5da8dSAndroid Build Coastguard Worker '\n' 659*cda5da8dSAndroid Build Coastguard Worker ' literal ::= stringliteral | bytesliteral\n' 660*cda5da8dSAndroid Build Coastguard Worker ' | integer | floatnumber | imagnumber\n' 661*cda5da8dSAndroid Build Coastguard Worker '\n' 662*cda5da8dSAndroid Build Coastguard Worker 'Evaluation of a literal yields an object of the given type ' 663*cda5da8dSAndroid Build Coastguard Worker '(string,\n' 664*cda5da8dSAndroid Build Coastguard Worker 'bytes, integer, floating point number, complex number) with ' 665*cda5da8dSAndroid Build Coastguard Worker 'the given\n' 666*cda5da8dSAndroid Build Coastguard Worker 'value. The value may be approximated in the case of ' 667*cda5da8dSAndroid Build Coastguard Worker 'floating point\n' 668*cda5da8dSAndroid Build Coastguard Worker 'and imaginary (complex) literals. See section Literals for ' 669*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 670*cda5da8dSAndroid Build Coastguard Worker '\n' 671*cda5da8dSAndroid Build Coastguard Worker 'All literals correspond to immutable data types, and hence ' 672*cda5da8dSAndroid Build Coastguard Worker 'the\n' 673*cda5da8dSAndroid Build Coastguard Worker 'object’s identity is less important than its value. ' 674*cda5da8dSAndroid Build Coastguard Worker 'Multiple\n' 675*cda5da8dSAndroid Build Coastguard Worker 'evaluations of literals with the same value (either the ' 676*cda5da8dSAndroid Build Coastguard Worker 'same\n' 677*cda5da8dSAndroid Build Coastguard Worker 'occurrence in the program text or a different occurrence) ' 678*cda5da8dSAndroid Build Coastguard Worker 'may obtain\n' 679*cda5da8dSAndroid Build Coastguard Worker 'the same object or a different object with the same ' 680*cda5da8dSAndroid Build Coastguard Worker 'value.\n', 681*cda5da8dSAndroid Build Coastguard Worker 'attribute-access': 'Customizing attribute access\n' 682*cda5da8dSAndroid Build Coastguard Worker '****************************\n' 683*cda5da8dSAndroid Build Coastguard Worker '\n' 684*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to customize the ' 685*cda5da8dSAndroid Build Coastguard Worker 'meaning of\n' 686*cda5da8dSAndroid Build Coastguard Worker 'attribute access (use of, assignment to, or deletion of ' 687*cda5da8dSAndroid Build Coastguard Worker '"x.name") for\n' 688*cda5da8dSAndroid Build Coastguard Worker 'class instances.\n' 689*cda5da8dSAndroid Build Coastguard Worker '\n' 690*cda5da8dSAndroid Build Coastguard Worker 'object.__getattr__(self, name)\n' 691*cda5da8dSAndroid Build Coastguard Worker '\n' 692*cda5da8dSAndroid Build Coastguard Worker ' Called when the default attribute access fails with ' 693*cda5da8dSAndroid Build Coastguard Worker 'an\n' 694*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" (either "__getattribute__()" raises ' 695*cda5da8dSAndroid Build Coastguard Worker 'an\n' 696*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" because *name* is not an instance ' 697*cda5da8dSAndroid Build Coastguard Worker 'attribute or an\n' 698*cda5da8dSAndroid Build Coastguard Worker ' attribute in the class tree for "self"; or ' 699*cda5da8dSAndroid Build Coastguard Worker '"__get__()" of a *name*\n' 700*cda5da8dSAndroid Build Coastguard Worker ' property raises "AttributeError"). This method ' 701*cda5da8dSAndroid Build Coastguard Worker 'should either\n' 702*cda5da8dSAndroid Build Coastguard Worker ' return the (computed) attribute value or raise an ' 703*cda5da8dSAndroid Build Coastguard Worker '"AttributeError"\n' 704*cda5da8dSAndroid Build Coastguard Worker ' exception.\n' 705*cda5da8dSAndroid Build Coastguard Worker '\n' 706*cda5da8dSAndroid Build Coastguard Worker ' Note that if the attribute is found through the ' 707*cda5da8dSAndroid Build Coastguard Worker 'normal mechanism,\n' 708*cda5da8dSAndroid Build Coastguard Worker ' "__getattr__()" is not called. (This is an ' 709*cda5da8dSAndroid Build Coastguard Worker 'intentional asymmetry\n' 710*cda5da8dSAndroid Build Coastguard Worker ' between "__getattr__()" and "__setattr__()".) This is ' 711*cda5da8dSAndroid Build Coastguard Worker 'done both for\n' 712*cda5da8dSAndroid Build Coastguard Worker ' efficiency reasons and because otherwise ' 713*cda5da8dSAndroid Build Coastguard Worker '"__getattr__()" would have\n' 714*cda5da8dSAndroid Build Coastguard Worker ' no way to access other attributes of the instance. ' 715*cda5da8dSAndroid Build Coastguard Worker 'Note that at\n' 716*cda5da8dSAndroid Build Coastguard Worker ' least for instance variables, you can fake total ' 717*cda5da8dSAndroid Build Coastguard Worker 'control by not\n' 718*cda5da8dSAndroid Build Coastguard Worker ' inserting any values in the instance attribute ' 719*cda5da8dSAndroid Build Coastguard Worker 'dictionary (but\n' 720*cda5da8dSAndroid Build Coastguard Worker ' instead inserting them in another object). See the\n' 721*cda5da8dSAndroid Build Coastguard Worker ' "__getattribute__()" method below for a way to ' 722*cda5da8dSAndroid Build Coastguard Worker 'actually get total\n' 723*cda5da8dSAndroid Build Coastguard Worker ' control over attribute access.\n' 724*cda5da8dSAndroid Build Coastguard Worker '\n' 725*cda5da8dSAndroid Build Coastguard Worker 'object.__getattribute__(self, name)\n' 726*cda5da8dSAndroid Build Coastguard Worker '\n' 727*cda5da8dSAndroid Build Coastguard Worker ' Called unconditionally to implement attribute ' 728*cda5da8dSAndroid Build Coastguard Worker 'accesses for\n' 729*cda5da8dSAndroid Build Coastguard Worker ' instances of the class. If the class also defines ' 730*cda5da8dSAndroid Build Coastguard Worker '"__getattr__()",\n' 731*cda5da8dSAndroid Build Coastguard Worker ' the latter will not be called unless ' 732*cda5da8dSAndroid Build Coastguard Worker '"__getattribute__()" either\n' 733*cda5da8dSAndroid Build Coastguard Worker ' calls it explicitly or raises an "AttributeError". ' 734*cda5da8dSAndroid Build Coastguard Worker 'This method\n' 735*cda5da8dSAndroid Build Coastguard Worker ' should return the (computed) attribute value or raise ' 736*cda5da8dSAndroid Build Coastguard Worker 'an\n' 737*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" exception. In order to avoid ' 738*cda5da8dSAndroid Build Coastguard Worker 'infinite recursion in\n' 739*cda5da8dSAndroid Build Coastguard Worker ' this method, its implementation should always call ' 740*cda5da8dSAndroid Build Coastguard Worker 'the base class\n' 741*cda5da8dSAndroid Build Coastguard Worker ' method with the same name to access any attributes it ' 742*cda5da8dSAndroid Build Coastguard Worker 'needs, for\n' 743*cda5da8dSAndroid Build Coastguard Worker ' example, "object.__getattribute__(self, name)".\n' 744*cda5da8dSAndroid Build Coastguard Worker '\n' 745*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 746*cda5da8dSAndroid Build Coastguard Worker '\n' 747*cda5da8dSAndroid Build Coastguard Worker ' This method may still be bypassed when looking up ' 748*cda5da8dSAndroid Build Coastguard Worker 'special methods\n' 749*cda5da8dSAndroid Build Coastguard Worker ' as the result of implicit invocation via language ' 750*cda5da8dSAndroid Build Coastguard Worker 'syntax or\n' 751*cda5da8dSAndroid Build Coastguard Worker ' built-in functions. See Special method lookup.\n' 752*cda5da8dSAndroid Build Coastguard Worker '\n' 753*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute accesses, raises an ' 754*cda5da8dSAndroid Build Coastguard Worker 'auditing event\n' 755*cda5da8dSAndroid Build Coastguard Worker ' "object.__getattr__" with arguments "obj" and ' 756*cda5da8dSAndroid Build Coastguard Worker '"name".\n' 757*cda5da8dSAndroid Build Coastguard Worker '\n' 758*cda5da8dSAndroid Build Coastguard Worker 'object.__setattr__(self, name, value)\n' 759*cda5da8dSAndroid Build Coastguard Worker '\n' 760*cda5da8dSAndroid Build Coastguard Worker ' Called when an attribute assignment is attempted. ' 761*cda5da8dSAndroid Build Coastguard Worker 'This is called\n' 762*cda5da8dSAndroid Build Coastguard Worker ' instead of the normal mechanism (i.e. store the value ' 763*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 764*cda5da8dSAndroid Build Coastguard Worker ' instance dictionary). *name* is the attribute name, ' 765*cda5da8dSAndroid Build Coastguard Worker '*value* is the\n' 766*cda5da8dSAndroid Build Coastguard Worker ' value to be assigned to it.\n' 767*cda5da8dSAndroid Build Coastguard Worker '\n' 768*cda5da8dSAndroid Build Coastguard Worker ' If "__setattr__()" wants to assign to an instance ' 769*cda5da8dSAndroid Build Coastguard Worker 'attribute, it\n' 770*cda5da8dSAndroid Build Coastguard Worker ' should call the base class method with the same name, ' 771*cda5da8dSAndroid Build Coastguard Worker 'for example,\n' 772*cda5da8dSAndroid Build Coastguard Worker ' "object.__setattr__(self, name, value)".\n' 773*cda5da8dSAndroid Build Coastguard Worker '\n' 774*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute assignments, raises ' 775*cda5da8dSAndroid Build Coastguard Worker 'an auditing\n' 776*cda5da8dSAndroid Build Coastguard Worker ' event "object.__setattr__" with arguments "obj", ' 777*cda5da8dSAndroid Build Coastguard Worker '"name", "value".\n' 778*cda5da8dSAndroid Build Coastguard Worker '\n' 779*cda5da8dSAndroid Build Coastguard Worker 'object.__delattr__(self, name)\n' 780*cda5da8dSAndroid Build Coastguard Worker '\n' 781*cda5da8dSAndroid Build Coastguard Worker ' Like "__setattr__()" but for attribute deletion ' 782*cda5da8dSAndroid Build Coastguard Worker 'instead of\n' 783*cda5da8dSAndroid Build Coastguard Worker ' assignment. This should only be implemented if "del ' 784*cda5da8dSAndroid Build Coastguard Worker 'obj.name" is\n' 785*cda5da8dSAndroid Build Coastguard Worker ' meaningful for the object.\n' 786*cda5da8dSAndroid Build Coastguard Worker '\n' 787*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute deletions, raises an ' 788*cda5da8dSAndroid Build Coastguard Worker 'auditing event\n' 789*cda5da8dSAndroid Build Coastguard Worker ' "object.__delattr__" with arguments "obj" and ' 790*cda5da8dSAndroid Build Coastguard Worker '"name".\n' 791*cda5da8dSAndroid Build Coastguard Worker '\n' 792*cda5da8dSAndroid Build Coastguard Worker 'object.__dir__(self)\n' 793*cda5da8dSAndroid Build Coastguard Worker '\n' 794*cda5da8dSAndroid Build Coastguard Worker ' Called when "dir()" is called on the object. A ' 795*cda5da8dSAndroid Build Coastguard Worker 'sequence must be\n' 796*cda5da8dSAndroid Build Coastguard Worker ' returned. "dir()" converts the returned sequence to a ' 797*cda5da8dSAndroid Build Coastguard Worker 'list and\n' 798*cda5da8dSAndroid Build Coastguard Worker ' sorts it.\n' 799*cda5da8dSAndroid Build Coastguard Worker '\n' 800*cda5da8dSAndroid Build Coastguard Worker '\n' 801*cda5da8dSAndroid Build Coastguard Worker 'Customizing module attribute access\n' 802*cda5da8dSAndroid Build Coastguard Worker '===================================\n' 803*cda5da8dSAndroid Build Coastguard Worker '\n' 804*cda5da8dSAndroid Build Coastguard Worker 'Special names "__getattr__" and "__dir__" can be also ' 805*cda5da8dSAndroid Build Coastguard Worker 'used to\n' 806*cda5da8dSAndroid Build Coastguard Worker 'customize access to module attributes. The "__getattr__" ' 807*cda5da8dSAndroid Build Coastguard Worker 'function at\n' 808*cda5da8dSAndroid Build Coastguard Worker 'the module level should accept one argument which is the ' 809*cda5da8dSAndroid Build Coastguard Worker 'name of an\n' 810*cda5da8dSAndroid Build Coastguard Worker 'attribute and return the computed value or raise an ' 811*cda5da8dSAndroid Build Coastguard Worker '"AttributeError".\n' 812*cda5da8dSAndroid Build Coastguard Worker 'If an attribute is not found on a module object through ' 813*cda5da8dSAndroid Build Coastguard Worker 'the normal\n' 814*cda5da8dSAndroid Build Coastguard Worker 'lookup, i.e. "object.__getattribute__()", then ' 815*cda5da8dSAndroid Build Coastguard Worker '"__getattr__" is\n' 816*cda5da8dSAndroid Build Coastguard Worker 'searched in the module "__dict__" before raising an ' 817*cda5da8dSAndroid Build Coastguard Worker '"AttributeError".\n' 818*cda5da8dSAndroid Build Coastguard Worker 'If found, it is called with the attribute name and the ' 819*cda5da8dSAndroid Build Coastguard Worker 'result is\n' 820*cda5da8dSAndroid Build Coastguard Worker 'returned.\n' 821*cda5da8dSAndroid Build Coastguard Worker '\n' 822*cda5da8dSAndroid Build Coastguard Worker 'The "__dir__" function should accept no arguments, and ' 823*cda5da8dSAndroid Build Coastguard Worker 'return a\n' 824*cda5da8dSAndroid Build Coastguard Worker 'sequence of strings that represents the names accessible ' 825*cda5da8dSAndroid Build Coastguard Worker 'on module. If\n' 826*cda5da8dSAndroid Build Coastguard Worker 'present, this function overrides the standard "dir()" ' 827*cda5da8dSAndroid Build Coastguard Worker 'search on a\n' 828*cda5da8dSAndroid Build Coastguard Worker 'module.\n' 829*cda5da8dSAndroid Build Coastguard Worker '\n' 830*cda5da8dSAndroid Build Coastguard Worker 'For a more fine grained customization of the module ' 831*cda5da8dSAndroid Build Coastguard Worker 'behavior (setting\n' 832*cda5da8dSAndroid Build Coastguard Worker 'attributes, properties, etc.), one can set the ' 833*cda5da8dSAndroid Build Coastguard Worker '"__class__" attribute\n' 834*cda5da8dSAndroid Build Coastguard Worker 'of a module object to a subclass of "types.ModuleType". ' 835*cda5da8dSAndroid Build Coastguard Worker 'For example:\n' 836*cda5da8dSAndroid Build Coastguard Worker '\n' 837*cda5da8dSAndroid Build Coastguard Worker ' import sys\n' 838*cda5da8dSAndroid Build Coastguard Worker ' from types import ModuleType\n' 839*cda5da8dSAndroid Build Coastguard Worker '\n' 840*cda5da8dSAndroid Build Coastguard Worker ' class VerboseModule(ModuleType):\n' 841*cda5da8dSAndroid Build Coastguard Worker ' def __repr__(self):\n' 842*cda5da8dSAndroid Build Coastguard Worker " return f'Verbose {self.__name__}'\n" 843*cda5da8dSAndroid Build Coastguard Worker '\n' 844*cda5da8dSAndroid Build Coastguard Worker ' def __setattr__(self, attr, value):\n' 845*cda5da8dSAndroid Build Coastguard Worker " print(f'Setting {attr}...')\n" 846*cda5da8dSAndroid Build Coastguard Worker ' super().__setattr__(attr, value)\n' 847*cda5da8dSAndroid Build Coastguard Worker '\n' 848*cda5da8dSAndroid Build Coastguard Worker ' sys.modules[__name__].__class__ = VerboseModule\n' 849*cda5da8dSAndroid Build Coastguard Worker '\n' 850*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 851*cda5da8dSAndroid Build Coastguard Worker '\n' 852*cda5da8dSAndroid Build Coastguard Worker ' Defining module "__getattr__" and setting module ' 853*cda5da8dSAndroid Build Coastguard Worker '"__class__" only\n' 854*cda5da8dSAndroid Build Coastguard Worker ' affect lookups made using the attribute access syntax ' 855*cda5da8dSAndroid Build Coastguard Worker '– directly\n' 856*cda5da8dSAndroid Build Coastguard Worker ' accessing the module globals (whether by code within ' 857*cda5da8dSAndroid Build Coastguard Worker 'the module, or\n' 858*cda5da8dSAndroid Build Coastguard Worker ' via a reference to the module’s globals dictionary) is ' 859*cda5da8dSAndroid Build Coastguard Worker 'unaffected.\n' 860*cda5da8dSAndroid Build Coastguard Worker '\n' 861*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.5: "__class__" module attribute is ' 862*cda5da8dSAndroid Build Coastguard Worker 'now writable.\n' 863*cda5da8dSAndroid Build Coastguard Worker '\n' 864*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.7: "__getattr__" and "__dir__" module ' 865*cda5da8dSAndroid Build Coastguard Worker 'attributes.\n' 866*cda5da8dSAndroid Build Coastguard Worker '\n' 867*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 868*cda5da8dSAndroid Build Coastguard Worker '\n' 869*cda5da8dSAndroid Build Coastguard Worker ' **PEP 562** - Module __getattr__ and __dir__\n' 870*cda5da8dSAndroid Build Coastguard Worker ' Describes the "__getattr__" and "__dir__" functions ' 871*cda5da8dSAndroid Build Coastguard Worker 'on modules.\n' 872*cda5da8dSAndroid Build Coastguard Worker '\n' 873*cda5da8dSAndroid Build Coastguard Worker '\n' 874*cda5da8dSAndroid Build Coastguard Worker 'Implementing Descriptors\n' 875*cda5da8dSAndroid Build Coastguard Worker '========================\n' 876*cda5da8dSAndroid Build Coastguard Worker '\n' 877*cda5da8dSAndroid Build Coastguard Worker 'The following methods only apply when an instance of the ' 878*cda5da8dSAndroid Build Coastguard Worker 'class\n' 879*cda5da8dSAndroid Build Coastguard Worker 'containing the method (a so-called *descriptor* class) ' 880*cda5da8dSAndroid Build Coastguard Worker 'appears in an\n' 881*cda5da8dSAndroid Build Coastguard Worker '*owner* class (the descriptor must be in either the ' 882*cda5da8dSAndroid Build Coastguard Worker 'owner’s class\n' 883*cda5da8dSAndroid Build Coastguard Worker 'dictionary or in the class dictionary for one of its ' 884*cda5da8dSAndroid Build Coastguard Worker 'parents). In the\n' 885*cda5da8dSAndroid Build Coastguard Worker 'examples below, “the attribute” refers to the attribute ' 886*cda5da8dSAndroid Build Coastguard Worker 'whose name is\n' 887*cda5da8dSAndroid Build Coastguard Worker 'the key of the property in the owner class’ "__dict__".\n' 888*cda5da8dSAndroid Build Coastguard Worker '\n' 889*cda5da8dSAndroid Build Coastguard Worker 'object.__get__(self, instance, owner=None)\n' 890*cda5da8dSAndroid Build Coastguard Worker '\n' 891*cda5da8dSAndroid Build Coastguard Worker ' Called to get the attribute of the owner class (class ' 892*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 893*cda5da8dSAndroid Build Coastguard Worker ' access) or of an instance of that class (instance ' 894*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 895*cda5da8dSAndroid Build Coastguard Worker ' access). The optional *owner* argument is the owner ' 896*cda5da8dSAndroid Build Coastguard Worker 'class, while\n' 897*cda5da8dSAndroid Build Coastguard Worker ' *instance* is the instance that the attribute was ' 898*cda5da8dSAndroid Build Coastguard Worker 'accessed through,\n' 899*cda5da8dSAndroid Build Coastguard Worker ' or "None" when the attribute is accessed through the ' 900*cda5da8dSAndroid Build Coastguard Worker '*owner*.\n' 901*cda5da8dSAndroid Build Coastguard Worker '\n' 902*cda5da8dSAndroid Build Coastguard Worker ' This method should return the computed attribute ' 903*cda5da8dSAndroid Build Coastguard Worker 'value or raise an\n' 904*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" exception.\n' 905*cda5da8dSAndroid Build Coastguard Worker '\n' 906*cda5da8dSAndroid Build Coastguard Worker ' **PEP 252** specifies that "__get__()" is callable ' 907*cda5da8dSAndroid Build Coastguard Worker 'with one or two\n' 908*cda5da8dSAndroid Build Coastguard Worker ' arguments. Python’s own built-in descriptors support ' 909*cda5da8dSAndroid Build Coastguard Worker 'this\n' 910*cda5da8dSAndroid Build Coastguard Worker ' specification; however, it is likely that some ' 911*cda5da8dSAndroid Build Coastguard Worker 'third-party tools\n' 912*cda5da8dSAndroid Build Coastguard Worker ' have descriptors that require both arguments. ' 913*cda5da8dSAndroid Build Coastguard Worker 'Python’s own\n' 914*cda5da8dSAndroid Build Coastguard Worker ' "__getattribute__()" implementation always passes in ' 915*cda5da8dSAndroid Build Coastguard Worker 'both arguments\n' 916*cda5da8dSAndroid Build Coastguard Worker ' whether they are required or not.\n' 917*cda5da8dSAndroid Build Coastguard Worker '\n' 918*cda5da8dSAndroid Build Coastguard Worker 'object.__set__(self, instance, value)\n' 919*cda5da8dSAndroid Build Coastguard Worker '\n' 920*cda5da8dSAndroid Build Coastguard Worker ' Called to set the attribute on an instance *instance* ' 921*cda5da8dSAndroid Build Coastguard Worker 'of the owner\n' 922*cda5da8dSAndroid Build Coastguard Worker ' class to a new value, *value*.\n' 923*cda5da8dSAndroid Build Coastguard Worker '\n' 924*cda5da8dSAndroid Build Coastguard Worker ' Note, adding "__set__()" or "__delete__()" changes ' 925*cda5da8dSAndroid Build Coastguard Worker 'the kind of\n' 926*cda5da8dSAndroid Build Coastguard Worker ' descriptor to a “data descriptor”. See Invoking ' 927*cda5da8dSAndroid Build Coastguard Worker 'Descriptors for\n' 928*cda5da8dSAndroid Build Coastguard Worker ' more details.\n' 929*cda5da8dSAndroid Build Coastguard Worker '\n' 930*cda5da8dSAndroid Build Coastguard Worker 'object.__delete__(self, instance)\n' 931*cda5da8dSAndroid Build Coastguard Worker '\n' 932*cda5da8dSAndroid Build Coastguard Worker ' Called to delete the attribute on an instance ' 933*cda5da8dSAndroid Build Coastguard Worker '*instance* of the\n' 934*cda5da8dSAndroid Build Coastguard Worker ' owner class.\n' 935*cda5da8dSAndroid Build Coastguard Worker '\n' 936*cda5da8dSAndroid Build Coastguard Worker 'The attribute "__objclass__" is interpreted by the ' 937*cda5da8dSAndroid Build Coastguard Worker '"inspect" module as\n' 938*cda5da8dSAndroid Build Coastguard Worker 'specifying the class where this object was defined ' 939*cda5da8dSAndroid Build Coastguard Worker '(setting this\n' 940*cda5da8dSAndroid Build Coastguard Worker 'appropriately can assist in runtime introspection of ' 941*cda5da8dSAndroid Build Coastguard Worker 'dynamic class\n' 942*cda5da8dSAndroid Build Coastguard Worker 'attributes). For callables, it may indicate that an ' 943*cda5da8dSAndroid Build Coastguard Worker 'instance of the\n' 944*cda5da8dSAndroid Build Coastguard Worker 'given type (or a subclass) is expected or required as ' 945*cda5da8dSAndroid Build Coastguard Worker 'the first\n' 946*cda5da8dSAndroid Build Coastguard Worker 'positional argument (for example, CPython sets this ' 947*cda5da8dSAndroid Build Coastguard Worker 'attribute for\n' 948*cda5da8dSAndroid Build Coastguard Worker 'unbound methods that are implemented in C).\n' 949*cda5da8dSAndroid Build Coastguard Worker '\n' 950*cda5da8dSAndroid Build Coastguard Worker '\n' 951*cda5da8dSAndroid Build Coastguard Worker 'Invoking Descriptors\n' 952*cda5da8dSAndroid Build Coastguard Worker '====================\n' 953*cda5da8dSAndroid Build Coastguard Worker '\n' 954*cda5da8dSAndroid Build Coastguard Worker 'In general, a descriptor is an object attribute with ' 955*cda5da8dSAndroid Build Coastguard Worker '“binding\n' 956*cda5da8dSAndroid Build Coastguard Worker 'behavior”, one whose attribute access has been ' 957*cda5da8dSAndroid Build Coastguard Worker 'overridden by methods\n' 958*cda5da8dSAndroid Build Coastguard Worker 'in the descriptor protocol: "__get__()", "__set__()", ' 959*cda5da8dSAndroid Build Coastguard Worker 'and\n' 960*cda5da8dSAndroid Build Coastguard Worker '"__delete__()". If any of those methods are defined for ' 961*cda5da8dSAndroid Build Coastguard Worker 'an object, it\n' 962*cda5da8dSAndroid Build Coastguard Worker 'is said to be a descriptor.\n' 963*cda5da8dSAndroid Build Coastguard Worker '\n' 964*cda5da8dSAndroid Build Coastguard Worker 'The default behavior for attribute access is to get, ' 965*cda5da8dSAndroid Build Coastguard Worker 'set, or delete\n' 966*cda5da8dSAndroid Build Coastguard Worker 'the attribute from an object’s dictionary. For instance, ' 967*cda5da8dSAndroid Build Coastguard Worker '"a.x" has a\n' 968*cda5da8dSAndroid Build Coastguard Worker 'lookup chain starting with "a.__dict__[\'x\']", then\n' 969*cda5da8dSAndroid Build Coastguard Worker '"type(a).__dict__[\'x\']", and continuing through the ' 970*cda5da8dSAndroid Build Coastguard Worker 'base classes of\n' 971*cda5da8dSAndroid Build Coastguard Worker '"type(a)" excluding metaclasses.\n' 972*cda5da8dSAndroid Build Coastguard Worker '\n' 973*cda5da8dSAndroid Build Coastguard Worker 'However, if the looked-up value is an object defining ' 974*cda5da8dSAndroid Build Coastguard Worker 'one of the\n' 975*cda5da8dSAndroid Build Coastguard Worker 'descriptor methods, then Python may override the default ' 976*cda5da8dSAndroid Build Coastguard Worker 'behavior and\n' 977*cda5da8dSAndroid Build Coastguard Worker 'invoke the descriptor method instead. Where this occurs ' 978*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 979*cda5da8dSAndroid Build Coastguard Worker 'precedence chain depends on which descriptor methods ' 980*cda5da8dSAndroid Build Coastguard Worker 'were defined and\n' 981*cda5da8dSAndroid Build Coastguard Worker 'how they were called.\n' 982*cda5da8dSAndroid Build Coastguard Worker '\n' 983*cda5da8dSAndroid Build Coastguard Worker 'The starting point for descriptor invocation is a ' 984*cda5da8dSAndroid Build Coastguard Worker 'binding, "a.x". How\n' 985*cda5da8dSAndroid Build Coastguard Worker 'the arguments are assembled depends on "a":\n' 986*cda5da8dSAndroid Build Coastguard Worker '\n' 987*cda5da8dSAndroid Build Coastguard Worker 'Direct Call\n' 988*cda5da8dSAndroid Build Coastguard Worker ' The simplest and least common call is when user code ' 989*cda5da8dSAndroid Build Coastguard Worker 'directly\n' 990*cda5da8dSAndroid Build Coastguard Worker ' invokes a descriptor method: "x.__get__(a)".\n' 991*cda5da8dSAndroid Build Coastguard Worker '\n' 992*cda5da8dSAndroid Build Coastguard Worker 'Instance Binding\n' 993*cda5da8dSAndroid Build Coastguard Worker ' If binding to an object instance, "a.x" is ' 994*cda5da8dSAndroid Build Coastguard Worker 'transformed into the\n' 995*cda5da8dSAndroid Build Coastguard Worker ' call: "type(a).__dict__[\'x\'].__get__(a, type(a))".\n' 996*cda5da8dSAndroid Build Coastguard Worker '\n' 997*cda5da8dSAndroid Build Coastguard Worker 'Class Binding\n' 998*cda5da8dSAndroid Build Coastguard Worker ' If binding to a class, "A.x" is transformed into the ' 999*cda5da8dSAndroid Build Coastguard Worker 'call:\n' 1000*cda5da8dSAndroid Build Coastguard Worker ' "A.__dict__[\'x\'].__get__(None, A)".\n' 1001*cda5da8dSAndroid Build Coastguard Worker '\n' 1002*cda5da8dSAndroid Build Coastguard Worker 'Super Binding\n' 1003*cda5da8dSAndroid Build Coastguard Worker ' A dotted lookup such as "super(A, a).x" searches\n' 1004*cda5da8dSAndroid Build Coastguard Worker ' "a.__class__.__mro__" for a base class "B" following ' 1005*cda5da8dSAndroid Build Coastguard Worker '"A" and then\n' 1006*cda5da8dSAndroid Build Coastguard Worker ' returns "B.__dict__[\'x\'].__get__(a, A)". If not a ' 1007*cda5da8dSAndroid Build Coastguard Worker 'descriptor, "x"\n' 1008*cda5da8dSAndroid Build Coastguard Worker ' is returned unchanged.\n' 1009*cda5da8dSAndroid Build Coastguard Worker '\n' 1010*cda5da8dSAndroid Build Coastguard Worker 'For instance bindings, the precedence of descriptor ' 1011*cda5da8dSAndroid Build Coastguard Worker 'invocation depends\n' 1012*cda5da8dSAndroid Build Coastguard Worker 'on which descriptor methods are defined. A descriptor ' 1013*cda5da8dSAndroid Build Coastguard Worker 'can define any\n' 1014*cda5da8dSAndroid Build Coastguard Worker 'combination of "__get__()", "__set__()" and ' 1015*cda5da8dSAndroid Build Coastguard Worker '"__delete__()". If it\n' 1016*cda5da8dSAndroid Build Coastguard Worker 'does not define "__get__()", then accessing the ' 1017*cda5da8dSAndroid Build Coastguard Worker 'attribute will return\n' 1018*cda5da8dSAndroid Build Coastguard Worker 'the descriptor object itself unless there is a value in ' 1019*cda5da8dSAndroid Build Coastguard Worker 'the object’s\n' 1020*cda5da8dSAndroid Build Coastguard Worker 'instance dictionary. If the descriptor defines ' 1021*cda5da8dSAndroid Build Coastguard Worker '"__set__()" and/or\n' 1022*cda5da8dSAndroid Build Coastguard Worker '"__delete__()", it is a data descriptor; if it defines ' 1023*cda5da8dSAndroid Build Coastguard Worker 'neither, it is\n' 1024*cda5da8dSAndroid Build Coastguard Worker 'a non-data descriptor. Normally, data descriptors ' 1025*cda5da8dSAndroid Build Coastguard Worker 'define both\n' 1026*cda5da8dSAndroid Build Coastguard Worker '"__get__()" and "__set__()", while non-data descriptors ' 1027*cda5da8dSAndroid Build Coastguard Worker 'have just the\n' 1028*cda5da8dSAndroid Build Coastguard Worker '"__get__()" method. Data descriptors with "__get__()" ' 1029*cda5da8dSAndroid Build Coastguard Worker 'and "__set__()"\n' 1030*cda5da8dSAndroid Build Coastguard Worker '(and/or "__delete__()") defined always override a ' 1031*cda5da8dSAndroid Build Coastguard Worker 'redefinition in an\n' 1032*cda5da8dSAndroid Build Coastguard Worker 'instance dictionary. In contrast, non-data descriptors ' 1033*cda5da8dSAndroid Build Coastguard Worker 'can be\n' 1034*cda5da8dSAndroid Build Coastguard Worker 'overridden by instances.\n' 1035*cda5da8dSAndroid Build Coastguard Worker '\n' 1036*cda5da8dSAndroid Build Coastguard Worker 'Python methods (including those decorated with ' 1037*cda5da8dSAndroid Build Coastguard Worker '"@staticmethod" and\n' 1038*cda5da8dSAndroid Build Coastguard Worker '"@classmethod") are implemented as non-data ' 1039*cda5da8dSAndroid Build Coastguard Worker 'descriptors. Accordingly,\n' 1040*cda5da8dSAndroid Build Coastguard Worker 'instances can redefine and override methods. This ' 1041*cda5da8dSAndroid Build Coastguard Worker 'allows individual\n' 1042*cda5da8dSAndroid Build Coastguard Worker 'instances to acquire behaviors that differ from other ' 1043*cda5da8dSAndroid Build Coastguard Worker 'instances of the\n' 1044*cda5da8dSAndroid Build Coastguard Worker 'same class.\n' 1045*cda5da8dSAndroid Build Coastguard Worker '\n' 1046*cda5da8dSAndroid Build Coastguard Worker 'The "property()" function is implemented as a data ' 1047*cda5da8dSAndroid Build Coastguard Worker 'descriptor.\n' 1048*cda5da8dSAndroid Build Coastguard Worker 'Accordingly, instances cannot override the behavior of a ' 1049*cda5da8dSAndroid Build Coastguard Worker 'property.\n' 1050*cda5da8dSAndroid Build Coastguard Worker '\n' 1051*cda5da8dSAndroid Build Coastguard Worker '\n' 1052*cda5da8dSAndroid Build Coastguard Worker '__slots__\n' 1053*cda5da8dSAndroid Build Coastguard Worker '=========\n' 1054*cda5da8dSAndroid Build Coastguard Worker '\n' 1055*cda5da8dSAndroid Build Coastguard Worker '*__slots__* allow us to explicitly declare data members ' 1056*cda5da8dSAndroid Build Coastguard Worker '(like\n' 1057*cda5da8dSAndroid Build Coastguard Worker 'properties) and deny the creation of "__dict__" and ' 1058*cda5da8dSAndroid Build Coastguard Worker '*__weakref__*\n' 1059*cda5da8dSAndroid Build Coastguard Worker '(unless explicitly declared in *__slots__* or available ' 1060*cda5da8dSAndroid Build Coastguard Worker 'in a parent.)\n' 1061*cda5da8dSAndroid Build Coastguard Worker '\n' 1062*cda5da8dSAndroid Build Coastguard Worker 'The space saved over using "__dict__" can be ' 1063*cda5da8dSAndroid Build Coastguard Worker 'significant. Attribute\n' 1064*cda5da8dSAndroid Build Coastguard Worker 'lookup speed can be significantly improved as well.\n' 1065*cda5da8dSAndroid Build Coastguard Worker '\n' 1066*cda5da8dSAndroid Build Coastguard Worker 'object.__slots__\n' 1067*cda5da8dSAndroid Build Coastguard Worker '\n' 1068*cda5da8dSAndroid Build Coastguard Worker ' This class variable can be assigned a string, ' 1069*cda5da8dSAndroid Build Coastguard Worker 'iterable, or sequence\n' 1070*cda5da8dSAndroid Build Coastguard Worker ' of strings with variable names used by instances. ' 1071*cda5da8dSAndroid Build Coastguard Worker '*__slots__*\n' 1072*cda5da8dSAndroid Build Coastguard Worker ' reserves space for the declared variables and ' 1073*cda5da8dSAndroid Build Coastguard Worker 'prevents the\n' 1074*cda5da8dSAndroid Build Coastguard Worker ' automatic creation of "__dict__" and *__weakref__* ' 1075*cda5da8dSAndroid Build Coastguard Worker 'for each\n' 1076*cda5da8dSAndroid Build Coastguard Worker ' instance.\n' 1077*cda5da8dSAndroid Build Coastguard Worker '\n' 1078*cda5da8dSAndroid Build Coastguard Worker '\n' 1079*cda5da8dSAndroid Build Coastguard Worker 'Notes on using *__slots__*\n' 1080*cda5da8dSAndroid Build Coastguard Worker '--------------------------\n' 1081*cda5da8dSAndroid Build Coastguard Worker '\n' 1082*cda5da8dSAndroid Build Coastguard Worker '* When inheriting from a class without *__slots__*, the ' 1083*cda5da8dSAndroid Build Coastguard Worker '"__dict__" and\n' 1084*cda5da8dSAndroid Build Coastguard Worker ' *__weakref__* attribute of the instances will always ' 1085*cda5da8dSAndroid Build Coastguard Worker 'be accessible.\n' 1086*cda5da8dSAndroid Build Coastguard Worker '\n' 1087*cda5da8dSAndroid Build Coastguard Worker '* Without a "__dict__" variable, instances cannot be ' 1088*cda5da8dSAndroid Build Coastguard Worker 'assigned new\n' 1089*cda5da8dSAndroid Build Coastguard Worker ' variables not listed in the *__slots__* definition. ' 1090*cda5da8dSAndroid Build Coastguard Worker 'Attempts to\n' 1091*cda5da8dSAndroid Build Coastguard Worker ' assign to an unlisted variable name raises ' 1092*cda5da8dSAndroid Build Coastguard Worker '"AttributeError". If\n' 1093*cda5da8dSAndroid Build Coastguard Worker ' dynamic assignment of new variables is desired, then ' 1094*cda5da8dSAndroid Build Coastguard Worker 'add\n' 1095*cda5da8dSAndroid Build Coastguard Worker ' "\'__dict__\'" to the sequence of strings in the ' 1096*cda5da8dSAndroid Build Coastguard Worker '*__slots__*\n' 1097*cda5da8dSAndroid Build Coastguard Worker ' declaration.\n' 1098*cda5da8dSAndroid Build Coastguard Worker '\n' 1099*cda5da8dSAndroid Build Coastguard Worker '* Without a *__weakref__* variable for each instance, ' 1100*cda5da8dSAndroid Build Coastguard Worker 'classes defining\n' 1101*cda5da8dSAndroid Build Coastguard Worker ' *__slots__* do not support "weak references" to its ' 1102*cda5da8dSAndroid Build Coastguard Worker 'instances. If\n' 1103*cda5da8dSAndroid Build Coastguard Worker ' weak reference support is needed, then add ' 1104*cda5da8dSAndroid Build Coastguard Worker '"\'__weakref__\'" to the\n' 1105*cda5da8dSAndroid Build Coastguard Worker ' sequence of strings in the *__slots__* declaration.\n' 1106*cda5da8dSAndroid Build Coastguard Worker '\n' 1107*cda5da8dSAndroid Build Coastguard Worker '* *__slots__* are implemented at the class level by ' 1108*cda5da8dSAndroid Build Coastguard Worker 'creating\n' 1109*cda5da8dSAndroid Build Coastguard Worker ' descriptors for each variable name. As a result, ' 1110*cda5da8dSAndroid Build Coastguard Worker 'class attributes\n' 1111*cda5da8dSAndroid Build Coastguard Worker ' cannot be used to set default values for instance ' 1112*cda5da8dSAndroid Build Coastguard Worker 'variables defined\n' 1113*cda5da8dSAndroid Build Coastguard Worker ' by *__slots__*; otherwise, the class attribute would ' 1114*cda5da8dSAndroid Build Coastguard Worker 'overwrite the\n' 1115*cda5da8dSAndroid Build Coastguard Worker ' descriptor assignment.\n' 1116*cda5da8dSAndroid Build Coastguard Worker '\n' 1117*cda5da8dSAndroid Build Coastguard Worker '* The action of a *__slots__* declaration is not limited ' 1118*cda5da8dSAndroid Build Coastguard Worker 'to the class\n' 1119*cda5da8dSAndroid Build Coastguard Worker ' where it is defined. *__slots__* declared in parents ' 1120*cda5da8dSAndroid Build Coastguard Worker 'are available\n' 1121*cda5da8dSAndroid Build Coastguard Worker ' in child classes. However, child subclasses will get a ' 1122*cda5da8dSAndroid Build Coastguard Worker '"__dict__"\n' 1123*cda5da8dSAndroid Build Coastguard Worker ' and *__weakref__* unless they also define *__slots__* ' 1124*cda5da8dSAndroid Build Coastguard Worker '(which should\n' 1125*cda5da8dSAndroid Build Coastguard Worker ' only contain names of any *additional* slots).\n' 1126*cda5da8dSAndroid Build Coastguard Worker '\n' 1127*cda5da8dSAndroid Build Coastguard Worker '* If a class defines a slot also defined in a base ' 1128*cda5da8dSAndroid Build Coastguard Worker 'class, the instance\n' 1129*cda5da8dSAndroid Build Coastguard Worker ' variable defined by the base class slot is ' 1130*cda5da8dSAndroid Build Coastguard Worker 'inaccessible (except by\n' 1131*cda5da8dSAndroid Build Coastguard Worker ' retrieving its descriptor directly from the base ' 1132*cda5da8dSAndroid Build Coastguard Worker 'class). This\n' 1133*cda5da8dSAndroid Build Coastguard Worker ' renders the meaning of the program undefined. In the ' 1134*cda5da8dSAndroid Build Coastguard Worker 'future, a\n' 1135*cda5da8dSAndroid Build Coastguard Worker ' check may be added to prevent this.\n' 1136*cda5da8dSAndroid Build Coastguard Worker '\n' 1137*cda5da8dSAndroid Build Coastguard Worker '* "TypeError" will be raised if nonempty *__slots__* are ' 1138*cda5da8dSAndroid Build Coastguard Worker 'defined for a\n' 1139*cda5da8dSAndroid Build Coastguard Worker ' class derived from a ""variable-length" built-in type" ' 1140*cda5da8dSAndroid Build Coastguard Worker 'such as\n' 1141*cda5da8dSAndroid Build Coastguard Worker ' "int", "bytes", and "tuple".\n' 1142*cda5da8dSAndroid Build Coastguard Worker '\n' 1143*cda5da8dSAndroid Build Coastguard Worker '* Any non-string *iterable* may be assigned to ' 1144*cda5da8dSAndroid Build Coastguard Worker '*__slots__*.\n' 1145*cda5da8dSAndroid Build Coastguard Worker '\n' 1146*cda5da8dSAndroid Build Coastguard Worker '* If a "dictionary" is used to assign *__slots__*, the ' 1147*cda5da8dSAndroid Build Coastguard Worker 'dictionary keys\n' 1148*cda5da8dSAndroid Build Coastguard Worker ' will be used as the slot names. The values of the ' 1149*cda5da8dSAndroid Build Coastguard Worker 'dictionary can be\n' 1150*cda5da8dSAndroid Build Coastguard Worker ' used to provide per-attribute docstrings that will be ' 1151*cda5da8dSAndroid Build Coastguard Worker 'recognised by\n' 1152*cda5da8dSAndroid Build Coastguard Worker ' "inspect.getdoc()" and displayed in the output of ' 1153*cda5da8dSAndroid Build Coastguard Worker '"help()".\n' 1154*cda5da8dSAndroid Build Coastguard Worker '\n' 1155*cda5da8dSAndroid Build Coastguard Worker '* "__class__" assignment works only if both classes have ' 1156*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 1157*cda5da8dSAndroid Build Coastguard Worker ' *__slots__*.\n' 1158*cda5da8dSAndroid Build Coastguard Worker '\n' 1159*cda5da8dSAndroid Build Coastguard Worker '* Multiple inheritance with multiple slotted parent ' 1160*cda5da8dSAndroid Build Coastguard Worker 'classes can be\n' 1161*cda5da8dSAndroid Build Coastguard Worker ' used, but only one parent is allowed to have ' 1162*cda5da8dSAndroid Build Coastguard Worker 'attributes created by\n' 1163*cda5da8dSAndroid Build Coastguard Worker ' slots (the other bases must have empty slot layouts) - ' 1164*cda5da8dSAndroid Build Coastguard Worker 'violations\n' 1165*cda5da8dSAndroid Build Coastguard Worker ' raise "TypeError".\n' 1166*cda5da8dSAndroid Build Coastguard Worker '\n' 1167*cda5da8dSAndroid Build Coastguard Worker '* If an *iterator* is used for *__slots__* then a ' 1168*cda5da8dSAndroid Build Coastguard Worker '*descriptor* is\n' 1169*cda5da8dSAndroid Build Coastguard Worker ' created for each of the iterator’s values. However, ' 1170*cda5da8dSAndroid Build Coastguard Worker 'the *__slots__*\n' 1171*cda5da8dSAndroid Build Coastguard Worker ' attribute will be an empty iterator.\n', 1172*cda5da8dSAndroid Build Coastguard Worker 'attribute-references': 'Attribute references\n' 1173*cda5da8dSAndroid Build Coastguard Worker '********************\n' 1174*cda5da8dSAndroid Build Coastguard Worker '\n' 1175*cda5da8dSAndroid Build Coastguard Worker 'An attribute reference is a primary followed by a ' 1176*cda5da8dSAndroid Build Coastguard Worker 'period and a name:\n' 1177*cda5da8dSAndroid Build Coastguard Worker '\n' 1178*cda5da8dSAndroid Build Coastguard Worker ' attributeref ::= primary "." identifier\n' 1179*cda5da8dSAndroid Build Coastguard Worker '\n' 1180*cda5da8dSAndroid Build Coastguard Worker 'The primary must evaluate to an object of a type ' 1181*cda5da8dSAndroid Build Coastguard Worker 'that supports\n' 1182*cda5da8dSAndroid Build Coastguard Worker 'attribute references, which most objects do. This ' 1183*cda5da8dSAndroid Build Coastguard Worker 'object is then\n' 1184*cda5da8dSAndroid Build Coastguard Worker 'asked to produce the attribute whose name is the ' 1185*cda5da8dSAndroid Build Coastguard Worker 'identifier. This\n' 1186*cda5da8dSAndroid Build Coastguard Worker 'production can be customized by overriding the ' 1187*cda5da8dSAndroid Build Coastguard Worker '"__getattr__()" method.\n' 1188*cda5da8dSAndroid Build Coastguard Worker 'If this attribute is not available, the exception ' 1189*cda5da8dSAndroid Build Coastguard Worker '"AttributeError" is\n' 1190*cda5da8dSAndroid Build Coastguard Worker 'raised. Otherwise, the type and value of the object ' 1191*cda5da8dSAndroid Build Coastguard Worker 'produced is\n' 1192*cda5da8dSAndroid Build Coastguard Worker 'determined by the object. Multiple evaluations of ' 1193*cda5da8dSAndroid Build Coastguard Worker 'the same attribute\n' 1194*cda5da8dSAndroid Build Coastguard Worker 'reference may yield different objects.\n', 1195*cda5da8dSAndroid Build Coastguard Worker 'augassign': 'Augmented assignment statements\n' 1196*cda5da8dSAndroid Build Coastguard Worker '*******************************\n' 1197*cda5da8dSAndroid Build Coastguard Worker '\n' 1198*cda5da8dSAndroid Build Coastguard Worker 'Augmented assignment is the combination, in a single statement, ' 1199*cda5da8dSAndroid Build Coastguard Worker 'of a\n' 1200*cda5da8dSAndroid Build Coastguard Worker 'binary operation and an assignment statement:\n' 1201*cda5da8dSAndroid Build Coastguard Worker '\n' 1202*cda5da8dSAndroid Build Coastguard Worker ' augmented_assignment_stmt ::= augtarget augop ' 1203*cda5da8dSAndroid Build Coastguard Worker '(expression_list | yield_expression)\n' 1204*cda5da8dSAndroid Build Coastguard Worker ' augtarget ::= identifier | attributeref | ' 1205*cda5da8dSAndroid Build Coastguard Worker 'subscription | slicing\n' 1206*cda5da8dSAndroid Build Coastguard Worker ' augop ::= "+=" | "-=" | "*=" | "@=" | ' 1207*cda5da8dSAndroid Build Coastguard Worker '"/=" | "//=" | "%=" | "**="\n' 1208*cda5da8dSAndroid Build Coastguard Worker ' | ">>=" | "<<=" | "&=" | "^=" | "|="\n' 1209*cda5da8dSAndroid Build Coastguard Worker '\n' 1210*cda5da8dSAndroid Build Coastguard Worker '(See section Primaries for the syntax definitions of the last ' 1211*cda5da8dSAndroid Build Coastguard Worker 'three\n' 1212*cda5da8dSAndroid Build Coastguard Worker 'symbols.)\n' 1213*cda5da8dSAndroid Build Coastguard Worker '\n' 1214*cda5da8dSAndroid Build Coastguard Worker 'An augmented assignment evaluates the target (which, unlike ' 1215*cda5da8dSAndroid Build Coastguard Worker 'normal\n' 1216*cda5da8dSAndroid Build Coastguard Worker 'assignment statements, cannot be an unpacking) and the ' 1217*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 1218*cda5da8dSAndroid Build Coastguard Worker 'list, performs the binary operation specific to the type of ' 1219*cda5da8dSAndroid Build Coastguard Worker 'assignment\n' 1220*cda5da8dSAndroid Build Coastguard Worker 'on the two operands, and assigns the result to the original ' 1221*cda5da8dSAndroid Build Coastguard Worker 'target.\n' 1222*cda5da8dSAndroid Build Coastguard Worker 'The target is only evaluated once.\n' 1223*cda5da8dSAndroid Build Coastguard Worker '\n' 1224*cda5da8dSAndroid Build Coastguard Worker 'An augmented assignment expression like "x += 1" can be ' 1225*cda5da8dSAndroid Build Coastguard Worker 'rewritten as\n' 1226*cda5da8dSAndroid Build Coastguard Worker '"x = x + 1" to achieve a similar, but not exactly equal effect. ' 1227*cda5da8dSAndroid Build Coastguard Worker 'In the\n' 1228*cda5da8dSAndroid Build Coastguard Worker 'augmented version, "x" is only evaluated once. Also, when ' 1229*cda5da8dSAndroid Build Coastguard Worker 'possible,\n' 1230*cda5da8dSAndroid Build Coastguard Worker 'the actual operation is performed *in-place*, meaning that ' 1231*cda5da8dSAndroid Build Coastguard Worker 'rather than\n' 1232*cda5da8dSAndroid Build Coastguard Worker 'creating a new object and assigning that to the target, the old ' 1233*cda5da8dSAndroid Build Coastguard Worker 'object\n' 1234*cda5da8dSAndroid Build Coastguard Worker 'is modified instead.\n' 1235*cda5da8dSAndroid Build Coastguard Worker '\n' 1236*cda5da8dSAndroid Build Coastguard Worker 'Unlike normal assignments, augmented assignments evaluate the ' 1237*cda5da8dSAndroid Build Coastguard Worker 'left-\n' 1238*cda5da8dSAndroid Build Coastguard Worker 'hand side *before* evaluating the right-hand side. For ' 1239*cda5da8dSAndroid Build Coastguard Worker 'example, "a[i]\n' 1240*cda5da8dSAndroid Build Coastguard Worker '+= f(x)" first looks-up "a[i]", then it evaluates "f(x)" and ' 1241*cda5da8dSAndroid Build Coastguard Worker 'performs\n' 1242*cda5da8dSAndroid Build Coastguard Worker 'the addition, and lastly, it writes the result back to "a[i]".\n' 1243*cda5da8dSAndroid Build Coastguard Worker '\n' 1244*cda5da8dSAndroid Build Coastguard Worker 'With the exception of assigning to tuples and multiple targets ' 1245*cda5da8dSAndroid Build Coastguard Worker 'in a\n' 1246*cda5da8dSAndroid Build Coastguard Worker 'single statement, the assignment done by augmented assignment\n' 1247*cda5da8dSAndroid Build Coastguard Worker 'statements is handled the same way as normal assignments. ' 1248*cda5da8dSAndroid Build Coastguard Worker 'Similarly,\n' 1249*cda5da8dSAndroid Build Coastguard Worker 'with the exception of the possible *in-place* behavior, the ' 1250*cda5da8dSAndroid Build Coastguard Worker 'binary\n' 1251*cda5da8dSAndroid Build Coastguard Worker 'operation performed by augmented assignment is the same as the ' 1252*cda5da8dSAndroid Build Coastguard Worker 'normal\n' 1253*cda5da8dSAndroid Build Coastguard Worker 'binary operations.\n' 1254*cda5da8dSAndroid Build Coastguard Worker '\n' 1255*cda5da8dSAndroid Build Coastguard Worker 'For targets which are attribute references, the same caveat ' 1256*cda5da8dSAndroid Build Coastguard Worker 'about\n' 1257*cda5da8dSAndroid Build Coastguard Worker 'class and instance attributes applies as for regular ' 1258*cda5da8dSAndroid Build Coastguard Worker 'assignments.\n', 1259*cda5da8dSAndroid Build Coastguard Worker 'await': 'Await expression\n' 1260*cda5da8dSAndroid Build Coastguard Worker '****************\n' 1261*cda5da8dSAndroid Build Coastguard Worker '\n' 1262*cda5da8dSAndroid Build Coastguard Worker 'Suspend the execution of *coroutine* on an *awaitable* object. Can\n' 1263*cda5da8dSAndroid Build Coastguard Worker 'only be used inside a *coroutine function*.\n' 1264*cda5da8dSAndroid Build Coastguard Worker '\n' 1265*cda5da8dSAndroid Build Coastguard Worker ' await_expr ::= "await" primary\n' 1266*cda5da8dSAndroid Build Coastguard Worker '\n' 1267*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5.\n', 1268*cda5da8dSAndroid Build Coastguard Worker 'binary': 'Binary arithmetic operations\n' 1269*cda5da8dSAndroid Build Coastguard Worker '****************************\n' 1270*cda5da8dSAndroid Build Coastguard Worker '\n' 1271*cda5da8dSAndroid Build Coastguard Worker 'The binary arithmetic operations have the conventional priority\n' 1272*cda5da8dSAndroid Build Coastguard Worker 'levels. Note that some of these operations also apply to certain ' 1273*cda5da8dSAndroid Build Coastguard Worker 'non-\n' 1274*cda5da8dSAndroid Build Coastguard Worker 'numeric types. Apart from the power operator, there are only two\n' 1275*cda5da8dSAndroid Build Coastguard Worker 'levels, one for multiplicative operators and one for additive\n' 1276*cda5da8dSAndroid Build Coastguard Worker 'operators:\n' 1277*cda5da8dSAndroid Build Coastguard Worker '\n' 1278*cda5da8dSAndroid Build Coastguard Worker ' m_expr ::= u_expr | m_expr "*" u_expr | m_expr "@" m_expr |\n' 1279*cda5da8dSAndroid Build Coastguard Worker ' m_expr "//" u_expr | m_expr "/" u_expr |\n' 1280*cda5da8dSAndroid Build Coastguard Worker ' m_expr "%" u_expr\n' 1281*cda5da8dSAndroid Build Coastguard Worker ' a_expr ::= m_expr | a_expr "+" m_expr | a_expr "-" m_expr\n' 1282*cda5da8dSAndroid Build Coastguard Worker '\n' 1283*cda5da8dSAndroid Build Coastguard Worker 'The "*" (multiplication) operator yields the product of its ' 1284*cda5da8dSAndroid Build Coastguard Worker 'arguments.\n' 1285*cda5da8dSAndroid Build Coastguard Worker 'The arguments must either both be numbers, or one argument must be ' 1286*cda5da8dSAndroid Build Coastguard Worker 'an\n' 1287*cda5da8dSAndroid Build Coastguard Worker 'integer and the other must be a sequence. In the former case, the\n' 1288*cda5da8dSAndroid Build Coastguard Worker 'numbers are converted to a common type and then multiplied ' 1289*cda5da8dSAndroid Build Coastguard Worker 'together.\n' 1290*cda5da8dSAndroid Build Coastguard Worker 'In the latter case, sequence repetition is performed; a negative\n' 1291*cda5da8dSAndroid Build Coastguard Worker 'repetition factor yields an empty sequence.\n' 1292*cda5da8dSAndroid Build Coastguard Worker '\n' 1293*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special "__mul__()" ' 1294*cda5da8dSAndroid Build Coastguard Worker 'and\n' 1295*cda5da8dSAndroid Build Coastguard Worker '"__rmul__()" methods.\n' 1296*cda5da8dSAndroid Build Coastguard Worker '\n' 1297*cda5da8dSAndroid Build Coastguard Worker 'The "@" (at) operator is intended to be used for matrix\n' 1298*cda5da8dSAndroid Build Coastguard Worker 'multiplication. No builtin Python types implement this operator.\n' 1299*cda5da8dSAndroid Build Coastguard Worker '\n' 1300*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5.\n' 1301*cda5da8dSAndroid Build Coastguard Worker '\n' 1302*cda5da8dSAndroid Build Coastguard Worker 'The "/" (division) and "//" (floor division) operators yield the\n' 1303*cda5da8dSAndroid Build Coastguard Worker 'quotient of their arguments. The numeric arguments are first\n' 1304*cda5da8dSAndroid Build Coastguard Worker 'converted to a common type. Division of integers yields a float, ' 1305*cda5da8dSAndroid Build Coastguard Worker 'while\n' 1306*cda5da8dSAndroid Build Coastguard Worker 'floor division of integers results in an integer; the result is ' 1307*cda5da8dSAndroid Build Coastguard Worker 'that\n' 1308*cda5da8dSAndroid Build Coastguard Worker 'of mathematical division with the ‘floor’ function applied to the\n' 1309*cda5da8dSAndroid Build Coastguard Worker 'result. Division by zero raises the "ZeroDivisionError" ' 1310*cda5da8dSAndroid Build Coastguard Worker 'exception.\n' 1311*cda5da8dSAndroid Build Coastguard Worker '\n' 1312*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special "__truediv__()" ' 1313*cda5da8dSAndroid Build Coastguard Worker 'and\n' 1314*cda5da8dSAndroid Build Coastguard Worker '"__floordiv__()" methods.\n' 1315*cda5da8dSAndroid Build Coastguard Worker '\n' 1316*cda5da8dSAndroid Build Coastguard Worker 'The "%" (modulo) operator yields the remainder from the division ' 1317*cda5da8dSAndroid Build Coastguard Worker 'of\n' 1318*cda5da8dSAndroid Build Coastguard Worker 'the first argument by the second. The numeric arguments are ' 1319*cda5da8dSAndroid Build Coastguard Worker 'first\n' 1320*cda5da8dSAndroid Build Coastguard Worker 'converted to a common type. A zero right argument raises the\n' 1321*cda5da8dSAndroid Build Coastguard Worker '"ZeroDivisionError" exception. The arguments may be floating ' 1322*cda5da8dSAndroid Build Coastguard Worker 'point\n' 1323*cda5da8dSAndroid Build Coastguard Worker 'numbers, e.g., "3.14%0.7" equals "0.34" (since "3.14" equals ' 1324*cda5da8dSAndroid Build Coastguard Worker '"4*0.7 +\n' 1325*cda5da8dSAndroid Build Coastguard Worker '0.34".) The modulo operator always yields a result with the same ' 1326*cda5da8dSAndroid Build Coastguard Worker 'sign\n' 1327*cda5da8dSAndroid Build Coastguard Worker 'as its second operand (or zero); the absolute value of the result ' 1328*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1329*cda5da8dSAndroid Build Coastguard Worker 'strictly smaller than the absolute value of the second operand ' 1330*cda5da8dSAndroid Build Coastguard Worker '[1].\n' 1331*cda5da8dSAndroid Build Coastguard Worker '\n' 1332*cda5da8dSAndroid Build Coastguard Worker 'The floor division and modulo operators are connected by the ' 1333*cda5da8dSAndroid Build Coastguard Worker 'following\n' 1334*cda5da8dSAndroid Build Coastguard Worker 'identity: "x == (x//y)*y + (x%y)". Floor division and modulo are ' 1335*cda5da8dSAndroid Build Coastguard Worker 'also\n' 1336*cda5da8dSAndroid Build Coastguard Worker 'connected with the built-in function "divmod()": "divmod(x, y) ==\n' 1337*cda5da8dSAndroid Build Coastguard Worker '(x//y, x%y)". [2].\n' 1338*cda5da8dSAndroid Build Coastguard Worker '\n' 1339*cda5da8dSAndroid Build Coastguard Worker 'In addition to performing the modulo operation on numbers, the ' 1340*cda5da8dSAndroid Build Coastguard Worker '"%"\n' 1341*cda5da8dSAndroid Build Coastguard Worker 'operator is also overloaded by string objects to perform ' 1342*cda5da8dSAndroid Build Coastguard Worker 'old-style\n' 1343*cda5da8dSAndroid Build Coastguard Worker 'string formatting (also known as interpolation). The syntax for\n' 1344*cda5da8dSAndroid Build Coastguard Worker 'string formatting is described in the Python Library Reference,\n' 1345*cda5da8dSAndroid Build Coastguard Worker 'section printf-style String Formatting.\n' 1346*cda5da8dSAndroid Build Coastguard Worker '\n' 1347*cda5da8dSAndroid Build Coastguard Worker 'The *modulo* operation can be customized using the special ' 1348*cda5da8dSAndroid Build Coastguard Worker '"__mod__()"\n' 1349*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 1350*cda5da8dSAndroid Build Coastguard Worker '\n' 1351*cda5da8dSAndroid Build Coastguard Worker 'The floor division operator, the modulo operator, and the ' 1352*cda5da8dSAndroid Build Coastguard Worker '"divmod()"\n' 1353*cda5da8dSAndroid Build Coastguard Worker 'function are not defined for complex numbers. Instead, convert to ' 1354*cda5da8dSAndroid Build Coastguard Worker 'a\n' 1355*cda5da8dSAndroid Build Coastguard Worker 'floating point number using the "abs()" function if appropriate.\n' 1356*cda5da8dSAndroid Build Coastguard Worker '\n' 1357*cda5da8dSAndroid Build Coastguard Worker 'The "+" (addition) operator yields the sum of its arguments. The\n' 1358*cda5da8dSAndroid Build Coastguard Worker 'arguments must either both be numbers or both be sequences of the ' 1359*cda5da8dSAndroid Build Coastguard Worker 'same\n' 1360*cda5da8dSAndroid Build Coastguard Worker 'type. In the former case, the numbers are converted to a common ' 1361*cda5da8dSAndroid Build Coastguard Worker 'type\n' 1362*cda5da8dSAndroid Build Coastguard Worker 'and then added together. In the latter case, the sequences are\n' 1363*cda5da8dSAndroid Build Coastguard Worker 'concatenated.\n' 1364*cda5da8dSAndroid Build Coastguard Worker '\n' 1365*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special "__add__()" ' 1366*cda5da8dSAndroid Build Coastguard Worker 'and\n' 1367*cda5da8dSAndroid Build Coastguard Worker '"__radd__()" methods.\n' 1368*cda5da8dSAndroid Build Coastguard Worker '\n' 1369*cda5da8dSAndroid Build Coastguard Worker 'The "-" (subtraction) operator yields the difference of its ' 1370*cda5da8dSAndroid Build Coastguard Worker 'arguments.\n' 1371*cda5da8dSAndroid Build Coastguard Worker 'The numeric arguments are first converted to a common type.\n' 1372*cda5da8dSAndroid Build Coastguard Worker '\n' 1373*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special "__sub__()" ' 1374*cda5da8dSAndroid Build Coastguard Worker 'method.\n', 1375*cda5da8dSAndroid Build Coastguard Worker 'bitwise': 'Binary bitwise operations\n' 1376*cda5da8dSAndroid Build Coastguard Worker '*************************\n' 1377*cda5da8dSAndroid Build Coastguard Worker '\n' 1378*cda5da8dSAndroid Build Coastguard Worker 'Each of the three bitwise operations has a different priority ' 1379*cda5da8dSAndroid Build Coastguard Worker 'level:\n' 1380*cda5da8dSAndroid Build Coastguard Worker '\n' 1381*cda5da8dSAndroid Build Coastguard Worker ' and_expr ::= shift_expr | and_expr "&" shift_expr\n' 1382*cda5da8dSAndroid Build Coastguard Worker ' xor_expr ::= and_expr | xor_expr "^" and_expr\n' 1383*cda5da8dSAndroid Build Coastguard Worker ' or_expr ::= xor_expr | or_expr "|" xor_expr\n' 1384*cda5da8dSAndroid Build Coastguard Worker '\n' 1385*cda5da8dSAndroid Build Coastguard Worker 'The "&" operator yields the bitwise AND of its arguments, which ' 1386*cda5da8dSAndroid Build Coastguard Worker 'must\n' 1387*cda5da8dSAndroid Build Coastguard Worker 'be integers or one of them must be a custom object overriding\n' 1388*cda5da8dSAndroid Build Coastguard Worker '"__and__()" or "__rand__()" special methods.\n' 1389*cda5da8dSAndroid Build Coastguard Worker '\n' 1390*cda5da8dSAndroid Build Coastguard Worker 'The "^" operator yields the bitwise XOR (exclusive OR) of its\n' 1391*cda5da8dSAndroid Build Coastguard Worker 'arguments, which must be integers or one of them must be a ' 1392*cda5da8dSAndroid Build Coastguard Worker 'custom\n' 1393*cda5da8dSAndroid Build Coastguard Worker 'object overriding "__xor__()" or "__rxor__()" special methods.\n' 1394*cda5da8dSAndroid Build Coastguard Worker '\n' 1395*cda5da8dSAndroid Build Coastguard Worker 'The "|" operator yields the bitwise (inclusive) OR of its ' 1396*cda5da8dSAndroid Build Coastguard Worker 'arguments,\n' 1397*cda5da8dSAndroid Build Coastguard Worker 'which must be integers or one of them must be a custom object\n' 1398*cda5da8dSAndroid Build Coastguard Worker 'overriding "__or__()" or "__ror__()" special methods.\n', 1399*cda5da8dSAndroid Build Coastguard Worker 'bltin-code-objects': 'Code Objects\n' 1400*cda5da8dSAndroid Build Coastguard Worker '************\n' 1401*cda5da8dSAndroid Build Coastguard Worker '\n' 1402*cda5da8dSAndroid Build Coastguard Worker 'Code objects are used by the implementation to ' 1403*cda5da8dSAndroid Build Coastguard Worker 'represent “pseudo-\n' 1404*cda5da8dSAndroid Build Coastguard Worker 'compiled” executable Python code such as a function ' 1405*cda5da8dSAndroid Build Coastguard Worker 'body. They differ\n' 1406*cda5da8dSAndroid Build Coastguard Worker 'from function objects because they don’t contain a ' 1407*cda5da8dSAndroid Build Coastguard Worker 'reference to their\n' 1408*cda5da8dSAndroid Build Coastguard Worker 'global execution environment. Code objects are ' 1409*cda5da8dSAndroid Build Coastguard Worker 'returned by the built-\n' 1410*cda5da8dSAndroid Build Coastguard Worker 'in "compile()" function and can be extracted from ' 1411*cda5da8dSAndroid Build Coastguard Worker 'function objects\n' 1412*cda5da8dSAndroid Build Coastguard Worker 'through their "__code__" attribute. See also the ' 1413*cda5da8dSAndroid Build Coastguard Worker '"code" module.\n' 1414*cda5da8dSAndroid Build Coastguard Worker '\n' 1415*cda5da8dSAndroid Build Coastguard Worker 'Accessing "__code__" raises an auditing event ' 1416*cda5da8dSAndroid Build Coastguard Worker '"object.__getattr__"\n' 1417*cda5da8dSAndroid Build Coastguard Worker 'with arguments "obj" and ""__code__"".\n' 1418*cda5da8dSAndroid Build Coastguard Worker '\n' 1419*cda5da8dSAndroid Build Coastguard Worker 'A code object can be executed or evaluated by passing ' 1420*cda5da8dSAndroid Build Coastguard Worker 'it (instead of a\n' 1421*cda5da8dSAndroid Build Coastguard Worker 'source string) to the "exec()" or "eval()" built-in ' 1422*cda5da8dSAndroid Build Coastguard Worker 'functions.\n' 1423*cda5da8dSAndroid Build Coastguard Worker '\n' 1424*cda5da8dSAndroid Build Coastguard Worker 'See The standard type hierarchy for more ' 1425*cda5da8dSAndroid Build Coastguard Worker 'information.\n', 1426*cda5da8dSAndroid Build Coastguard Worker 'bltin-ellipsis-object': 'The Ellipsis Object\n' 1427*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 1428*cda5da8dSAndroid Build Coastguard Worker '\n' 1429*cda5da8dSAndroid Build Coastguard Worker 'This object is commonly used by slicing (see ' 1430*cda5da8dSAndroid Build Coastguard Worker 'Slicings). It supports\n' 1431*cda5da8dSAndroid Build Coastguard Worker 'no special operations. There is exactly one ' 1432*cda5da8dSAndroid Build Coastguard Worker 'ellipsis object, named\n' 1433*cda5da8dSAndroid Build Coastguard Worker '"Ellipsis" (a built-in name). "type(Ellipsis)()" ' 1434*cda5da8dSAndroid Build Coastguard Worker 'produces the\n' 1435*cda5da8dSAndroid Build Coastguard Worker '"Ellipsis" singleton.\n' 1436*cda5da8dSAndroid Build Coastguard Worker '\n' 1437*cda5da8dSAndroid Build Coastguard Worker 'It is written as "Ellipsis" or "...".\n', 1438*cda5da8dSAndroid Build Coastguard Worker 'bltin-null-object': 'The Null Object\n' 1439*cda5da8dSAndroid Build Coastguard Worker '***************\n' 1440*cda5da8dSAndroid Build Coastguard Worker '\n' 1441*cda5da8dSAndroid Build Coastguard Worker 'This object is returned by functions that don’t ' 1442*cda5da8dSAndroid Build Coastguard Worker 'explicitly return a\n' 1443*cda5da8dSAndroid Build Coastguard Worker 'value. It supports no special operations. There is ' 1444*cda5da8dSAndroid Build Coastguard Worker 'exactly one null\n' 1445*cda5da8dSAndroid Build Coastguard Worker 'object, named "None" (a built-in name). "type(None)()" ' 1446*cda5da8dSAndroid Build Coastguard Worker 'produces the\n' 1447*cda5da8dSAndroid Build Coastguard Worker 'same singleton.\n' 1448*cda5da8dSAndroid Build Coastguard Worker '\n' 1449*cda5da8dSAndroid Build Coastguard Worker 'It is written as "None".\n', 1450*cda5da8dSAndroid Build Coastguard Worker 'bltin-type-objects': 'Type Objects\n' 1451*cda5da8dSAndroid Build Coastguard Worker '************\n' 1452*cda5da8dSAndroid Build Coastguard Worker '\n' 1453*cda5da8dSAndroid Build Coastguard Worker 'Type objects represent the various object types. An ' 1454*cda5da8dSAndroid Build Coastguard Worker 'object’s type is\n' 1455*cda5da8dSAndroid Build Coastguard Worker 'accessed by the built-in function "type()". There are ' 1456*cda5da8dSAndroid Build Coastguard Worker 'no special\n' 1457*cda5da8dSAndroid Build Coastguard Worker 'operations on types. The standard module "types" ' 1458*cda5da8dSAndroid Build Coastguard Worker 'defines names for\n' 1459*cda5da8dSAndroid Build Coastguard Worker 'all standard built-in types.\n' 1460*cda5da8dSAndroid Build Coastguard Worker '\n' 1461*cda5da8dSAndroid Build Coastguard Worker 'Types are written like this: "<class \'int\'>".\n', 1462*cda5da8dSAndroid Build Coastguard Worker 'booleans': 'Boolean operations\n' 1463*cda5da8dSAndroid Build Coastguard Worker '******************\n' 1464*cda5da8dSAndroid Build Coastguard Worker '\n' 1465*cda5da8dSAndroid Build Coastguard Worker ' or_test ::= and_test | or_test "or" and_test\n' 1466*cda5da8dSAndroid Build Coastguard Worker ' and_test ::= not_test | and_test "and" not_test\n' 1467*cda5da8dSAndroid Build Coastguard Worker ' not_test ::= comparison | "not" not_test\n' 1468*cda5da8dSAndroid Build Coastguard Worker '\n' 1469*cda5da8dSAndroid Build Coastguard Worker 'In the context of Boolean operations, and also when expressions ' 1470*cda5da8dSAndroid Build Coastguard Worker 'are\n' 1471*cda5da8dSAndroid Build Coastguard Worker 'used by control flow statements, the following values are ' 1472*cda5da8dSAndroid Build Coastguard Worker 'interpreted\n' 1473*cda5da8dSAndroid Build Coastguard Worker 'as false: "False", "None", numeric zero of all types, and empty\n' 1474*cda5da8dSAndroid Build Coastguard Worker 'strings and containers (including strings, tuples, lists,\n' 1475*cda5da8dSAndroid Build Coastguard Worker 'dictionaries, sets and frozensets). All other values are ' 1476*cda5da8dSAndroid Build Coastguard Worker 'interpreted\n' 1477*cda5da8dSAndroid Build Coastguard Worker 'as true. User-defined objects can customize their truth value ' 1478*cda5da8dSAndroid Build Coastguard Worker 'by\n' 1479*cda5da8dSAndroid Build Coastguard Worker 'providing a "__bool__()" method.\n' 1480*cda5da8dSAndroid Build Coastguard Worker '\n' 1481*cda5da8dSAndroid Build Coastguard Worker 'The operator "not" yields "True" if its argument is false, ' 1482*cda5da8dSAndroid Build Coastguard Worker '"False"\n' 1483*cda5da8dSAndroid Build Coastguard Worker 'otherwise.\n' 1484*cda5da8dSAndroid Build Coastguard Worker '\n' 1485*cda5da8dSAndroid Build Coastguard Worker 'The expression "x and y" first evaluates *x*; if *x* is false, ' 1486*cda5da8dSAndroid Build Coastguard Worker 'its\n' 1487*cda5da8dSAndroid Build Coastguard Worker 'value is returned; otherwise, *y* is evaluated and the resulting ' 1488*cda5da8dSAndroid Build Coastguard Worker 'value\n' 1489*cda5da8dSAndroid Build Coastguard Worker 'is returned.\n' 1490*cda5da8dSAndroid Build Coastguard Worker '\n' 1491*cda5da8dSAndroid Build Coastguard Worker 'The expression "x or y" first evaluates *x*; if *x* is true, its ' 1492*cda5da8dSAndroid Build Coastguard Worker 'value\n' 1493*cda5da8dSAndroid Build Coastguard Worker 'is returned; otherwise, *y* is evaluated and the resulting value ' 1494*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1495*cda5da8dSAndroid Build Coastguard Worker 'returned.\n' 1496*cda5da8dSAndroid Build Coastguard Worker '\n' 1497*cda5da8dSAndroid Build Coastguard Worker 'Note that neither "and" nor "or" restrict the value and type ' 1498*cda5da8dSAndroid Build Coastguard Worker 'they\n' 1499*cda5da8dSAndroid Build Coastguard Worker 'return to "False" and "True", but rather return the last ' 1500*cda5da8dSAndroid Build Coastguard Worker 'evaluated\n' 1501*cda5da8dSAndroid Build Coastguard Worker 'argument. This is sometimes useful, e.g., if "s" is a string ' 1502*cda5da8dSAndroid Build Coastguard Worker 'that\n' 1503*cda5da8dSAndroid Build Coastguard Worker 'should be replaced by a default value if it is empty, the ' 1504*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 1505*cda5da8dSAndroid Build Coastguard Worker '"s or \'foo\'" yields the desired value. Because "not" has to ' 1506*cda5da8dSAndroid Build Coastguard Worker 'create a\n' 1507*cda5da8dSAndroid Build Coastguard Worker 'new value, it returns a boolean value regardless of the type of ' 1508*cda5da8dSAndroid Build Coastguard Worker 'its\n' 1509*cda5da8dSAndroid Build Coastguard Worker 'argument (for example, "not \'foo\'" produces "False" rather ' 1510*cda5da8dSAndroid Build Coastguard Worker 'than "\'\'".)\n', 1511*cda5da8dSAndroid Build Coastguard Worker 'break': 'The "break" statement\n' 1512*cda5da8dSAndroid Build Coastguard Worker '*********************\n' 1513*cda5da8dSAndroid Build Coastguard Worker '\n' 1514*cda5da8dSAndroid Build Coastguard Worker ' break_stmt ::= "break"\n' 1515*cda5da8dSAndroid Build Coastguard Worker '\n' 1516*cda5da8dSAndroid Build Coastguard Worker '"break" may only occur syntactically nested in a "for" or "while"\n' 1517*cda5da8dSAndroid Build Coastguard Worker 'loop, but not nested in a function or class definition within that\n' 1518*cda5da8dSAndroid Build Coastguard Worker 'loop.\n' 1519*cda5da8dSAndroid Build Coastguard Worker '\n' 1520*cda5da8dSAndroid Build Coastguard Worker 'It terminates the nearest enclosing loop, skipping the optional ' 1521*cda5da8dSAndroid Build Coastguard Worker '"else"\n' 1522*cda5da8dSAndroid Build Coastguard Worker 'clause if the loop has one.\n' 1523*cda5da8dSAndroid Build Coastguard Worker '\n' 1524*cda5da8dSAndroid Build Coastguard Worker 'If a "for" loop is terminated by "break", the loop control target\n' 1525*cda5da8dSAndroid Build Coastguard Worker 'keeps its current value.\n' 1526*cda5da8dSAndroid Build Coastguard Worker '\n' 1527*cda5da8dSAndroid Build Coastguard Worker 'When "break" passes control out of a "try" statement with a ' 1528*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 1529*cda5da8dSAndroid Build Coastguard Worker 'clause, that "finally" clause is executed before really leaving ' 1530*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1531*cda5da8dSAndroid Build Coastguard Worker 'loop.\n', 1532*cda5da8dSAndroid Build Coastguard Worker 'callable-types': 'Emulating callable objects\n' 1533*cda5da8dSAndroid Build Coastguard Worker '**************************\n' 1534*cda5da8dSAndroid Build Coastguard Worker '\n' 1535*cda5da8dSAndroid Build Coastguard Worker 'object.__call__(self[, args...])\n' 1536*cda5da8dSAndroid Build Coastguard Worker '\n' 1537*cda5da8dSAndroid Build Coastguard Worker ' Called when the instance is “called” as a function; if ' 1538*cda5da8dSAndroid Build Coastguard Worker 'this method\n' 1539*cda5da8dSAndroid Build Coastguard Worker ' is defined, "x(arg1, arg2, ...)" roughly translates to\n' 1540*cda5da8dSAndroid Build Coastguard Worker ' "type(x).__call__(x, arg1, ...)".\n', 1541*cda5da8dSAndroid Build Coastguard Worker 'calls': 'Calls\n' 1542*cda5da8dSAndroid Build Coastguard Worker '*****\n' 1543*cda5da8dSAndroid Build Coastguard Worker '\n' 1544*cda5da8dSAndroid Build Coastguard Worker 'A call calls a callable object (e.g., a *function*) with a ' 1545*cda5da8dSAndroid Build Coastguard Worker 'possibly\n' 1546*cda5da8dSAndroid Build Coastguard Worker 'empty series of *arguments*:\n' 1547*cda5da8dSAndroid Build Coastguard Worker '\n' 1548*cda5da8dSAndroid Build Coastguard Worker ' call ::= primary "(" [argument_list [","] | ' 1549*cda5da8dSAndroid Build Coastguard Worker 'comprehension] ")"\n' 1550*cda5da8dSAndroid Build Coastguard Worker ' argument_list ::= positional_arguments ["," ' 1551*cda5da8dSAndroid Build Coastguard Worker 'starred_and_keywords]\n' 1552*cda5da8dSAndroid Build Coastguard Worker ' ["," keywords_arguments]\n' 1553*cda5da8dSAndroid Build Coastguard Worker ' | starred_and_keywords ["," ' 1554*cda5da8dSAndroid Build Coastguard Worker 'keywords_arguments]\n' 1555*cda5da8dSAndroid Build Coastguard Worker ' | keywords_arguments\n' 1556*cda5da8dSAndroid Build Coastguard Worker ' positional_arguments ::= positional_item ("," positional_item)*\n' 1557*cda5da8dSAndroid Build Coastguard Worker ' positional_item ::= assignment_expression | "*" expression\n' 1558*cda5da8dSAndroid Build Coastguard Worker ' starred_and_keywords ::= ("*" expression | keyword_item)\n' 1559*cda5da8dSAndroid Build Coastguard Worker ' ("," "*" expression | "," ' 1560*cda5da8dSAndroid Build Coastguard Worker 'keyword_item)*\n' 1561*cda5da8dSAndroid Build Coastguard Worker ' keywords_arguments ::= (keyword_item | "**" expression)\n' 1562*cda5da8dSAndroid Build Coastguard Worker ' ("," keyword_item | "," "**" ' 1563*cda5da8dSAndroid Build Coastguard Worker 'expression)*\n' 1564*cda5da8dSAndroid Build Coastguard Worker ' keyword_item ::= identifier "=" expression\n' 1565*cda5da8dSAndroid Build Coastguard Worker '\n' 1566*cda5da8dSAndroid Build Coastguard Worker 'An optional trailing comma may be present after the positional and\n' 1567*cda5da8dSAndroid Build Coastguard Worker 'keyword arguments but does not affect the semantics.\n' 1568*cda5da8dSAndroid Build Coastguard Worker '\n' 1569*cda5da8dSAndroid Build Coastguard Worker 'The primary must evaluate to a callable object (user-defined\n' 1570*cda5da8dSAndroid Build Coastguard Worker 'functions, built-in functions, methods of built-in objects, class\n' 1571*cda5da8dSAndroid Build Coastguard Worker 'objects, methods of class instances, and all objects having a\n' 1572*cda5da8dSAndroid Build Coastguard Worker '"__call__()" method are callable). All argument expressions are\n' 1573*cda5da8dSAndroid Build Coastguard Worker 'evaluated before the call is attempted. Please refer to section\n' 1574*cda5da8dSAndroid Build Coastguard Worker 'Function definitions for the syntax of formal *parameter* lists.\n' 1575*cda5da8dSAndroid Build Coastguard Worker '\n' 1576*cda5da8dSAndroid Build Coastguard Worker 'If keyword arguments are present, they are first converted to\n' 1577*cda5da8dSAndroid Build Coastguard Worker 'positional arguments, as follows. First, a list of unfilled slots ' 1578*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1579*cda5da8dSAndroid Build Coastguard Worker 'created for the formal parameters. If there are N positional\n' 1580*cda5da8dSAndroid Build Coastguard Worker 'arguments, they are placed in the first N slots. Next, for each\n' 1581*cda5da8dSAndroid Build Coastguard Worker 'keyword argument, the identifier is used to determine the\n' 1582*cda5da8dSAndroid Build Coastguard Worker 'corresponding slot (if the identifier is the same as the first ' 1583*cda5da8dSAndroid Build Coastguard Worker 'formal\n' 1584*cda5da8dSAndroid Build Coastguard Worker 'parameter name, the first slot is used, and so on). If the slot ' 1585*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1586*cda5da8dSAndroid Build Coastguard Worker 'already filled, a "TypeError" exception is raised. Otherwise, the\n' 1587*cda5da8dSAndroid Build Coastguard Worker 'argument is placed in the slot, filling it (even if the expression ' 1588*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1589*cda5da8dSAndroid Build Coastguard Worker '"None", it fills the slot). When all arguments have been ' 1590*cda5da8dSAndroid Build Coastguard Worker 'processed,\n' 1591*cda5da8dSAndroid Build Coastguard Worker 'the slots that are still unfilled are filled with the ' 1592*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 1593*cda5da8dSAndroid Build Coastguard Worker 'default value from the function definition. (Default values are\n' 1594*cda5da8dSAndroid Build Coastguard Worker 'calculated, once, when the function is defined; thus, a mutable ' 1595*cda5da8dSAndroid Build Coastguard Worker 'object\n' 1596*cda5da8dSAndroid Build Coastguard Worker 'such as a list or dictionary used as default value will be shared ' 1597*cda5da8dSAndroid Build Coastguard Worker 'by\n' 1598*cda5da8dSAndroid Build Coastguard Worker 'all calls that don’t specify an argument value for the ' 1599*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 1600*cda5da8dSAndroid Build Coastguard Worker 'slot; this should usually be avoided.) If there are any unfilled\n' 1601*cda5da8dSAndroid Build Coastguard Worker 'slots for which no default value is specified, a "TypeError" ' 1602*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 1603*cda5da8dSAndroid Build Coastguard Worker 'is raised. Otherwise, the list of filled slots is used as the\n' 1604*cda5da8dSAndroid Build Coastguard Worker 'argument list for the call.\n' 1605*cda5da8dSAndroid Build Coastguard Worker '\n' 1606*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** An implementation may provide\n' 1607*cda5da8dSAndroid Build Coastguard Worker 'built-in functions whose positional parameters do not have names, ' 1608*cda5da8dSAndroid Build Coastguard Worker 'even\n' 1609*cda5da8dSAndroid Build Coastguard Worker 'if they are ‘named’ for the purpose of documentation, and which\n' 1610*cda5da8dSAndroid Build Coastguard Worker 'therefore cannot be supplied by keyword. In CPython, this is the ' 1611*cda5da8dSAndroid Build Coastguard Worker 'case\n' 1612*cda5da8dSAndroid Build Coastguard Worker 'for functions implemented in C that use "PyArg_ParseTuple()" to ' 1613*cda5da8dSAndroid Build Coastguard Worker 'parse\n' 1614*cda5da8dSAndroid Build Coastguard Worker 'their arguments.\n' 1615*cda5da8dSAndroid Build Coastguard Worker '\n' 1616*cda5da8dSAndroid Build Coastguard Worker 'If there are more positional arguments than there are formal ' 1617*cda5da8dSAndroid Build Coastguard Worker 'parameter\n' 1618*cda5da8dSAndroid Build Coastguard Worker 'slots, a "TypeError" exception is raised, unless a formal ' 1619*cda5da8dSAndroid Build Coastguard Worker 'parameter\n' 1620*cda5da8dSAndroid Build Coastguard Worker 'using the syntax "*identifier" is present; in this case, that ' 1621*cda5da8dSAndroid Build Coastguard Worker 'formal\n' 1622*cda5da8dSAndroid Build Coastguard Worker 'parameter receives a tuple containing the excess positional ' 1623*cda5da8dSAndroid Build Coastguard Worker 'arguments\n' 1624*cda5da8dSAndroid Build Coastguard Worker '(or an empty tuple if there were no excess positional arguments).\n' 1625*cda5da8dSAndroid Build Coastguard Worker '\n' 1626*cda5da8dSAndroid Build Coastguard Worker 'If any keyword argument does not correspond to a formal parameter\n' 1627*cda5da8dSAndroid Build Coastguard Worker 'name, a "TypeError" exception is raised, unless a formal parameter\n' 1628*cda5da8dSAndroid Build Coastguard Worker 'using the syntax "**identifier" is present; in this case, that ' 1629*cda5da8dSAndroid Build Coastguard Worker 'formal\n' 1630*cda5da8dSAndroid Build Coastguard Worker 'parameter receives a dictionary containing the excess keyword\n' 1631*cda5da8dSAndroid Build Coastguard Worker 'arguments (using the keywords as keys and the argument values as\n' 1632*cda5da8dSAndroid Build Coastguard Worker 'corresponding values), or a (new) empty dictionary if there were ' 1633*cda5da8dSAndroid Build Coastguard Worker 'no\n' 1634*cda5da8dSAndroid Build Coastguard Worker 'excess keyword arguments.\n' 1635*cda5da8dSAndroid Build Coastguard Worker '\n' 1636*cda5da8dSAndroid Build Coastguard Worker 'If the syntax "*expression" appears in the function call, ' 1637*cda5da8dSAndroid Build Coastguard Worker '"expression"\n' 1638*cda5da8dSAndroid Build Coastguard Worker 'must evaluate to an *iterable*. Elements from these iterables are\n' 1639*cda5da8dSAndroid Build Coastguard Worker 'treated as if they were additional positional arguments. For the ' 1640*cda5da8dSAndroid Build Coastguard Worker 'call\n' 1641*cda5da8dSAndroid Build Coastguard Worker '"f(x1, x2, *y, x3, x4)", if *y* evaluates to a sequence *y1*, …, ' 1642*cda5da8dSAndroid Build Coastguard Worker '*yM*,\n' 1643*cda5da8dSAndroid Build Coastguard Worker 'this is equivalent to a call with M+4 positional arguments *x1*, ' 1644*cda5da8dSAndroid Build Coastguard Worker '*x2*,\n' 1645*cda5da8dSAndroid Build Coastguard Worker '*y1*, …, *yM*, *x3*, *x4*.\n' 1646*cda5da8dSAndroid Build Coastguard Worker '\n' 1647*cda5da8dSAndroid Build Coastguard Worker 'A consequence of this is that although the "*expression" syntax ' 1648*cda5da8dSAndroid Build Coastguard Worker 'may\n' 1649*cda5da8dSAndroid Build Coastguard Worker 'appear *after* explicit keyword arguments, it is processed ' 1650*cda5da8dSAndroid Build Coastguard Worker '*before*\n' 1651*cda5da8dSAndroid Build Coastguard Worker 'the keyword arguments (and any "**expression" arguments – see ' 1652*cda5da8dSAndroid Build Coastguard Worker 'below).\n' 1653*cda5da8dSAndroid Build Coastguard Worker 'So:\n' 1654*cda5da8dSAndroid Build Coastguard Worker '\n' 1655*cda5da8dSAndroid Build Coastguard Worker ' >>> def f(a, b):\n' 1656*cda5da8dSAndroid Build Coastguard Worker ' ... print(a, b)\n' 1657*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 1658*cda5da8dSAndroid Build Coastguard Worker ' >>> f(b=1, *(2,))\n' 1659*cda5da8dSAndroid Build Coastguard Worker ' 2 1\n' 1660*cda5da8dSAndroid Build Coastguard Worker ' >>> f(a=1, *(2,))\n' 1661*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 1662*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 1, in <module>\n' 1663*cda5da8dSAndroid Build Coastguard Worker " TypeError: f() got multiple values for keyword argument 'a'\n" 1664*cda5da8dSAndroid Build Coastguard Worker ' >>> f(1, *(2,))\n' 1665*cda5da8dSAndroid Build Coastguard Worker ' 1 2\n' 1666*cda5da8dSAndroid Build Coastguard Worker '\n' 1667*cda5da8dSAndroid Build Coastguard Worker 'It is unusual for both keyword arguments and the "*expression" ' 1668*cda5da8dSAndroid Build Coastguard Worker 'syntax\n' 1669*cda5da8dSAndroid Build Coastguard Worker 'to be used in the same call, so in practice this confusion does ' 1670*cda5da8dSAndroid Build Coastguard Worker 'not\n' 1671*cda5da8dSAndroid Build Coastguard Worker 'often arise.\n' 1672*cda5da8dSAndroid Build Coastguard Worker '\n' 1673*cda5da8dSAndroid Build Coastguard Worker 'If the syntax "**expression" appears in the function call,\n' 1674*cda5da8dSAndroid Build Coastguard Worker '"expression" must evaluate to a *mapping*, the contents of which ' 1675*cda5da8dSAndroid Build Coastguard Worker 'are\n' 1676*cda5da8dSAndroid Build Coastguard Worker 'treated as additional keyword arguments. If a parameter matching a ' 1677*cda5da8dSAndroid Build Coastguard Worker 'key\n' 1678*cda5da8dSAndroid Build Coastguard Worker 'has already been given a value (by an explicit keyword argument, ' 1679*cda5da8dSAndroid Build Coastguard Worker 'or\n' 1680*cda5da8dSAndroid Build Coastguard Worker 'from another unpacking), a "TypeError" exception is raised.\n' 1681*cda5da8dSAndroid Build Coastguard Worker '\n' 1682*cda5da8dSAndroid Build Coastguard Worker 'When "**expression" is used, each key in this mapping must be a\n' 1683*cda5da8dSAndroid Build Coastguard Worker 'string. Each value from the mapping is assigned to the first ' 1684*cda5da8dSAndroid Build Coastguard Worker 'formal\n' 1685*cda5da8dSAndroid Build Coastguard Worker 'parameter eligible for keyword assignment whose name is equal to ' 1686*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1687*cda5da8dSAndroid Build Coastguard Worker 'key. A key need not be a Python identifier (e.g. ""max-temp °F"" ' 1688*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1689*cda5da8dSAndroid Build Coastguard Worker 'acceptable, although it will not match any formal parameter that ' 1690*cda5da8dSAndroid Build Coastguard Worker 'could\n' 1691*cda5da8dSAndroid Build Coastguard Worker 'be declared). If there is no match to a formal parameter the ' 1692*cda5da8dSAndroid Build Coastguard Worker 'key-value\n' 1693*cda5da8dSAndroid Build Coastguard Worker 'pair is collected by the "**" parameter, if there is one, or if ' 1694*cda5da8dSAndroid Build Coastguard Worker 'there\n' 1695*cda5da8dSAndroid Build Coastguard Worker 'is not, a "TypeError" exception is raised.\n' 1696*cda5da8dSAndroid Build Coastguard Worker '\n' 1697*cda5da8dSAndroid Build Coastguard Worker 'Formal parameters using the syntax "*identifier" or "**identifier"\n' 1698*cda5da8dSAndroid Build Coastguard Worker 'cannot be used as positional argument slots or as keyword argument\n' 1699*cda5da8dSAndroid Build Coastguard Worker 'names.\n' 1700*cda5da8dSAndroid Build Coastguard Worker '\n' 1701*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.5: Function calls accept any number of "*" ' 1702*cda5da8dSAndroid Build Coastguard Worker 'and\n' 1703*cda5da8dSAndroid Build Coastguard Worker '"**" unpackings, positional arguments may follow iterable ' 1704*cda5da8dSAndroid Build Coastguard Worker 'unpackings\n' 1705*cda5da8dSAndroid Build Coastguard Worker '("*"), and keyword arguments may follow dictionary unpackings ' 1706*cda5da8dSAndroid Build Coastguard Worker '("**").\n' 1707*cda5da8dSAndroid Build Coastguard Worker 'Originally proposed by **PEP 448**.\n' 1708*cda5da8dSAndroid Build Coastguard Worker '\n' 1709*cda5da8dSAndroid Build Coastguard Worker 'A call always returns some value, possibly "None", unless it raises ' 1710*cda5da8dSAndroid Build Coastguard Worker 'an\n' 1711*cda5da8dSAndroid Build Coastguard Worker 'exception. How this value is computed depends on the type of the\n' 1712*cda5da8dSAndroid Build Coastguard Worker 'callable object.\n' 1713*cda5da8dSAndroid Build Coastguard Worker '\n' 1714*cda5da8dSAndroid Build Coastguard Worker 'If it is—\n' 1715*cda5da8dSAndroid Build Coastguard Worker '\n' 1716*cda5da8dSAndroid Build Coastguard Worker 'a user-defined function:\n' 1717*cda5da8dSAndroid Build Coastguard Worker ' The code block for the function is executed, passing it the\n' 1718*cda5da8dSAndroid Build Coastguard Worker ' argument list. The first thing the code block will do is bind ' 1719*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1720*cda5da8dSAndroid Build Coastguard Worker ' formal parameters to the arguments; this is described in ' 1721*cda5da8dSAndroid Build Coastguard Worker 'section\n' 1722*cda5da8dSAndroid Build Coastguard Worker ' Function definitions. When the code block executes a "return"\n' 1723*cda5da8dSAndroid Build Coastguard Worker ' statement, this specifies the return value of the function ' 1724*cda5da8dSAndroid Build Coastguard Worker 'call.\n' 1725*cda5da8dSAndroid Build Coastguard Worker '\n' 1726*cda5da8dSAndroid Build Coastguard Worker 'a built-in function or method:\n' 1727*cda5da8dSAndroid Build Coastguard Worker ' The result is up to the interpreter; see Built-in Functions for ' 1728*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1729*cda5da8dSAndroid Build Coastguard Worker ' descriptions of built-in functions and methods.\n' 1730*cda5da8dSAndroid Build Coastguard Worker '\n' 1731*cda5da8dSAndroid Build Coastguard Worker 'a class object:\n' 1732*cda5da8dSAndroid Build Coastguard Worker ' A new instance of that class is returned.\n' 1733*cda5da8dSAndroid Build Coastguard Worker '\n' 1734*cda5da8dSAndroid Build Coastguard Worker 'a class instance method:\n' 1735*cda5da8dSAndroid Build Coastguard Worker ' The corresponding user-defined function is called, with an ' 1736*cda5da8dSAndroid Build Coastguard Worker 'argument\n' 1737*cda5da8dSAndroid Build Coastguard Worker ' list that is one longer than the argument list of the call: the\n' 1738*cda5da8dSAndroid Build Coastguard Worker ' instance becomes the first argument.\n' 1739*cda5da8dSAndroid Build Coastguard Worker '\n' 1740*cda5da8dSAndroid Build Coastguard Worker 'a class instance:\n' 1741*cda5da8dSAndroid Build Coastguard Worker ' The class must define a "__call__()" method; the effect is then ' 1742*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1743*cda5da8dSAndroid Build Coastguard Worker ' same as if that method was called.\n', 1744*cda5da8dSAndroid Build Coastguard Worker 'class': 'Class definitions\n' 1745*cda5da8dSAndroid Build Coastguard Worker '*****************\n' 1746*cda5da8dSAndroid Build Coastguard Worker '\n' 1747*cda5da8dSAndroid Build Coastguard Worker 'A class definition defines a class object (see section The ' 1748*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 1749*cda5da8dSAndroid Build Coastguard Worker 'type hierarchy):\n' 1750*cda5da8dSAndroid Build Coastguard Worker '\n' 1751*cda5da8dSAndroid Build Coastguard Worker ' classdef ::= [decorators] "class" classname [inheritance] ":" ' 1752*cda5da8dSAndroid Build Coastguard Worker 'suite\n' 1753*cda5da8dSAndroid Build Coastguard Worker ' inheritance ::= "(" [argument_list] ")"\n' 1754*cda5da8dSAndroid Build Coastguard Worker ' classname ::= identifier\n' 1755*cda5da8dSAndroid Build Coastguard Worker '\n' 1756*cda5da8dSAndroid Build Coastguard Worker 'A class definition is an executable statement. The inheritance ' 1757*cda5da8dSAndroid Build Coastguard Worker 'list\n' 1758*cda5da8dSAndroid Build Coastguard Worker 'usually gives a list of base classes (see Metaclasses for more\n' 1759*cda5da8dSAndroid Build Coastguard Worker 'advanced uses), so each item in the list should evaluate to a ' 1760*cda5da8dSAndroid Build Coastguard Worker 'class\n' 1761*cda5da8dSAndroid Build Coastguard Worker 'object which allows subclassing. Classes without an inheritance ' 1762*cda5da8dSAndroid Build Coastguard Worker 'list\n' 1763*cda5da8dSAndroid Build Coastguard Worker 'inherit, by default, from the base class "object"; hence,\n' 1764*cda5da8dSAndroid Build Coastguard Worker '\n' 1765*cda5da8dSAndroid Build Coastguard Worker ' class Foo:\n' 1766*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 1767*cda5da8dSAndroid Build Coastguard Worker '\n' 1768*cda5da8dSAndroid Build Coastguard Worker 'is equivalent to\n' 1769*cda5da8dSAndroid Build Coastguard Worker '\n' 1770*cda5da8dSAndroid Build Coastguard Worker ' class Foo(object):\n' 1771*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 1772*cda5da8dSAndroid Build Coastguard Worker '\n' 1773*cda5da8dSAndroid Build Coastguard Worker 'The class’s suite is then executed in a new execution frame (see\n' 1774*cda5da8dSAndroid Build Coastguard Worker 'Naming and binding), using a newly created local namespace and the\n' 1775*cda5da8dSAndroid Build Coastguard Worker 'original global namespace. (Usually, the suite contains mostly\n' 1776*cda5da8dSAndroid Build Coastguard Worker 'function definitions.) When the class’s suite finishes execution, ' 1777*cda5da8dSAndroid Build Coastguard Worker 'its\n' 1778*cda5da8dSAndroid Build Coastguard Worker 'execution frame is discarded but its local namespace is saved. [5] ' 1779*cda5da8dSAndroid Build Coastguard Worker 'A\n' 1780*cda5da8dSAndroid Build Coastguard Worker 'class object is then created using the inheritance list for the ' 1781*cda5da8dSAndroid Build Coastguard Worker 'base\n' 1782*cda5da8dSAndroid Build Coastguard Worker 'classes and the saved local namespace for the attribute ' 1783*cda5da8dSAndroid Build Coastguard Worker 'dictionary.\n' 1784*cda5da8dSAndroid Build Coastguard Worker 'The class name is bound to this class object in the original local\n' 1785*cda5da8dSAndroid Build Coastguard Worker 'namespace.\n' 1786*cda5da8dSAndroid Build Coastguard Worker '\n' 1787*cda5da8dSAndroid Build Coastguard Worker 'The order in which attributes are defined in the class body is\n' 1788*cda5da8dSAndroid Build Coastguard Worker 'preserved in the new class’s "__dict__". Note that this is ' 1789*cda5da8dSAndroid Build Coastguard Worker 'reliable\n' 1790*cda5da8dSAndroid Build Coastguard Worker 'only right after the class is created and only for classes that ' 1791*cda5da8dSAndroid Build Coastguard Worker 'were\n' 1792*cda5da8dSAndroid Build Coastguard Worker 'defined using the definition syntax.\n' 1793*cda5da8dSAndroid Build Coastguard Worker '\n' 1794*cda5da8dSAndroid Build Coastguard Worker 'Class creation can be customized heavily using metaclasses.\n' 1795*cda5da8dSAndroid Build Coastguard Worker '\n' 1796*cda5da8dSAndroid Build Coastguard Worker 'Classes can also be decorated: just like when decorating ' 1797*cda5da8dSAndroid Build Coastguard Worker 'functions,\n' 1798*cda5da8dSAndroid Build Coastguard Worker '\n' 1799*cda5da8dSAndroid Build Coastguard Worker ' @f1(arg)\n' 1800*cda5da8dSAndroid Build Coastguard Worker ' @f2\n' 1801*cda5da8dSAndroid Build Coastguard Worker ' class Foo: pass\n' 1802*cda5da8dSAndroid Build Coastguard Worker '\n' 1803*cda5da8dSAndroid Build Coastguard Worker 'is roughly equivalent to\n' 1804*cda5da8dSAndroid Build Coastguard Worker '\n' 1805*cda5da8dSAndroid Build Coastguard Worker ' class Foo: pass\n' 1806*cda5da8dSAndroid Build Coastguard Worker ' Foo = f1(arg)(f2(Foo))\n' 1807*cda5da8dSAndroid Build Coastguard Worker '\n' 1808*cda5da8dSAndroid Build Coastguard Worker 'The evaluation rules for the decorator expressions are the same as ' 1809*cda5da8dSAndroid Build Coastguard Worker 'for\n' 1810*cda5da8dSAndroid Build Coastguard Worker 'function decorators. The result is then bound to the class name.\n' 1811*cda5da8dSAndroid Build Coastguard Worker '\n' 1812*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.9: Classes may be decorated with any valid\n' 1813*cda5da8dSAndroid Build Coastguard Worker '"assignment_expression". Previously, the grammar was much more\n' 1814*cda5da8dSAndroid Build Coastguard Worker 'restrictive; see **PEP 614** for details.\n' 1815*cda5da8dSAndroid Build Coastguard Worker '\n' 1816*cda5da8dSAndroid Build Coastguard Worker '**Programmer’s note:** Variables defined in the class definition ' 1817*cda5da8dSAndroid Build Coastguard Worker 'are\n' 1818*cda5da8dSAndroid Build Coastguard Worker 'class attributes; they are shared by instances. Instance ' 1819*cda5da8dSAndroid Build Coastguard Worker 'attributes\n' 1820*cda5da8dSAndroid Build Coastguard Worker 'can be set in a method with "self.name = value". Both class and\n' 1821*cda5da8dSAndroid Build Coastguard Worker 'instance attributes are accessible through the notation ' 1822*cda5da8dSAndroid Build Coastguard Worker '“"self.name"”,\n' 1823*cda5da8dSAndroid Build Coastguard Worker 'and an instance attribute hides a class attribute with the same ' 1824*cda5da8dSAndroid Build Coastguard Worker 'name\n' 1825*cda5da8dSAndroid Build Coastguard Worker 'when accessed in this way. Class attributes can be used as ' 1826*cda5da8dSAndroid Build Coastguard Worker 'defaults\n' 1827*cda5da8dSAndroid Build Coastguard Worker 'for instance attributes, but using mutable values there can lead ' 1828*cda5da8dSAndroid Build Coastguard Worker 'to\n' 1829*cda5da8dSAndroid Build Coastguard Worker 'unexpected results. Descriptors can be used to create instance\n' 1830*cda5da8dSAndroid Build Coastguard Worker 'variables with different implementation details.\n' 1831*cda5da8dSAndroid Build Coastguard Worker '\n' 1832*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 1833*cda5da8dSAndroid Build Coastguard Worker '\n' 1834*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3115** - Metaclasses in Python 3000\n' 1835*cda5da8dSAndroid Build Coastguard Worker ' The proposal that changed the declaration of metaclasses to ' 1836*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1837*cda5da8dSAndroid Build Coastguard Worker ' current syntax, and the semantics for how classes with\n' 1838*cda5da8dSAndroid Build Coastguard Worker ' metaclasses are constructed.\n' 1839*cda5da8dSAndroid Build Coastguard Worker '\n' 1840*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3129** - Class Decorators\n' 1841*cda5da8dSAndroid Build Coastguard Worker ' The proposal that added class decorators. Function and ' 1842*cda5da8dSAndroid Build Coastguard Worker 'method\n' 1843*cda5da8dSAndroid Build Coastguard Worker ' decorators were introduced in **PEP 318**.\n', 1844*cda5da8dSAndroid Build Coastguard Worker 'comparisons': 'Comparisons\n' 1845*cda5da8dSAndroid Build Coastguard Worker '***********\n' 1846*cda5da8dSAndroid Build Coastguard Worker '\n' 1847*cda5da8dSAndroid Build Coastguard Worker 'Unlike C, all comparison operations in Python have the same ' 1848*cda5da8dSAndroid Build Coastguard Worker 'priority,\n' 1849*cda5da8dSAndroid Build Coastguard Worker 'which is lower than that of any arithmetic, shifting or ' 1850*cda5da8dSAndroid Build Coastguard Worker 'bitwise\n' 1851*cda5da8dSAndroid Build Coastguard Worker 'operation. Also unlike C, expressions like "a < b < c" have ' 1852*cda5da8dSAndroid Build Coastguard Worker 'the\n' 1853*cda5da8dSAndroid Build Coastguard Worker 'interpretation that is conventional in mathematics:\n' 1854*cda5da8dSAndroid Build Coastguard Worker '\n' 1855*cda5da8dSAndroid Build Coastguard Worker ' comparison ::= or_expr (comp_operator or_expr)*\n' 1856*cda5da8dSAndroid Build Coastguard Worker ' comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="\n' 1857*cda5da8dSAndroid Build Coastguard Worker ' | "is" ["not"] | ["not"] "in"\n' 1858*cda5da8dSAndroid Build Coastguard Worker '\n' 1859*cda5da8dSAndroid Build Coastguard Worker 'Comparisons yield boolean values: "True" or "False". Custom ' 1860*cda5da8dSAndroid Build Coastguard Worker '*rich\n' 1861*cda5da8dSAndroid Build Coastguard Worker 'comparison methods* may return non-boolean values. In this ' 1862*cda5da8dSAndroid Build Coastguard Worker 'case Python\n' 1863*cda5da8dSAndroid Build Coastguard Worker 'will call "bool()" on such value in boolean contexts.\n' 1864*cda5da8dSAndroid Build Coastguard Worker '\n' 1865*cda5da8dSAndroid Build Coastguard Worker 'Comparisons can be chained arbitrarily, e.g., "x < y <= z" ' 1866*cda5da8dSAndroid Build Coastguard Worker 'is\n' 1867*cda5da8dSAndroid Build Coastguard Worker 'equivalent to "x < y and y <= z", except that "y" is ' 1868*cda5da8dSAndroid Build Coastguard Worker 'evaluated only\n' 1869*cda5da8dSAndroid Build Coastguard Worker 'once (but in both cases "z" is not evaluated at all when "x < ' 1870*cda5da8dSAndroid Build Coastguard Worker 'y" is\n' 1871*cda5da8dSAndroid Build Coastguard Worker 'found to be false).\n' 1872*cda5da8dSAndroid Build Coastguard Worker '\n' 1873*cda5da8dSAndroid Build Coastguard Worker 'Formally, if *a*, *b*, *c*, …, *y*, *z* are expressions and ' 1874*cda5da8dSAndroid Build Coastguard Worker '*op1*,\n' 1875*cda5da8dSAndroid Build Coastguard Worker '*op2*, …, *opN* are comparison operators, then "a op1 b op2 c ' 1876*cda5da8dSAndroid Build Coastguard Worker '... y\n' 1877*cda5da8dSAndroid Build Coastguard Worker 'opN z" is equivalent to "a op1 b and b op2 c and ... y opN ' 1878*cda5da8dSAndroid Build Coastguard Worker 'z", except\n' 1879*cda5da8dSAndroid Build Coastguard Worker 'that each expression is evaluated at most once.\n' 1880*cda5da8dSAndroid Build Coastguard Worker '\n' 1881*cda5da8dSAndroid Build Coastguard Worker 'Note that "a op1 b op2 c" doesn’t imply any kind of ' 1882*cda5da8dSAndroid Build Coastguard Worker 'comparison between\n' 1883*cda5da8dSAndroid Build Coastguard Worker '*a* and *c*, so that, e.g., "x < y > z" is perfectly legal ' 1884*cda5da8dSAndroid Build Coastguard Worker '(though\n' 1885*cda5da8dSAndroid Build Coastguard Worker 'perhaps not pretty).\n' 1886*cda5da8dSAndroid Build Coastguard Worker '\n' 1887*cda5da8dSAndroid Build Coastguard Worker '\n' 1888*cda5da8dSAndroid Build Coastguard Worker 'Value comparisons\n' 1889*cda5da8dSAndroid Build Coastguard Worker '=================\n' 1890*cda5da8dSAndroid Build Coastguard Worker '\n' 1891*cda5da8dSAndroid Build Coastguard Worker 'The operators "<", ">", "==", ">=", "<=", and "!=" compare ' 1892*cda5da8dSAndroid Build Coastguard Worker 'the values\n' 1893*cda5da8dSAndroid Build Coastguard Worker 'of two objects. The objects do not need to have the same ' 1894*cda5da8dSAndroid Build Coastguard Worker 'type.\n' 1895*cda5da8dSAndroid Build Coastguard Worker '\n' 1896*cda5da8dSAndroid Build Coastguard Worker 'Chapter Objects, values and types states that objects have a ' 1897*cda5da8dSAndroid Build Coastguard Worker 'value (in\n' 1898*cda5da8dSAndroid Build Coastguard Worker 'addition to type and identity). The value of an object is a ' 1899*cda5da8dSAndroid Build Coastguard Worker 'rather\n' 1900*cda5da8dSAndroid Build Coastguard Worker 'abstract notion in Python: For example, there is no canonical ' 1901*cda5da8dSAndroid Build Coastguard Worker 'access\n' 1902*cda5da8dSAndroid Build Coastguard Worker 'method for an object’s value. Also, there is no requirement ' 1903*cda5da8dSAndroid Build Coastguard Worker 'that the\n' 1904*cda5da8dSAndroid Build Coastguard Worker 'value of an object should be constructed in a particular way, ' 1905*cda5da8dSAndroid Build Coastguard Worker 'e.g.\n' 1906*cda5da8dSAndroid Build Coastguard Worker 'comprised of all its data attributes. Comparison operators ' 1907*cda5da8dSAndroid Build Coastguard Worker 'implement a\n' 1908*cda5da8dSAndroid Build Coastguard Worker 'particular notion of what the value of an object is. One can ' 1909*cda5da8dSAndroid Build Coastguard Worker 'think of\n' 1910*cda5da8dSAndroid Build Coastguard Worker 'them as defining the value of an object indirectly, by means ' 1911*cda5da8dSAndroid Build Coastguard Worker 'of their\n' 1912*cda5da8dSAndroid Build Coastguard Worker 'comparison implementation.\n' 1913*cda5da8dSAndroid Build Coastguard Worker '\n' 1914*cda5da8dSAndroid Build Coastguard Worker 'Because all types are (direct or indirect) subtypes of ' 1915*cda5da8dSAndroid Build Coastguard Worker '"object", they\n' 1916*cda5da8dSAndroid Build Coastguard Worker 'inherit the default comparison behavior from "object". Types ' 1917*cda5da8dSAndroid Build Coastguard Worker 'can\n' 1918*cda5da8dSAndroid Build Coastguard Worker 'customize their comparison behavior by implementing *rich ' 1919*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 1920*cda5da8dSAndroid Build Coastguard Worker 'methods* like "__lt__()", described in Basic customization.\n' 1921*cda5da8dSAndroid Build Coastguard Worker '\n' 1922*cda5da8dSAndroid Build Coastguard Worker 'The default behavior for equality comparison ("==" and "!=") ' 1923*cda5da8dSAndroid Build Coastguard Worker 'is based\n' 1924*cda5da8dSAndroid Build Coastguard Worker 'on the identity of the objects. Hence, equality comparison ' 1925*cda5da8dSAndroid Build Coastguard Worker 'of\n' 1926*cda5da8dSAndroid Build Coastguard Worker 'instances with the same identity results in equality, and ' 1927*cda5da8dSAndroid Build Coastguard Worker 'equality\n' 1928*cda5da8dSAndroid Build Coastguard Worker 'comparison of instances with different identities results in\n' 1929*cda5da8dSAndroid Build Coastguard Worker 'inequality. A motivation for this default behavior is the ' 1930*cda5da8dSAndroid Build Coastguard Worker 'desire that\n' 1931*cda5da8dSAndroid Build Coastguard Worker 'all objects should be reflexive (i.e. "x is y" implies "x == ' 1932*cda5da8dSAndroid Build Coastguard Worker 'y").\n' 1933*cda5da8dSAndroid Build Coastguard Worker '\n' 1934*cda5da8dSAndroid Build Coastguard Worker 'A default order comparison ("<", ">", "<=", and ">=") is not ' 1935*cda5da8dSAndroid Build Coastguard Worker 'provided;\n' 1936*cda5da8dSAndroid Build Coastguard Worker 'an attempt raises "TypeError". A motivation for this default ' 1937*cda5da8dSAndroid Build Coastguard Worker 'behavior\n' 1938*cda5da8dSAndroid Build Coastguard Worker 'is the lack of a similar invariant as for equality.\n' 1939*cda5da8dSAndroid Build Coastguard Worker '\n' 1940*cda5da8dSAndroid Build Coastguard Worker 'The behavior of the default equality comparison, that ' 1941*cda5da8dSAndroid Build Coastguard Worker 'instances with\n' 1942*cda5da8dSAndroid Build Coastguard Worker 'different identities are always unequal, may be in contrast ' 1943*cda5da8dSAndroid Build Coastguard Worker 'to what\n' 1944*cda5da8dSAndroid Build Coastguard Worker 'types will need that have a sensible definition of object ' 1945*cda5da8dSAndroid Build Coastguard Worker 'value and\n' 1946*cda5da8dSAndroid Build Coastguard Worker 'value-based equality. Such types will need to customize ' 1947*cda5da8dSAndroid Build Coastguard Worker 'their\n' 1948*cda5da8dSAndroid Build Coastguard Worker 'comparison behavior, and in fact, a number of built-in types ' 1949*cda5da8dSAndroid Build Coastguard Worker 'have done\n' 1950*cda5da8dSAndroid Build Coastguard Worker 'that.\n' 1951*cda5da8dSAndroid Build Coastguard Worker '\n' 1952*cda5da8dSAndroid Build Coastguard Worker 'The following list describes the comparison behavior of the ' 1953*cda5da8dSAndroid Build Coastguard Worker 'most\n' 1954*cda5da8dSAndroid Build Coastguard Worker 'important built-in types.\n' 1955*cda5da8dSAndroid Build Coastguard Worker '\n' 1956*cda5da8dSAndroid Build Coastguard Worker '* Numbers of built-in numeric types (Numeric Types — int, ' 1957*cda5da8dSAndroid Build Coastguard Worker 'float,\n' 1958*cda5da8dSAndroid Build Coastguard Worker ' complex) and of the standard library types ' 1959*cda5da8dSAndroid Build Coastguard Worker '"fractions.Fraction" and\n' 1960*cda5da8dSAndroid Build Coastguard Worker ' "decimal.Decimal" can be compared within and across their ' 1961*cda5da8dSAndroid Build Coastguard Worker 'types,\n' 1962*cda5da8dSAndroid Build Coastguard Worker ' with the restriction that complex numbers do not support ' 1963*cda5da8dSAndroid Build Coastguard Worker 'order\n' 1964*cda5da8dSAndroid Build Coastguard Worker ' comparison. Within the limits of the types involved, they ' 1965*cda5da8dSAndroid Build Coastguard Worker 'compare\n' 1966*cda5da8dSAndroid Build Coastguard Worker ' mathematically (algorithmically) correct without loss of ' 1967*cda5da8dSAndroid Build Coastguard Worker 'precision.\n' 1968*cda5da8dSAndroid Build Coastguard Worker '\n' 1969*cda5da8dSAndroid Build Coastguard Worker ' The not-a-number values "float(\'NaN\')" and ' 1970*cda5da8dSAndroid Build Coastguard Worker '"decimal.Decimal(\'NaN\')"\n' 1971*cda5da8dSAndroid Build Coastguard Worker ' are special. Any ordered comparison of a number to a ' 1972*cda5da8dSAndroid Build Coastguard Worker 'not-a-number\n' 1973*cda5da8dSAndroid Build Coastguard Worker ' value is false. A counter-intuitive implication is that ' 1974*cda5da8dSAndroid Build Coastguard Worker 'not-a-number\n' 1975*cda5da8dSAndroid Build Coastguard Worker ' values are not equal to themselves. For example, if "x =\n' 1976*cda5da8dSAndroid Build Coastguard Worker ' float(\'NaN\')", "3 < x", "x < 3" and "x == x" are all ' 1977*cda5da8dSAndroid Build Coastguard Worker 'false, while "x\n' 1978*cda5da8dSAndroid Build Coastguard Worker ' != x" is true. This behavior is compliant with IEEE 754.\n' 1979*cda5da8dSAndroid Build Coastguard Worker '\n' 1980*cda5da8dSAndroid Build Coastguard Worker '* "None" and "NotImplemented" are singletons. **PEP 8** ' 1981*cda5da8dSAndroid Build Coastguard Worker 'advises that\n' 1982*cda5da8dSAndroid Build Coastguard Worker ' comparisons for singletons should always be done with "is" ' 1983*cda5da8dSAndroid Build Coastguard Worker 'or "is\n' 1984*cda5da8dSAndroid Build Coastguard Worker ' not", never the equality operators.\n' 1985*cda5da8dSAndroid Build Coastguard Worker '\n' 1986*cda5da8dSAndroid Build Coastguard Worker '* Binary sequences (instances of "bytes" or "bytearray") can ' 1987*cda5da8dSAndroid Build Coastguard Worker 'be\n' 1988*cda5da8dSAndroid Build Coastguard Worker ' compared within and across their types. They compare\n' 1989*cda5da8dSAndroid Build Coastguard Worker ' lexicographically using the numeric values of their ' 1990*cda5da8dSAndroid Build Coastguard Worker 'elements.\n' 1991*cda5da8dSAndroid Build Coastguard Worker '\n' 1992*cda5da8dSAndroid Build Coastguard Worker '* Strings (instances of "str") compare lexicographically ' 1993*cda5da8dSAndroid Build Coastguard Worker 'using the\n' 1994*cda5da8dSAndroid Build Coastguard Worker ' numerical Unicode code points (the result of the built-in ' 1995*cda5da8dSAndroid Build Coastguard Worker 'function\n' 1996*cda5da8dSAndroid Build Coastguard Worker ' "ord()") of their characters. [3]\n' 1997*cda5da8dSAndroid Build Coastguard Worker '\n' 1998*cda5da8dSAndroid Build Coastguard Worker ' Strings and binary sequences cannot be directly compared.\n' 1999*cda5da8dSAndroid Build Coastguard Worker '\n' 2000*cda5da8dSAndroid Build Coastguard Worker '* Sequences (instances of "tuple", "list", or "range") can be ' 2001*cda5da8dSAndroid Build Coastguard Worker 'compared\n' 2002*cda5da8dSAndroid Build Coastguard Worker ' only within each of their types, with the restriction that ' 2003*cda5da8dSAndroid Build Coastguard Worker 'ranges do\n' 2004*cda5da8dSAndroid Build Coastguard Worker ' not support order comparison. Equality comparison across ' 2005*cda5da8dSAndroid Build Coastguard Worker 'these\n' 2006*cda5da8dSAndroid Build Coastguard Worker ' types results in inequality, and ordering comparison across ' 2007*cda5da8dSAndroid Build Coastguard Worker 'these\n' 2008*cda5da8dSAndroid Build Coastguard Worker ' types raises "TypeError".\n' 2009*cda5da8dSAndroid Build Coastguard Worker '\n' 2010*cda5da8dSAndroid Build Coastguard Worker ' Sequences compare lexicographically using comparison of\n' 2011*cda5da8dSAndroid Build Coastguard Worker ' corresponding elements. The built-in containers typically ' 2012*cda5da8dSAndroid Build Coastguard Worker 'assume\n' 2013*cda5da8dSAndroid Build Coastguard Worker ' identical objects are equal to themselves. That lets them ' 2014*cda5da8dSAndroid Build Coastguard Worker 'bypass\n' 2015*cda5da8dSAndroid Build Coastguard Worker ' equality tests for identical objects to improve performance ' 2016*cda5da8dSAndroid Build Coastguard Worker 'and to\n' 2017*cda5da8dSAndroid Build Coastguard Worker ' maintain their internal invariants.\n' 2018*cda5da8dSAndroid Build Coastguard Worker '\n' 2019*cda5da8dSAndroid Build Coastguard Worker ' Lexicographical comparison between built-in collections ' 2020*cda5da8dSAndroid Build Coastguard Worker 'works as\n' 2021*cda5da8dSAndroid Build Coastguard Worker ' follows:\n' 2022*cda5da8dSAndroid Build Coastguard Worker '\n' 2023*cda5da8dSAndroid Build Coastguard Worker ' * For two collections to compare equal, they must be of the ' 2024*cda5da8dSAndroid Build Coastguard Worker 'same\n' 2025*cda5da8dSAndroid Build Coastguard Worker ' type, have the same length, and each pair of ' 2026*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 2027*cda5da8dSAndroid Build Coastguard Worker ' elements must compare equal (for example, "[1,2] == ' 2028*cda5da8dSAndroid Build Coastguard Worker '(1,2)" is\n' 2029*cda5da8dSAndroid Build Coastguard Worker ' false because the type is not the same).\n' 2030*cda5da8dSAndroid Build Coastguard Worker '\n' 2031*cda5da8dSAndroid Build Coastguard Worker ' * Collections that support order comparison are ordered the ' 2032*cda5da8dSAndroid Build Coastguard Worker 'same as\n' 2033*cda5da8dSAndroid Build Coastguard Worker ' their first unequal elements (for example, "[1,2,x] <= ' 2034*cda5da8dSAndroid Build Coastguard Worker '[1,2,y]"\n' 2035*cda5da8dSAndroid Build Coastguard Worker ' has the same value as "x <= y"). If a corresponding ' 2036*cda5da8dSAndroid Build Coastguard Worker 'element does\n' 2037*cda5da8dSAndroid Build Coastguard Worker ' not exist, the shorter collection is ordered first (for ' 2038*cda5da8dSAndroid Build Coastguard Worker 'example,\n' 2039*cda5da8dSAndroid Build Coastguard Worker ' "[1,2] < [1,2,3]" is true).\n' 2040*cda5da8dSAndroid Build Coastguard Worker '\n' 2041*cda5da8dSAndroid Build Coastguard Worker '* Mappings (instances of "dict") compare equal if and only if ' 2042*cda5da8dSAndroid Build Coastguard Worker 'they\n' 2043*cda5da8dSAndroid Build Coastguard Worker ' have equal "(key, value)" pairs. Equality comparison of the ' 2044*cda5da8dSAndroid Build Coastguard Worker 'keys and\n' 2045*cda5da8dSAndroid Build Coastguard Worker ' values enforces reflexivity.\n' 2046*cda5da8dSAndroid Build Coastguard Worker '\n' 2047*cda5da8dSAndroid Build Coastguard Worker ' Order comparisons ("<", ">", "<=", and ">=") raise ' 2048*cda5da8dSAndroid Build Coastguard Worker '"TypeError".\n' 2049*cda5da8dSAndroid Build Coastguard Worker '\n' 2050*cda5da8dSAndroid Build Coastguard Worker '* Sets (instances of "set" or "frozenset") can be compared ' 2051*cda5da8dSAndroid Build Coastguard Worker 'within and\n' 2052*cda5da8dSAndroid Build Coastguard Worker ' across their types.\n' 2053*cda5da8dSAndroid Build Coastguard Worker '\n' 2054*cda5da8dSAndroid Build Coastguard Worker ' They define order comparison operators to mean subset and ' 2055*cda5da8dSAndroid Build Coastguard Worker 'superset\n' 2056*cda5da8dSAndroid Build Coastguard Worker ' tests. Those relations do not define total orderings (for ' 2057*cda5da8dSAndroid Build Coastguard Worker 'example,\n' 2058*cda5da8dSAndroid Build Coastguard Worker ' the two sets "{1,2}" and "{2,3}" are not equal, nor subsets ' 2059*cda5da8dSAndroid Build Coastguard Worker 'of one\n' 2060*cda5da8dSAndroid Build Coastguard Worker ' another, nor supersets of one another). Accordingly, sets ' 2061*cda5da8dSAndroid Build Coastguard Worker 'are not\n' 2062*cda5da8dSAndroid Build Coastguard Worker ' appropriate arguments for functions which depend on total ' 2063*cda5da8dSAndroid Build Coastguard Worker 'ordering\n' 2064*cda5da8dSAndroid Build Coastguard Worker ' (for example, "min()", "max()", and "sorted()" produce ' 2065*cda5da8dSAndroid Build Coastguard Worker 'undefined\n' 2066*cda5da8dSAndroid Build Coastguard Worker ' results given a list of sets as inputs).\n' 2067*cda5da8dSAndroid Build Coastguard Worker '\n' 2068*cda5da8dSAndroid Build Coastguard Worker ' Comparison of sets enforces reflexivity of its elements.\n' 2069*cda5da8dSAndroid Build Coastguard Worker '\n' 2070*cda5da8dSAndroid Build Coastguard Worker '* Most other built-in types have no comparison methods ' 2071*cda5da8dSAndroid Build Coastguard Worker 'implemented, so\n' 2072*cda5da8dSAndroid Build Coastguard Worker ' they inherit the default comparison behavior.\n' 2073*cda5da8dSAndroid Build Coastguard Worker '\n' 2074*cda5da8dSAndroid Build Coastguard Worker 'User-defined classes that customize their comparison behavior ' 2075*cda5da8dSAndroid Build Coastguard Worker 'should\n' 2076*cda5da8dSAndroid Build Coastguard Worker 'follow some consistency rules, if possible:\n' 2077*cda5da8dSAndroid Build Coastguard Worker '\n' 2078*cda5da8dSAndroid Build Coastguard Worker '* Equality comparison should be reflexive. In other words, ' 2079*cda5da8dSAndroid Build Coastguard Worker 'identical\n' 2080*cda5da8dSAndroid Build Coastguard Worker ' objects should compare equal:\n' 2081*cda5da8dSAndroid Build Coastguard Worker '\n' 2082*cda5da8dSAndroid Build Coastguard Worker ' "x is y" implies "x == y"\n' 2083*cda5da8dSAndroid Build Coastguard Worker '\n' 2084*cda5da8dSAndroid Build Coastguard Worker '* Comparison should be symmetric. In other words, the ' 2085*cda5da8dSAndroid Build Coastguard Worker 'following\n' 2086*cda5da8dSAndroid Build Coastguard Worker ' expressions should have the same result:\n' 2087*cda5da8dSAndroid Build Coastguard Worker '\n' 2088*cda5da8dSAndroid Build Coastguard Worker ' "x == y" and "y == x"\n' 2089*cda5da8dSAndroid Build Coastguard Worker '\n' 2090*cda5da8dSAndroid Build Coastguard Worker ' "x != y" and "y != x"\n' 2091*cda5da8dSAndroid Build Coastguard Worker '\n' 2092*cda5da8dSAndroid Build Coastguard Worker ' "x < y" and "y > x"\n' 2093*cda5da8dSAndroid Build Coastguard Worker '\n' 2094*cda5da8dSAndroid Build Coastguard Worker ' "x <= y" and "y >= x"\n' 2095*cda5da8dSAndroid Build Coastguard Worker '\n' 2096*cda5da8dSAndroid Build Coastguard Worker '* Comparison should be transitive. The following ' 2097*cda5da8dSAndroid Build Coastguard Worker '(non-exhaustive)\n' 2098*cda5da8dSAndroid Build Coastguard Worker ' examples illustrate that:\n' 2099*cda5da8dSAndroid Build Coastguard Worker '\n' 2100*cda5da8dSAndroid Build Coastguard Worker ' "x > y and y > z" implies "x > z"\n' 2101*cda5da8dSAndroid Build Coastguard Worker '\n' 2102*cda5da8dSAndroid Build Coastguard Worker ' "x < y and y <= z" implies "x < z"\n' 2103*cda5da8dSAndroid Build Coastguard Worker '\n' 2104*cda5da8dSAndroid Build Coastguard Worker '* Inverse comparison should result in the boolean negation. ' 2105*cda5da8dSAndroid Build Coastguard Worker 'In other\n' 2106*cda5da8dSAndroid Build Coastguard Worker ' words, the following expressions should have the same ' 2107*cda5da8dSAndroid Build Coastguard Worker 'result:\n' 2108*cda5da8dSAndroid Build Coastguard Worker '\n' 2109*cda5da8dSAndroid Build Coastguard Worker ' "x == y" and "not x != y"\n' 2110*cda5da8dSAndroid Build Coastguard Worker '\n' 2111*cda5da8dSAndroid Build Coastguard Worker ' "x < y" and "not x >= y" (for total ordering)\n' 2112*cda5da8dSAndroid Build Coastguard Worker '\n' 2113*cda5da8dSAndroid Build Coastguard Worker ' "x > y" and "not x <= y" (for total ordering)\n' 2114*cda5da8dSAndroid Build Coastguard Worker '\n' 2115*cda5da8dSAndroid Build Coastguard Worker ' The last two expressions apply to totally ordered ' 2116*cda5da8dSAndroid Build Coastguard Worker 'collections (e.g.\n' 2117*cda5da8dSAndroid Build Coastguard Worker ' to sequences, but not to sets or mappings). See also the\n' 2118*cda5da8dSAndroid Build Coastguard Worker ' "total_ordering()" decorator.\n' 2119*cda5da8dSAndroid Build Coastguard Worker '\n' 2120*cda5da8dSAndroid Build Coastguard Worker '* The "hash()" result should be consistent with equality. ' 2121*cda5da8dSAndroid Build Coastguard Worker 'Objects that\n' 2122*cda5da8dSAndroid Build Coastguard Worker ' are equal should either have the same hash value, or be ' 2123*cda5da8dSAndroid Build Coastguard Worker 'marked as\n' 2124*cda5da8dSAndroid Build Coastguard Worker ' unhashable.\n' 2125*cda5da8dSAndroid Build Coastguard Worker '\n' 2126*cda5da8dSAndroid Build Coastguard Worker 'Python does not enforce these consistency rules. In fact, ' 2127*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2128*cda5da8dSAndroid Build Coastguard Worker 'not-a-number values are an example for not following these ' 2129*cda5da8dSAndroid Build Coastguard Worker 'rules.\n' 2130*cda5da8dSAndroid Build Coastguard Worker '\n' 2131*cda5da8dSAndroid Build Coastguard Worker '\n' 2132*cda5da8dSAndroid Build Coastguard Worker 'Membership test operations\n' 2133*cda5da8dSAndroid Build Coastguard Worker '==========================\n' 2134*cda5da8dSAndroid Build Coastguard Worker '\n' 2135*cda5da8dSAndroid Build Coastguard Worker 'The operators "in" and "not in" test for membership. "x in ' 2136*cda5da8dSAndroid Build Coastguard Worker 's"\n' 2137*cda5da8dSAndroid Build Coastguard Worker 'evaluates to "True" if *x* is a member of *s*, and "False" ' 2138*cda5da8dSAndroid Build Coastguard Worker 'otherwise.\n' 2139*cda5da8dSAndroid Build Coastguard Worker '"x not in s" returns the negation of "x in s". All built-in ' 2140*cda5da8dSAndroid Build Coastguard Worker 'sequences\n' 2141*cda5da8dSAndroid Build Coastguard Worker 'and set types support this as well as dictionary, for which ' 2142*cda5da8dSAndroid Build Coastguard Worker '"in" tests\n' 2143*cda5da8dSAndroid Build Coastguard Worker 'whether the dictionary has a given key. For container types ' 2144*cda5da8dSAndroid Build Coastguard Worker 'such as\n' 2145*cda5da8dSAndroid Build Coastguard Worker 'list, tuple, set, frozenset, dict, or collections.deque, the\n' 2146*cda5da8dSAndroid Build Coastguard Worker 'expression "x in y" is equivalent to "any(x is e or x == e ' 2147*cda5da8dSAndroid Build Coastguard Worker 'for e in\n' 2148*cda5da8dSAndroid Build Coastguard Worker 'y)".\n' 2149*cda5da8dSAndroid Build Coastguard Worker '\n' 2150*cda5da8dSAndroid Build Coastguard Worker 'For the string and bytes types, "x in y" is "True" if and ' 2151*cda5da8dSAndroid Build Coastguard Worker 'only if *x*\n' 2152*cda5da8dSAndroid Build Coastguard Worker 'is a substring of *y*. An equivalent test is "y.find(x) != ' 2153*cda5da8dSAndroid Build Coastguard Worker '-1".\n' 2154*cda5da8dSAndroid Build Coastguard Worker 'Empty strings are always considered to be a substring of any ' 2155*cda5da8dSAndroid Build Coastguard Worker 'other\n' 2156*cda5da8dSAndroid Build Coastguard Worker 'string, so """ in "abc"" will return "True".\n' 2157*cda5da8dSAndroid Build Coastguard Worker '\n' 2158*cda5da8dSAndroid Build Coastguard Worker 'For user-defined classes which define the "__contains__()" ' 2159*cda5da8dSAndroid Build Coastguard Worker 'method, "x\n' 2160*cda5da8dSAndroid Build Coastguard Worker 'in y" returns "True" if "y.__contains__(x)" returns a true ' 2161*cda5da8dSAndroid Build Coastguard Worker 'value, and\n' 2162*cda5da8dSAndroid Build Coastguard Worker '"False" otherwise.\n' 2163*cda5da8dSAndroid Build Coastguard Worker '\n' 2164*cda5da8dSAndroid Build Coastguard Worker 'For user-defined classes which do not define "__contains__()" ' 2165*cda5da8dSAndroid Build Coastguard Worker 'but do\n' 2166*cda5da8dSAndroid Build Coastguard Worker 'define "__iter__()", "x in y" is "True" if some value "z", ' 2167*cda5da8dSAndroid Build Coastguard Worker 'for which\n' 2168*cda5da8dSAndroid Build Coastguard Worker 'the expression "x is z or x == z" is true, is produced while ' 2169*cda5da8dSAndroid Build Coastguard Worker 'iterating\n' 2170*cda5da8dSAndroid Build Coastguard Worker 'over "y". If an exception is raised during the iteration, it ' 2171*cda5da8dSAndroid Build Coastguard Worker 'is as if\n' 2172*cda5da8dSAndroid Build Coastguard Worker '"in" raised that exception.\n' 2173*cda5da8dSAndroid Build Coastguard Worker '\n' 2174*cda5da8dSAndroid Build Coastguard Worker 'Lastly, the old-style iteration protocol is tried: if a class ' 2175*cda5da8dSAndroid Build Coastguard Worker 'defines\n' 2176*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()", "x in y" is "True" if and only if there is a ' 2177*cda5da8dSAndroid Build Coastguard Worker 'non-\n' 2178*cda5da8dSAndroid Build Coastguard Worker 'negative integer index *i* such that "x is y[i] or x == ' 2179*cda5da8dSAndroid Build Coastguard Worker 'y[i]", and no\n' 2180*cda5da8dSAndroid Build Coastguard Worker 'lower integer index raises the "IndexError" exception. (If ' 2181*cda5da8dSAndroid Build Coastguard Worker 'any other\n' 2182*cda5da8dSAndroid Build Coastguard Worker 'exception is raised, it is as if "in" raised that ' 2183*cda5da8dSAndroid Build Coastguard Worker 'exception).\n' 2184*cda5da8dSAndroid Build Coastguard Worker '\n' 2185*cda5da8dSAndroid Build Coastguard Worker 'The operator "not in" is defined to have the inverse truth ' 2186*cda5da8dSAndroid Build Coastguard Worker 'value of\n' 2187*cda5da8dSAndroid Build Coastguard Worker '"in".\n' 2188*cda5da8dSAndroid Build Coastguard Worker '\n' 2189*cda5da8dSAndroid Build Coastguard Worker '\n' 2190*cda5da8dSAndroid Build Coastguard Worker 'Identity comparisons\n' 2191*cda5da8dSAndroid Build Coastguard Worker '====================\n' 2192*cda5da8dSAndroid Build Coastguard Worker '\n' 2193*cda5da8dSAndroid Build Coastguard Worker 'The operators "is" and "is not" test for an object’s ' 2194*cda5da8dSAndroid Build Coastguard Worker 'identity: "x is\n' 2195*cda5da8dSAndroid Build Coastguard Worker 'y" is true if and only if *x* and *y* are the same object. ' 2196*cda5da8dSAndroid Build Coastguard Worker 'An\n' 2197*cda5da8dSAndroid Build Coastguard Worker 'Object’s identity is determined using the "id()" function. ' 2198*cda5da8dSAndroid Build Coastguard Worker '"x is not\n' 2199*cda5da8dSAndroid Build Coastguard Worker 'y" yields the inverse truth value. [4]\n', 2200*cda5da8dSAndroid Build Coastguard Worker 'compound': 'Compound statements\n' 2201*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 2202*cda5da8dSAndroid Build Coastguard Worker '\n' 2203*cda5da8dSAndroid Build Coastguard Worker 'Compound statements contain (groups of) other statements; they ' 2204*cda5da8dSAndroid Build Coastguard Worker 'affect\n' 2205*cda5da8dSAndroid Build Coastguard Worker 'or control the execution of those other statements in some way. ' 2206*cda5da8dSAndroid Build Coastguard Worker 'In\n' 2207*cda5da8dSAndroid Build Coastguard Worker 'general, compound statements span multiple lines, although in ' 2208*cda5da8dSAndroid Build Coastguard Worker 'simple\n' 2209*cda5da8dSAndroid Build Coastguard Worker 'incarnations a whole compound statement may be contained in one ' 2210*cda5da8dSAndroid Build Coastguard Worker 'line.\n' 2211*cda5da8dSAndroid Build Coastguard Worker '\n' 2212*cda5da8dSAndroid Build Coastguard Worker 'The "if", "while" and "for" statements implement traditional ' 2213*cda5da8dSAndroid Build Coastguard Worker 'control\n' 2214*cda5da8dSAndroid Build Coastguard Worker 'flow constructs. "try" specifies exception handlers and/or ' 2215*cda5da8dSAndroid Build Coastguard Worker 'cleanup\n' 2216*cda5da8dSAndroid Build Coastguard Worker 'code for a group of statements, while the "with" statement ' 2217*cda5da8dSAndroid Build Coastguard Worker 'allows the\n' 2218*cda5da8dSAndroid Build Coastguard Worker 'execution of initialization and finalization code around a block ' 2219*cda5da8dSAndroid Build Coastguard Worker 'of\n' 2220*cda5da8dSAndroid Build Coastguard Worker 'code. Function and class definitions are also syntactically ' 2221*cda5da8dSAndroid Build Coastguard Worker 'compound\n' 2222*cda5da8dSAndroid Build Coastguard Worker 'statements.\n' 2223*cda5da8dSAndroid Build Coastguard Worker '\n' 2224*cda5da8dSAndroid Build Coastguard Worker 'A compound statement consists of one or more ‘clauses.’ A ' 2225*cda5da8dSAndroid Build Coastguard Worker 'clause\n' 2226*cda5da8dSAndroid Build Coastguard Worker 'consists of a header and a ‘suite.’ The clause headers of a\n' 2227*cda5da8dSAndroid Build Coastguard Worker 'particular compound statement are all at the same indentation ' 2228*cda5da8dSAndroid Build Coastguard Worker 'level.\n' 2229*cda5da8dSAndroid Build Coastguard Worker 'Each clause header begins with a uniquely identifying keyword ' 2230*cda5da8dSAndroid Build Coastguard Worker 'and ends\n' 2231*cda5da8dSAndroid Build Coastguard Worker 'with a colon. A suite is a group of statements controlled by a\n' 2232*cda5da8dSAndroid Build Coastguard Worker 'clause. A suite can be one or more semicolon-separated simple\n' 2233*cda5da8dSAndroid Build Coastguard Worker 'statements on the same line as the header, following the ' 2234*cda5da8dSAndroid Build Coastguard Worker 'header’s\n' 2235*cda5da8dSAndroid Build Coastguard Worker 'colon, or it can be one or more indented statements on ' 2236*cda5da8dSAndroid Build Coastguard Worker 'subsequent\n' 2237*cda5da8dSAndroid Build Coastguard Worker 'lines. Only the latter form of a suite can contain nested ' 2238*cda5da8dSAndroid Build Coastguard Worker 'compound\n' 2239*cda5da8dSAndroid Build Coastguard Worker 'statements; the following is illegal, mostly because it wouldn’t ' 2240*cda5da8dSAndroid Build Coastguard Worker 'be\n' 2241*cda5da8dSAndroid Build Coastguard Worker 'clear to which "if" clause a following "else" clause would ' 2242*cda5da8dSAndroid Build Coastguard Worker 'belong:\n' 2243*cda5da8dSAndroid Build Coastguard Worker '\n' 2244*cda5da8dSAndroid Build Coastguard Worker ' if test1: if test2: print(x)\n' 2245*cda5da8dSAndroid Build Coastguard Worker '\n' 2246*cda5da8dSAndroid Build Coastguard Worker 'Also note that the semicolon binds tighter than the colon in ' 2247*cda5da8dSAndroid Build Coastguard Worker 'this\n' 2248*cda5da8dSAndroid Build Coastguard Worker 'context, so that in the following example, either all or none of ' 2249*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2250*cda5da8dSAndroid Build Coastguard Worker '"print()" calls are executed:\n' 2251*cda5da8dSAndroid Build Coastguard Worker '\n' 2252*cda5da8dSAndroid Build Coastguard Worker ' if x < y < z: print(x); print(y); print(z)\n' 2253*cda5da8dSAndroid Build Coastguard Worker '\n' 2254*cda5da8dSAndroid Build Coastguard Worker 'Summarizing:\n' 2255*cda5da8dSAndroid Build Coastguard Worker '\n' 2256*cda5da8dSAndroid Build Coastguard Worker ' compound_stmt ::= if_stmt\n' 2257*cda5da8dSAndroid Build Coastguard Worker ' | while_stmt\n' 2258*cda5da8dSAndroid Build Coastguard Worker ' | for_stmt\n' 2259*cda5da8dSAndroid Build Coastguard Worker ' | try_stmt\n' 2260*cda5da8dSAndroid Build Coastguard Worker ' | with_stmt\n' 2261*cda5da8dSAndroid Build Coastguard Worker ' | match_stmt\n' 2262*cda5da8dSAndroid Build Coastguard Worker ' | funcdef\n' 2263*cda5da8dSAndroid Build Coastguard Worker ' | classdef\n' 2264*cda5da8dSAndroid Build Coastguard Worker ' | async_with_stmt\n' 2265*cda5da8dSAndroid Build Coastguard Worker ' | async_for_stmt\n' 2266*cda5da8dSAndroid Build Coastguard Worker ' | async_funcdef\n' 2267*cda5da8dSAndroid Build Coastguard Worker ' suite ::= stmt_list NEWLINE | NEWLINE INDENT ' 2268*cda5da8dSAndroid Build Coastguard Worker 'statement+ DEDENT\n' 2269*cda5da8dSAndroid Build Coastguard Worker ' statement ::= stmt_list NEWLINE | compound_stmt\n' 2270*cda5da8dSAndroid Build Coastguard Worker ' stmt_list ::= simple_stmt (";" simple_stmt)* [";"]\n' 2271*cda5da8dSAndroid Build Coastguard Worker '\n' 2272*cda5da8dSAndroid Build Coastguard Worker 'Note that statements always end in a "NEWLINE" possibly followed ' 2273*cda5da8dSAndroid Build Coastguard Worker 'by a\n' 2274*cda5da8dSAndroid Build Coastguard Worker '"DEDENT". Also note that optional continuation clauses always ' 2275*cda5da8dSAndroid Build Coastguard Worker 'begin\n' 2276*cda5da8dSAndroid Build Coastguard Worker 'with a keyword that cannot start a statement, thus there are no\n' 2277*cda5da8dSAndroid Build Coastguard Worker 'ambiguities (the ‘dangling "else"’ problem is solved in Python ' 2278*cda5da8dSAndroid Build Coastguard Worker 'by\n' 2279*cda5da8dSAndroid Build Coastguard Worker 'requiring nested "if" statements to be indented).\n' 2280*cda5da8dSAndroid Build Coastguard Worker '\n' 2281*cda5da8dSAndroid Build Coastguard Worker 'The formatting of the grammar rules in the following sections ' 2282*cda5da8dSAndroid Build Coastguard Worker 'places\n' 2283*cda5da8dSAndroid Build Coastguard Worker 'each clause on a separate line for clarity.\n' 2284*cda5da8dSAndroid Build Coastguard Worker '\n' 2285*cda5da8dSAndroid Build Coastguard Worker '\n' 2286*cda5da8dSAndroid Build Coastguard Worker 'The "if" statement\n' 2287*cda5da8dSAndroid Build Coastguard Worker '==================\n' 2288*cda5da8dSAndroid Build Coastguard Worker '\n' 2289*cda5da8dSAndroid Build Coastguard Worker 'The "if" statement is used for conditional execution:\n' 2290*cda5da8dSAndroid Build Coastguard Worker '\n' 2291*cda5da8dSAndroid Build Coastguard Worker ' if_stmt ::= "if" assignment_expression ":" suite\n' 2292*cda5da8dSAndroid Build Coastguard Worker ' ("elif" assignment_expression ":" suite)*\n' 2293*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 2294*cda5da8dSAndroid Build Coastguard Worker '\n' 2295*cda5da8dSAndroid Build Coastguard Worker 'It selects exactly one of the suites by evaluating the ' 2296*cda5da8dSAndroid Build Coastguard Worker 'expressions one\n' 2297*cda5da8dSAndroid Build Coastguard Worker 'by one until one is found to be true (see section Boolean ' 2298*cda5da8dSAndroid Build Coastguard Worker 'operations\n' 2299*cda5da8dSAndroid Build Coastguard Worker 'for the definition of true and false); then that suite is ' 2300*cda5da8dSAndroid Build Coastguard Worker 'executed\n' 2301*cda5da8dSAndroid Build Coastguard Worker '(and no other part of the "if" statement is executed or ' 2302*cda5da8dSAndroid Build Coastguard Worker 'evaluated).\n' 2303*cda5da8dSAndroid Build Coastguard Worker 'If all expressions are false, the suite of the "else" clause, ' 2304*cda5da8dSAndroid Build Coastguard Worker 'if\n' 2305*cda5da8dSAndroid Build Coastguard Worker 'present, is executed.\n' 2306*cda5da8dSAndroid Build Coastguard Worker '\n' 2307*cda5da8dSAndroid Build Coastguard Worker '\n' 2308*cda5da8dSAndroid Build Coastguard Worker 'The "while" statement\n' 2309*cda5da8dSAndroid Build Coastguard Worker '=====================\n' 2310*cda5da8dSAndroid Build Coastguard Worker '\n' 2311*cda5da8dSAndroid Build Coastguard Worker 'The "while" statement is used for repeated execution as long as ' 2312*cda5da8dSAndroid Build Coastguard Worker 'an\n' 2313*cda5da8dSAndroid Build Coastguard Worker 'expression is true:\n' 2314*cda5da8dSAndroid Build Coastguard Worker '\n' 2315*cda5da8dSAndroid Build Coastguard Worker ' while_stmt ::= "while" assignment_expression ":" suite\n' 2316*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 2317*cda5da8dSAndroid Build Coastguard Worker '\n' 2318*cda5da8dSAndroid Build Coastguard Worker 'This repeatedly tests the expression and, if it is true, ' 2319*cda5da8dSAndroid Build Coastguard Worker 'executes the\n' 2320*cda5da8dSAndroid Build Coastguard Worker 'first suite; if the expression is false (which may be the first ' 2321*cda5da8dSAndroid Build Coastguard Worker 'time\n' 2322*cda5da8dSAndroid Build Coastguard Worker 'it is tested) the suite of the "else" clause, if present, is ' 2323*cda5da8dSAndroid Build Coastguard Worker 'executed\n' 2324*cda5da8dSAndroid Build Coastguard Worker 'and the loop terminates.\n' 2325*cda5da8dSAndroid Build Coastguard Worker '\n' 2326*cda5da8dSAndroid Build Coastguard Worker 'A "break" statement executed in the first suite terminates the ' 2327*cda5da8dSAndroid Build Coastguard Worker 'loop\n' 2328*cda5da8dSAndroid Build Coastguard Worker 'without executing the "else" clause’s suite. A "continue" ' 2329*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 2330*cda5da8dSAndroid Build Coastguard Worker 'executed in the first suite skips the rest of the suite and goes ' 2331*cda5da8dSAndroid Build Coastguard Worker 'back\n' 2332*cda5da8dSAndroid Build Coastguard Worker 'to testing the expression.\n' 2333*cda5da8dSAndroid Build Coastguard Worker '\n' 2334*cda5da8dSAndroid Build Coastguard Worker '\n' 2335*cda5da8dSAndroid Build Coastguard Worker 'The "for" statement\n' 2336*cda5da8dSAndroid Build Coastguard Worker '===================\n' 2337*cda5da8dSAndroid Build Coastguard Worker '\n' 2338*cda5da8dSAndroid Build Coastguard Worker 'The "for" statement is used to iterate over the elements of a ' 2339*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 2340*cda5da8dSAndroid Build Coastguard Worker '(such as a string, tuple or list) or other iterable object:\n' 2341*cda5da8dSAndroid Build Coastguard Worker '\n' 2342*cda5da8dSAndroid Build Coastguard Worker ' for_stmt ::= "for" target_list "in" starred_list ":" suite\n' 2343*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 2344*cda5da8dSAndroid Build Coastguard Worker '\n' 2345*cda5da8dSAndroid Build Coastguard Worker 'The "starred_list" expression is evaluated once; it should yield ' 2346*cda5da8dSAndroid Build Coastguard Worker 'an\n' 2347*cda5da8dSAndroid Build Coastguard Worker '*iterable* object. An *iterator* is created for that iterable. ' 2348*cda5da8dSAndroid Build Coastguard Worker 'The\n' 2349*cda5da8dSAndroid Build Coastguard Worker 'first item provided by the iterator is then assigned to the ' 2350*cda5da8dSAndroid Build Coastguard Worker 'target\n' 2351*cda5da8dSAndroid Build Coastguard Worker 'list using the standard rules for assignments (see Assignment\n' 2352*cda5da8dSAndroid Build Coastguard Worker 'statements), and the suite is executed. This repeats for each ' 2353*cda5da8dSAndroid Build Coastguard Worker 'item\n' 2354*cda5da8dSAndroid Build Coastguard Worker 'provided by the iterator. When the iterator is exhausted, the ' 2355*cda5da8dSAndroid Build Coastguard Worker 'suite\n' 2356*cda5da8dSAndroid Build Coastguard Worker 'in the "else" clause, if present, is executed, and the loop\n' 2357*cda5da8dSAndroid Build Coastguard Worker 'terminates.\n' 2358*cda5da8dSAndroid Build Coastguard Worker '\n' 2359*cda5da8dSAndroid Build Coastguard Worker 'A "break" statement executed in the first suite terminates the ' 2360*cda5da8dSAndroid Build Coastguard Worker 'loop\n' 2361*cda5da8dSAndroid Build Coastguard Worker 'without executing the "else" clause’s suite. A "continue" ' 2362*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 2363*cda5da8dSAndroid Build Coastguard Worker 'executed in the first suite skips the rest of the suite and ' 2364*cda5da8dSAndroid Build Coastguard Worker 'continues\n' 2365*cda5da8dSAndroid Build Coastguard Worker 'with the next item, or with the "else" clause if there is no ' 2366*cda5da8dSAndroid Build Coastguard Worker 'next\n' 2367*cda5da8dSAndroid Build Coastguard Worker 'item.\n' 2368*cda5da8dSAndroid Build Coastguard Worker '\n' 2369*cda5da8dSAndroid Build Coastguard Worker 'The for-loop makes assignments to the variables in the target ' 2370*cda5da8dSAndroid Build Coastguard Worker 'list.\n' 2371*cda5da8dSAndroid Build Coastguard Worker 'This overwrites all previous assignments to those variables ' 2372*cda5da8dSAndroid Build Coastguard Worker 'including\n' 2373*cda5da8dSAndroid Build Coastguard Worker 'those made in the suite of the for-loop:\n' 2374*cda5da8dSAndroid Build Coastguard Worker '\n' 2375*cda5da8dSAndroid Build Coastguard Worker ' for i in range(10):\n' 2376*cda5da8dSAndroid Build Coastguard Worker ' print(i)\n' 2377*cda5da8dSAndroid Build Coastguard Worker ' i = 5 # this will not affect the for-loop\n' 2378*cda5da8dSAndroid Build Coastguard Worker ' # because i will be overwritten with ' 2379*cda5da8dSAndroid Build Coastguard Worker 'the next\n' 2380*cda5da8dSAndroid Build Coastguard Worker ' # index in the range\n' 2381*cda5da8dSAndroid Build Coastguard Worker '\n' 2382*cda5da8dSAndroid Build Coastguard Worker 'Names in the target list are not deleted when the loop is ' 2383*cda5da8dSAndroid Build Coastguard Worker 'finished,\n' 2384*cda5da8dSAndroid Build Coastguard Worker 'but if the sequence is empty, they will not have been assigned ' 2385*cda5da8dSAndroid Build Coastguard Worker 'to at\n' 2386*cda5da8dSAndroid Build Coastguard Worker 'all by the loop. Hint: the built-in type "range()" represents\n' 2387*cda5da8dSAndroid Build Coastguard Worker 'immutable arithmetic sequences of integers. For instance, ' 2388*cda5da8dSAndroid Build Coastguard Worker 'iterating\n' 2389*cda5da8dSAndroid Build Coastguard Worker '"range(3)" successively yields 0, 1, and then 2.\n' 2390*cda5da8dSAndroid Build Coastguard Worker '\n' 2391*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.11: Starred elements are now allowed in ' 2392*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2393*cda5da8dSAndroid Build Coastguard Worker 'expression list.\n' 2394*cda5da8dSAndroid Build Coastguard Worker '\n' 2395*cda5da8dSAndroid Build Coastguard Worker '\n' 2396*cda5da8dSAndroid Build Coastguard Worker 'The "try" statement\n' 2397*cda5da8dSAndroid Build Coastguard Worker '===================\n' 2398*cda5da8dSAndroid Build Coastguard Worker '\n' 2399*cda5da8dSAndroid Build Coastguard Worker 'The "try" statement specifies exception handlers and/or cleanup ' 2400*cda5da8dSAndroid Build Coastguard Worker 'code\n' 2401*cda5da8dSAndroid Build Coastguard Worker 'for a group of statements:\n' 2402*cda5da8dSAndroid Build Coastguard Worker '\n' 2403*cda5da8dSAndroid Build Coastguard Worker ' try_stmt ::= try1_stmt | try2_stmt | try3_stmt\n' 2404*cda5da8dSAndroid Build Coastguard Worker ' try1_stmt ::= "try" ":" suite\n' 2405*cda5da8dSAndroid Build Coastguard Worker ' ("except" [expression ["as" identifier]] ":" ' 2406*cda5da8dSAndroid Build Coastguard Worker 'suite)+\n' 2407*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 2408*cda5da8dSAndroid Build Coastguard Worker ' ["finally" ":" suite]\n' 2409*cda5da8dSAndroid Build Coastguard Worker ' try2_stmt ::= "try" ":" suite\n' 2410*cda5da8dSAndroid Build Coastguard Worker ' ("except" "*" expression ["as" identifier] ":" ' 2411*cda5da8dSAndroid Build Coastguard Worker 'suite)+\n' 2412*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 2413*cda5da8dSAndroid Build Coastguard Worker ' ["finally" ":" suite]\n' 2414*cda5da8dSAndroid Build Coastguard Worker ' try3_stmt ::= "try" ":" suite\n' 2415*cda5da8dSAndroid Build Coastguard Worker ' "finally" ":" suite\n' 2416*cda5da8dSAndroid Build Coastguard Worker '\n' 2417*cda5da8dSAndroid Build Coastguard Worker 'Additional information on exceptions can be found in section\n' 2418*cda5da8dSAndroid Build Coastguard Worker 'Exceptions, and information on using the "raise" statement to ' 2419*cda5da8dSAndroid Build Coastguard Worker 'generate\n' 2420*cda5da8dSAndroid Build Coastguard Worker 'exceptions may be found in section The raise statement.\n' 2421*cda5da8dSAndroid Build Coastguard Worker '\n' 2422*cda5da8dSAndroid Build Coastguard Worker '\n' 2423*cda5da8dSAndroid Build Coastguard Worker '"except" clause\n' 2424*cda5da8dSAndroid Build Coastguard Worker '---------------\n' 2425*cda5da8dSAndroid Build Coastguard Worker '\n' 2426*cda5da8dSAndroid Build Coastguard Worker 'The "except" clause(s) specify one or more exception handlers. ' 2427*cda5da8dSAndroid Build Coastguard Worker 'When no\n' 2428*cda5da8dSAndroid Build Coastguard Worker 'exception occurs in the "try" clause, no exception handler is\n' 2429*cda5da8dSAndroid Build Coastguard Worker 'executed. When an exception occurs in the "try" suite, a search ' 2430*cda5da8dSAndroid Build Coastguard Worker 'for an\n' 2431*cda5da8dSAndroid Build Coastguard Worker 'exception handler is started. This search inspects the "except"\n' 2432*cda5da8dSAndroid Build Coastguard Worker 'clauses in turn until one is found that matches the exception. ' 2433*cda5da8dSAndroid Build Coastguard Worker 'An\n' 2434*cda5da8dSAndroid Build Coastguard Worker 'expression-less "except" clause, if present, must be last; it ' 2435*cda5da8dSAndroid Build Coastguard Worker 'matches\n' 2436*cda5da8dSAndroid Build Coastguard Worker 'any exception. For an "except" clause with an expression, that\n' 2437*cda5da8dSAndroid Build Coastguard Worker 'expression is evaluated, and the clause matches the exception if ' 2438*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2439*cda5da8dSAndroid Build Coastguard Worker 'resulting object is “compatible” with the exception. An object ' 2440*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2441*cda5da8dSAndroid Build Coastguard Worker 'compatible with an exception if the object is the class or a ' 2442*cda5da8dSAndroid Build Coastguard Worker '*non-\n' 2443*cda5da8dSAndroid Build Coastguard Worker 'virtual base class* of the exception object, or a tuple ' 2444*cda5da8dSAndroid Build Coastguard Worker 'containing an\n' 2445*cda5da8dSAndroid Build Coastguard Worker 'item that is the class or a non-virtual base class of the ' 2446*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 2447*cda5da8dSAndroid Build Coastguard Worker 'object.\n' 2448*cda5da8dSAndroid Build Coastguard Worker '\n' 2449*cda5da8dSAndroid Build Coastguard Worker 'If no "except" clause matches the exception, the search for an\n' 2450*cda5da8dSAndroid Build Coastguard Worker 'exception handler continues in the surrounding code and on the\n' 2451*cda5da8dSAndroid Build Coastguard Worker 'invocation stack. [1]\n' 2452*cda5da8dSAndroid Build Coastguard Worker '\n' 2453*cda5da8dSAndroid Build Coastguard Worker 'If the evaluation of an expression in the header of an "except" ' 2454*cda5da8dSAndroid Build Coastguard Worker 'clause\n' 2455*cda5da8dSAndroid Build Coastguard Worker 'raises an exception, the original search for a handler is ' 2456*cda5da8dSAndroid Build Coastguard Worker 'canceled and\n' 2457*cda5da8dSAndroid Build Coastguard Worker 'a search starts for the new exception in the surrounding code ' 2458*cda5da8dSAndroid Build Coastguard Worker 'and on\n' 2459*cda5da8dSAndroid Build Coastguard Worker 'the call stack (it is treated as if the entire "try" statement ' 2460*cda5da8dSAndroid Build Coastguard Worker 'raised\n' 2461*cda5da8dSAndroid Build Coastguard Worker 'the exception).\n' 2462*cda5da8dSAndroid Build Coastguard Worker '\n' 2463*cda5da8dSAndroid Build Coastguard Worker 'When a matching "except" clause is found, the exception is ' 2464*cda5da8dSAndroid Build Coastguard Worker 'assigned to\n' 2465*cda5da8dSAndroid Build Coastguard Worker 'the target specified after the "as" keyword in that "except" ' 2466*cda5da8dSAndroid Build Coastguard Worker 'clause,\n' 2467*cda5da8dSAndroid Build Coastguard Worker 'if present, and the "except" clause’s suite is executed. All ' 2468*cda5da8dSAndroid Build Coastguard Worker '"except"\n' 2469*cda5da8dSAndroid Build Coastguard Worker 'clauses must have an executable block. When the end of this ' 2470*cda5da8dSAndroid Build Coastguard Worker 'block is\n' 2471*cda5da8dSAndroid Build Coastguard Worker 'reached, execution continues normally after the entire "try"\n' 2472*cda5da8dSAndroid Build Coastguard Worker 'statement. (This means that if two nested handlers exist for the ' 2473*cda5da8dSAndroid Build Coastguard Worker 'same\n' 2474*cda5da8dSAndroid Build Coastguard Worker 'exception, and the exception occurs in the "try" clause of the ' 2475*cda5da8dSAndroid Build Coastguard Worker 'inner\n' 2476*cda5da8dSAndroid Build Coastguard Worker 'handler, the outer handler will not handle the exception.)\n' 2477*cda5da8dSAndroid Build Coastguard Worker '\n' 2478*cda5da8dSAndroid Build Coastguard Worker 'When an exception has been assigned using "as target", it is ' 2479*cda5da8dSAndroid Build Coastguard Worker 'cleared\n' 2480*cda5da8dSAndroid Build Coastguard Worker 'at the end of the "except" clause. This is as if\n' 2481*cda5da8dSAndroid Build Coastguard Worker '\n' 2482*cda5da8dSAndroid Build Coastguard Worker ' except E as N:\n' 2483*cda5da8dSAndroid Build Coastguard Worker ' foo\n' 2484*cda5da8dSAndroid Build Coastguard Worker '\n' 2485*cda5da8dSAndroid Build Coastguard Worker 'was translated to\n' 2486*cda5da8dSAndroid Build Coastguard Worker '\n' 2487*cda5da8dSAndroid Build Coastguard Worker ' except E as N:\n' 2488*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 2489*cda5da8dSAndroid Build Coastguard Worker ' foo\n' 2490*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 2491*cda5da8dSAndroid Build Coastguard Worker ' del N\n' 2492*cda5da8dSAndroid Build Coastguard Worker '\n' 2493*cda5da8dSAndroid Build Coastguard Worker 'This means the exception must be assigned to a different name to ' 2494*cda5da8dSAndroid Build Coastguard Worker 'be\n' 2495*cda5da8dSAndroid Build Coastguard Worker 'able to refer to it after the "except" clause. Exceptions are ' 2496*cda5da8dSAndroid Build Coastguard Worker 'cleared\n' 2497*cda5da8dSAndroid Build Coastguard Worker 'because with the traceback attached to them, they form a ' 2498*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 2499*cda5da8dSAndroid Build Coastguard Worker 'cycle with the stack frame, keeping all locals in that frame ' 2500*cda5da8dSAndroid Build Coastguard Worker 'alive\n' 2501*cda5da8dSAndroid Build Coastguard Worker 'until the next garbage collection occurs.\n' 2502*cda5da8dSAndroid Build Coastguard Worker '\n' 2503*cda5da8dSAndroid Build Coastguard Worker 'Before an "except" clause’s suite is executed, the exception is ' 2504*cda5da8dSAndroid Build Coastguard Worker 'stored\n' 2505*cda5da8dSAndroid Build Coastguard Worker 'in the "sys" module, where it can be accessed from within the ' 2506*cda5da8dSAndroid Build Coastguard Worker 'body of\n' 2507*cda5da8dSAndroid Build Coastguard Worker 'the "except" clause by calling "sys.exception()". When leaving ' 2508*cda5da8dSAndroid Build Coastguard Worker 'an\n' 2509*cda5da8dSAndroid Build Coastguard Worker 'exception handler, the exception stored in the "sys" module is ' 2510*cda5da8dSAndroid Build Coastguard Worker 'reset\n' 2511*cda5da8dSAndroid Build Coastguard Worker 'to its previous value:\n' 2512*cda5da8dSAndroid Build Coastguard Worker '\n' 2513*cda5da8dSAndroid Build Coastguard Worker ' >>> print(sys.exception())\n' 2514*cda5da8dSAndroid Build Coastguard Worker ' None\n' 2515*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 2516*cda5da8dSAndroid Build Coastguard Worker ' ... raise TypeError\n' 2517*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 2518*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 2519*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 2520*cda5da8dSAndroid Build Coastguard Worker ' ... raise ValueError\n' 2521*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 2522*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 2523*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 2524*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2525*cda5da8dSAndroid Build Coastguard Worker ' TypeError()\n' 2526*cda5da8dSAndroid Build Coastguard Worker ' ValueError()\n' 2527*cda5da8dSAndroid Build Coastguard Worker ' TypeError()\n' 2528*cda5da8dSAndroid Build Coastguard Worker ' >>> print(sys.exception())\n' 2529*cda5da8dSAndroid Build Coastguard Worker ' None\n' 2530*cda5da8dSAndroid Build Coastguard Worker '\n' 2531*cda5da8dSAndroid Build Coastguard Worker '\n' 2532*cda5da8dSAndroid Build Coastguard Worker '"except*" clause\n' 2533*cda5da8dSAndroid Build Coastguard Worker '----------------\n' 2534*cda5da8dSAndroid Build Coastguard Worker '\n' 2535*cda5da8dSAndroid Build Coastguard Worker 'The "except*" clause(s) are used for handling "ExceptionGroup"s. ' 2536*cda5da8dSAndroid Build Coastguard Worker 'The\n' 2537*cda5da8dSAndroid Build Coastguard Worker 'exception type for matching is interpreted as in the case of ' 2538*cda5da8dSAndroid Build Coastguard Worker '"except",\n' 2539*cda5da8dSAndroid Build Coastguard Worker 'but in the case of exception groups we can have partial matches ' 2540*cda5da8dSAndroid Build Coastguard Worker 'when\n' 2541*cda5da8dSAndroid Build Coastguard Worker 'the type matches some of the exceptions in the group. This means ' 2542*cda5da8dSAndroid Build Coastguard Worker 'that\n' 2543*cda5da8dSAndroid Build Coastguard Worker 'multiple "except*" clauses can execute, each handling part of ' 2544*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2545*cda5da8dSAndroid Build Coastguard Worker 'exception group. Each clause executes at most once and handles ' 2546*cda5da8dSAndroid Build Coastguard Worker 'an\n' 2547*cda5da8dSAndroid Build Coastguard Worker 'exception group of all matching exceptions. Each exception in ' 2548*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2549*cda5da8dSAndroid Build Coastguard Worker 'group is handled by at most one "except*" clause, the first ' 2550*cda5da8dSAndroid Build Coastguard Worker 'that\n' 2551*cda5da8dSAndroid Build Coastguard Worker 'matches it.\n' 2552*cda5da8dSAndroid Build Coastguard Worker '\n' 2553*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 2554*cda5da8dSAndroid Build Coastguard Worker ' ... raise ExceptionGroup("eg",\n' 2555*cda5da8dSAndroid Build Coastguard Worker ' ... [ValueError(1), TypeError(2), OSError(3), ' 2556*cda5da8dSAndroid Build Coastguard Worker 'OSError(4)])\n' 2557*cda5da8dSAndroid Build Coastguard Worker ' ... except* TypeError as e:\n' 2558*cda5da8dSAndroid Build Coastguard Worker " ... print(f'caught {type(e)} with nested " 2559*cda5da8dSAndroid Build Coastguard Worker "{e.exceptions}')\n" 2560*cda5da8dSAndroid Build Coastguard Worker ' ... except* OSError as e:\n' 2561*cda5da8dSAndroid Build Coastguard Worker " ... print(f'caught {type(e)} with nested " 2562*cda5da8dSAndroid Build Coastguard Worker "{e.exceptions}')\n" 2563*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2564*cda5da8dSAndroid Build Coastguard Worker " caught <class 'ExceptionGroup'> with nested (TypeError(2),)\n" 2565*cda5da8dSAndroid Build Coastguard Worker " caught <class 'ExceptionGroup'> with nested (OSError(3), " 2566*cda5da8dSAndroid Build Coastguard Worker 'OSError(4))\n' 2567*cda5da8dSAndroid Build Coastguard Worker ' + Exception Group Traceback (most recent call last):\n' 2568*cda5da8dSAndroid Build Coastguard Worker ' | File "<stdin>", line 2, in <module>\n' 2569*cda5da8dSAndroid Build Coastguard Worker ' | ExceptionGroup: eg\n' 2570*cda5da8dSAndroid Build Coastguard Worker ' +-+---------------- 1 ----------------\n' 2571*cda5da8dSAndroid Build Coastguard Worker ' | ValueError: 1\n' 2572*cda5da8dSAndroid Build Coastguard Worker ' +------------------------------------\n' 2573*cda5da8dSAndroid Build Coastguard Worker '\n' 2574*cda5da8dSAndroid Build Coastguard Worker 'Any remaining exceptions that were not handled by any "except*" ' 2575*cda5da8dSAndroid Build Coastguard Worker 'clause\n' 2576*cda5da8dSAndroid Build Coastguard Worker 'are re-raised at the end, combined into an exception group along ' 2577*cda5da8dSAndroid Build Coastguard Worker 'with\n' 2578*cda5da8dSAndroid Build Coastguard Worker 'all exceptions that were raised from within "except*" clauses.\n' 2579*cda5da8dSAndroid Build Coastguard Worker '\n' 2580*cda5da8dSAndroid Build Coastguard Worker 'From version 3.11.4, when the entire "ExceptionGroup" is handled ' 2581*cda5da8dSAndroid Build Coastguard Worker 'and\n' 2582*cda5da8dSAndroid Build Coastguard Worker 'only one exception is raised from an "except*" clause, this ' 2583*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 2584*cda5da8dSAndroid Build Coastguard Worker 'is no longer wrapped to form a new "ExceptionGroup".\n' 2585*cda5da8dSAndroid Build Coastguard Worker '\n' 2586*cda5da8dSAndroid Build Coastguard Worker 'If the raised exception is not an exception group and its type ' 2587*cda5da8dSAndroid Build Coastguard Worker 'matches\n' 2588*cda5da8dSAndroid Build Coastguard Worker 'one of the "except*" clauses, it is caught and wrapped by an ' 2589*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 2590*cda5da8dSAndroid Build Coastguard Worker 'group with an empty message string.\n' 2591*cda5da8dSAndroid Build Coastguard Worker '\n' 2592*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 2593*cda5da8dSAndroid Build Coastguard Worker ' ... raise BlockingIOError\n' 2594*cda5da8dSAndroid Build Coastguard Worker ' ... except* BlockingIOError as e:\n' 2595*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(e))\n' 2596*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2597*cda5da8dSAndroid Build Coastguard Worker " ExceptionGroup('', (BlockingIOError()))\n" 2598*cda5da8dSAndroid Build Coastguard Worker '\n' 2599*cda5da8dSAndroid Build Coastguard Worker 'An "except*" clause must have a matching type, and this type ' 2600*cda5da8dSAndroid Build Coastguard Worker 'cannot be\n' 2601*cda5da8dSAndroid Build Coastguard Worker 'a subclass of "BaseExceptionGroup". It is not possible to mix ' 2602*cda5da8dSAndroid Build Coastguard Worker '"except"\n' 2603*cda5da8dSAndroid Build Coastguard Worker 'and "except*" in the same "try". "break", "continue" and ' 2604*cda5da8dSAndroid Build Coastguard Worker '"return"\n' 2605*cda5da8dSAndroid Build Coastguard Worker 'cannot appear in an "except*" clause.\n' 2606*cda5da8dSAndroid Build Coastguard Worker '\n' 2607*cda5da8dSAndroid Build Coastguard Worker '\n' 2608*cda5da8dSAndroid Build Coastguard Worker '"else" clause\n' 2609*cda5da8dSAndroid Build Coastguard Worker '-------------\n' 2610*cda5da8dSAndroid Build Coastguard Worker '\n' 2611*cda5da8dSAndroid Build Coastguard Worker 'The optional "else" clause is executed if the control flow ' 2612*cda5da8dSAndroid Build Coastguard Worker 'leaves the\n' 2613*cda5da8dSAndroid Build Coastguard Worker '"try" suite, no exception was raised, and no "return", ' 2614*cda5da8dSAndroid Build Coastguard Worker '"continue", or\n' 2615*cda5da8dSAndroid Build Coastguard Worker '"break" statement was executed. Exceptions in the "else" clause ' 2616*cda5da8dSAndroid Build Coastguard Worker 'are\n' 2617*cda5da8dSAndroid Build Coastguard Worker 'not handled by the preceding "except" clauses.\n' 2618*cda5da8dSAndroid Build Coastguard Worker '\n' 2619*cda5da8dSAndroid Build Coastguard Worker '\n' 2620*cda5da8dSAndroid Build Coastguard Worker '"finally" clause\n' 2621*cda5da8dSAndroid Build Coastguard Worker '----------------\n' 2622*cda5da8dSAndroid Build Coastguard Worker '\n' 2623*cda5da8dSAndroid Build Coastguard Worker 'If "finally" is present, it specifies a ‘cleanup’ handler. The ' 2624*cda5da8dSAndroid Build Coastguard Worker '"try"\n' 2625*cda5da8dSAndroid Build Coastguard Worker 'clause is executed, including any "except" and "else" clauses. ' 2626*cda5da8dSAndroid Build Coastguard Worker 'If an\n' 2627*cda5da8dSAndroid Build Coastguard Worker 'exception occurs in any of the clauses and is not handled, the\n' 2628*cda5da8dSAndroid Build Coastguard Worker 'exception is temporarily saved. The "finally" clause is ' 2629*cda5da8dSAndroid Build Coastguard Worker 'executed. If\n' 2630*cda5da8dSAndroid Build Coastguard Worker 'there is a saved exception it is re-raised at the end of the ' 2631*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 2632*cda5da8dSAndroid Build Coastguard Worker 'clause. If the "finally" clause raises another exception, the ' 2633*cda5da8dSAndroid Build Coastguard Worker 'saved\n' 2634*cda5da8dSAndroid Build Coastguard Worker 'exception is set as the context of the new exception. If the ' 2635*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 2636*cda5da8dSAndroid Build Coastguard Worker 'clause executes a "return", "break" or "continue" statement, the ' 2637*cda5da8dSAndroid Build Coastguard Worker 'saved\n' 2638*cda5da8dSAndroid Build Coastguard Worker 'exception is discarded:\n' 2639*cda5da8dSAndroid Build Coastguard Worker '\n' 2640*cda5da8dSAndroid Build Coastguard Worker ' >>> def f():\n' 2641*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 2642*cda5da8dSAndroid Build Coastguard Worker ' ... 1/0\n' 2643*cda5da8dSAndroid Build Coastguard Worker ' ... finally:\n' 2644*cda5da8dSAndroid Build Coastguard Worker ' ... return 42\n' 2645*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2646*cda5da8dSAndroid Build Coastguard Worker ' >>> f()\n' 2647*cda5da8dSAndroid Build Coastguard Worker ' 42\n' 2648*cda5da8dSAndroid Build Coastguard Worker '\n' 2649*cda5da8dSAndroid Build Coastguard Worker 'The exception information is not available to the program ' 2650*cda5da8dSAndroid Build Coastguard Worker 'during\n' 2651*cda5da8dSAndroid Build Coastguard Worker 'execution of the "finally" clause.\n' 2652*cda5da8dSAndroid Build Coastguard Worker '\n' 2653*cda5da8dSAndroid Build Coastguard Worker 'When a "return", "break" or "continue" statement is executed in ' 2654*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2655*cda5da8dSAndroid Build Coastguard Worker '"try" suite of a "try"…"finally" statement, the "finally" clause ' 2656*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2657*cda5da8dSAndroid Build Coastguard Worker 'also executed ‘on the way out.’\n' 2658*cda5da8dSAndroid Build Coastguard Worker '\n' 2659*cda5da8dSAndroid Build Coastguard Worker 'The return value of a function is determined by the last ' 2660*cda5da8dSAndroid Build Coastguard Worker '"return"\n' 2661*cda5da8dSAndroid Build Coastguard Worker 'statement executed. Since the "finally" clause always executes, ' 2662*cda5da8dSAndroid Build Coastguard Worker 'a\n' 2663*cda5da8dSAndroid Build Coastguard Worker '"return" statement executed in the "finally" clause will always ' 2664*cda5da8dSAndroid Build Coastguard Worker 'be the\n' 2665*cda5da8dSAndroid Build Coastguard Worker 'last one executed:\n' 2666*cda5da8dSAndroid Build Coastguard Worker '\n' 2667*cda5da8dSAndroid Build Coastguard Worker ' >>> def foo():\n' 2668*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 2669*cda5da8dSAndroid Build Coastguard Worker " ... return 'try'\n" 2670*cda5da8dSAndroid Build Coastguard Worker ' ... finally:\n' 2671*cda5da8dSAndroid Build Coastguard Worker " ... return 'finally'\n" 2672*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2673*cda5da8dSAndroid Build Coastguard Worker ' >>> foo()\n' 2674*cda5da8dSAndroid Build Coastguard Worker " 'finally'\n" 2675*cda5da8dSAndroid Build Coastguard Worker '\n' 2676*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: Prior to Python 3.8, a "continue" ' 2677*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 2678*cda5da8dSAndroid Build Coastguard Worker 'was illegal in the "finally" clause due to a problem with the\n' 2679*cda5da8dSAndroid Build Coastguard Worker 'implementation.\n' 2680*cda5da8dSAndroid Build Coastguard Worker '\n' 2681*cda5da8dSAndroid Build Coastguard Worker '\n' 2682*cda5da8dSAndroid Build Coastguard Worker 'The "with" statement\n' 2683*cda5da8dSAndroid Build Coastguard Worker '====================\n' 2684*cda5da8dSAndroid Build Coastguard Worker '\n' 2685*cda5da8dSAndroid Build Coastguard Worker 'The "with" statement is used to wrap the execution of a block ' 2686*cda5da8dSAndroid Build Coastguard Worker 'with\n' 2687*cda5da8dSAndroid Build Coastguard Worker 'methods defined by a context manager (see section With ' 2688*cda5da8dSAndroid Build Coastguard Worker 'Statement\n' 2689*cda5da8dSAndroid Build Coastguard Worker 'Context Managers). This allows common "try"…"except"…"finally" ' 2690*cda5da8dSAndroid Build Coastguard Worker 'usage\n' 2691*cda5da8dSAndroid Build Coastguard Worker 'patterns to be encapsulated for convenient reuse.\n' 2692*cda5da8dSAndroid Build Coastguard Worker '\n' 2693*cda5da8dSAndroid Build Coastguard Worker ' with_stmt ::= "with" ( "(" with_stmt_contents ","? ' 2694*cda5da8dSAndroid Build Coastguard Worker '")" | with_stmt_contents ) ":" suite\n' 2695*cda5da8dSAndroid Build Coastguard Worker ' with_stmt_contents ::= with_item ("," with_item)*\n' 2696*cda5da8dSAndroid Build Coastguard Worker ' with_item ::= expression ["as" target]\n' 2697*cda5da8dSAndroid Build Coastguard Worker '\n' 2698*cda5da8dSAndroid Build Coastguard Worker 'The execution of the "with" statement with one “item” proceeds ' 2699*cda5da8dSAndroid Build Coastguard Worker 'as\n' 2700*cda5da8dSAndroid Build Coastguard Worker 'follows:\n' 2701*cda5da8dSAndroid Build Coastguard Worker '\n' 2702*cda5da8dSAndroid Build Coastguard Worker '1. The context expression (the expression given in the ' 2703*cda5da8dSAndroid Build Coastguard Worker '"with_item") is\n' 2704*cda5da8dSAndroid Build Coastguard Worker ' evaluated to obtain a context manager.\n' 2705*cda5da8dSAndroid Build Coastguard Worker '\n' 2706*cda5da8dSAndroid Build Coastguard Worker '2. The context manager’s "__enter__()" is loaded for later use.\n' 2707*cda5da8dSAndroid Build Coastguard Worker '\n' 2708*cda5da8dSAndroid Build Coastguard Worker '3. The context manager’s "__exit__()" is loaded for later use.\n' 2709*cda5da8dSAndroid Build Coastguard Worker '\n' 2710*cda5da8dSAndroid Build Coastguard Worker '4. The context manager’s "__enter__()" method is invoked.\n' 2711*cda5da8dSAndroid Build Coastguard Worker '\n' 2712*cda5da8dSAndroid Build Coastguard Worker '5. If a target was included in the "with" statement, the return ' 2713*cda5da8dSAndroid Build Coastguard Worker 'value\n' 2714*cda5da8dSAndroid Build Coastguard Worker ' from "__enter__()" is assigned to it.\n' 2715*cda5da8dSAndroid Build Coastguard Worker '\n' 2716*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 2717*cda5da8dSAndroid Build Coastguard Worker '\n' 2718*cda5da8dSAndroid Build Coastguard Worker ' The "with" statement guarantees that if the "__enter__()" ' 2719*cda5da8dSAndroid Build Coastguard Worker 'method\n' 2720*cda5da8dSAndroid Build Coastguard Worker ' returns without an error, then "__exit__()" will always be\n' 2721*cda5da8dSAndroid Build Coastguard Worker ' called. Thus, if an error occurs during the assignment to ' 2722*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2723*cda5da8dSAndroid Build Coastguard Worker ' target list, it will be treated the same as an error ' 2724*cda5da8dSAndroid Build Coastguard Worker 'occurring\n' 2725*cda5da8dSAndroid Build Coastguard Worker ' within the suite would be. See step 7 below.\n' 2726*cda5da8dSAndroid Build Coastguard Worker '\n' 2727*cda5da8dSAndroid Build Coastguard Worker '6. The suite is executed.\n' 2728*cda5da8dSAndroid Build Coastguard Worker '\n' 2729*cda5da8dSAndroid Build Coastguard Worker '7. The context manager’s "__exit__()" method is invoked. If an\n' 2730*cda5da8dSAndroid Build Coastguard Worker ' exception caused the suite to be exited, its type, value, ' 2731*cda5da8dSAndroid Build Coastguard Worker 'and\n' 2732*cda5da8dSAndroid Build Coastguard Worker ' traceback are passed as arguments to "__exit__()". Otherwise, ' 2733*cda5da8dSAndroid Build Coastguard Worker 'three\n' 2734*cda5da8dSAndroid Build Coastguard Worker ' "None" arguments are supplied.\n' 2735*cda5da8dSAndroid Build Coastguard Worker '\n' 2736*cda5da8dSAndroid Build Coastguard Worker ' If the suite was exited due to an exception, and the return ' 2737*cda5da8dSAndroid Build Coastguard Worker 'value\n' 2738*cda5da8dSAndroid Build Coastguard Worker ' from the "__exit__()" method was false, the exception is ' 2739*cda5da8dSAndroid Build Coastguard Worker 'reraised.\n' 2740*cda5da8dSAndroid Build Coastguard Worker ' If the return value was true, the exception is suppressed, ' 2741*cda5da8dSAndroid Build Coastguard Worker 'and\n' 2742*cda5da8dSAndroid Build Coastguard Worker ' execution continues with the statement following the "with"\n' 2743*cda5da8dSAndroid Build Coastguard Worker ' statement.\n' 2744*cda5da8dSAndroid Build Coastguard Worker '\n' 2745*cda5da8dSAndroid Build Coastguard Worker ' If the suite was exited for any reason other than an ' 2746*cda5da8dSAndroid Build Coastguard Worker 'exception, the\n' 2747*cda5da8dSAndroid Build Coastguard Worker ' return value from "__exit__()" is ignored, and execution ' 2748*cda5da8dSAndroid Build Coastguard Worker 'proceeds\n' 2749*cda5da8dSAndroid Build Coastguard Worker ' at the normal location for the kind of exit that was taken.\n' 2750*cda5da8dSAndroid Build Coastguard Worker '\n' 2751*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 2752*cda5da8dSAndroid Build Coastguard Worker '\n' 2753*cda5da8dSAndroid Build Coastguard Worker ' with EXPRESSION as TARGET:\n' 2754*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 2755*cda5da8dSAndroid Build Coastguard Worker '\n' 2756*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 2757*cda5da8dSAndroid Build Coastguard Worker '\n' 2758*cda5da8dSAndroid Build Coastguard Worker ' manager = (EXPRESSION)\n' 2759*cda5da8dSAndroid Build Coastguard Worker ' enter = type(manager).__enter__\n' 2760*cda5da8dSAndroid Build Coastguard Worker ' exit = type(manager).__exit__\n' 2761*cda5da8dSAndroid Build Coastguard Worker ' value = enter(manager)\n' 2762*cda5da8dSAndroid Build Coastguard Worker ' hit_except = False\n' 2763*cda5da8dSAndroid Build Coastguard Worker '\n' 2764*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 2765*cda5da8dSAndroid Build Coastguard Worker ' TARGET = value\n' 2766*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 2767*cda5da8dSAndroid Build Coastguard Worker ' except:\n' 2768*cda5da8dSAndroid Build Coastguard Worker ' hit_except = True\n' 2769*cda5da8dSAndroid Build Coastguard Worker ' if not exit(manager, *sys.exc_info()):\n' 2770*cda5da8dSAndroid Build Coastguard Worker ' raise\n' 2771*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 2772*cda5da8dSAndroid Build Coastguard Worker ' if not hit_except:\n' 2773*cda5da8dSAndroid Build Coastguard Worker ' exit(manager, None, None, None)\n' 2774*cda5da8dSAndroid Build Coastguard Worker '\n' 2775*cda5da8dSAndroid Build Coastguard Worker 'With more than one item, the context managers are processed as ' 2776*cda5da8dSAndroid Build Coastguard Worker 'if\n' 2777*cda5da8dSAndroid Build Coastguard Worker 'multiple "with" statements were nested:\n' 2778*cda5da8dSAndroid Build Coastguard Worker '\n' 2779*cda5da8dSAndroid Build Coastguard Worker ' with A() as a, B() as b:\n' 2780*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 2781*cda5da8dSAndroid Build Coastguard Worker '\n' 2782*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 2783*cda5da8dSAndroid Build Coastguard Worker '\n' 2784*cda5da8dSAndroid Build Coastguard Worker ' with A() as a:\n' 2785*cda5da8dSAndroid Build Coastguard Worker ' with B() as b:\n' 2786*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 2787*cda5da8dSAndroid Build Coastguard Worker '\n' 2788*cda5da8dSAndroid Build Coastguard Worker 'You can also write multi-item context managers in multiple lines ' 2789*cda5da8dSAndroid Build Coastguard Worker 'if\n' 2790*cda5da8dSAndroid Build Coastguard Worker 'the items are surrounded by parentheses. For example:\n' 2791*cda5da8dSAndroid Build Coastguard Worker '\n' 2792*cda5da8dSAndroid Build Coastguard Worker ' with (\n' 2793*cda5da8dSAndroid Build Coastguard Worker ' A() as a,\n' 2794*cda5da8dSAndroid Build Coastguard Worker ' B() as b,\n' 2795*cda5da8dSAndroid Build Coastguard Worker ' ):\n' 2796*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 2797*cda5da8dSAndroid Build Coastguard Worker '\n' 2798*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.1: Support for multiple context ' 2799*cda5da8dSAndroid Build Coastguard Worker 'expressions.\n' 2800*cda5da8dSAndroid Build Coastguard Worker '\n' 2801*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.10: Support for using grouping parentheses ' 2802*cda5da8dSAndroid Build Coastguard Worker 'to\n' 2803*cda5da8dSAndroid Build Coastguard Worker 'break the statement in multiple lines.\n' 2804*cda5da8dSAndroid Build Coastguard Worker '\n' 2805*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 2806*cda5da8dSAndroid Build Coastguard Worker '\n' 2807*cda5da8dSAndroid Build Coastguard Worker ' **PEP 343** - The “with” statement\n' 2808*cda5da8dSAndroid Build Coastguard Worker ' The specification, background, and examples for the Python ' 2809*cda5da8dSAndroid Build Coastguard Worker '"with"\n' 2810*cda5da8dSAndroid Build Coastguard Worker ' statement.\n' 2811*cda5da8dSAndroid Build Coastguard Worker '\n' 2812*cda5da8dSAndroid Build Coastguard Worker '\n' 2813*cda5da8dSAndroid Build Coastguard Worker 'The "match" statement\n' 2814*cda5da8dSAndroid Build Coastguard Worker '=====================\n' 2815*cda5da8dSAndroid Build Coastguard Worker '\n' 2816*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.10.\n' 2817*cda5da8dSAndroid Build Coastguard Worker '\n' 2818*cda5da8dSAndroid Build Coastguard Worker 'The match statement is used for pattern matching. Syntax:\n' 2819*cda5da8dSAndroid Build Coastguard Worker '\n' 2820*cda5da8dSAndroid Build Coastguard Worker ' match_stmt ::= \'match\' subject_expr ":" NEWLINE INDENT ' 2821*cda5da8dSAndroid Build Coastguard Worker 'case_block+ DEDENT\n' 2822*cda5da8dSAndroid Build Coastguard Worker ' subject_expr ::= star_named_expression "," ' 2823*cda5da8dSAndroid Build Coastguard Worker 'star_named_expressions?\n' 2824*cda5da8dSAndroid Build Coastguard Worker ' | named_expression\n' 2825*cda5da8dSAndroid Build Coastguard Worker ' case_block ::= \'case\' patterns [guard] ":" block\n' 2826*cda5da8dSAndroid Build Coastguard Worker '\n' 2827*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 2828*cda5da8dSAndroid Build Coastguard Worker '\n' 2829*cda5da8dSAndroid Build Coastguard Worker ' This section uses single quotes to denote soft keywords.\n' 2830*cda5da8dSAndroid Build Coastguard Worker '\n' 2831*cda5da8dSAndroid Build Coastguard Worker 'Pattern matching takes a pattern as input (following "case") and ' 2832*cda5da8dSAndroid Build Coastguard Worker 'a\n' 2833*cda5da8dSAndroid Build Coastguard Worker 'subject value (following "match"). The pattern (which may ' 2834*cda5da8dSAndroid Build Coastguard Worker 'contain\n' 2835*cda5da8dSAndroid Build Coastguard Worker 'subpatterns) is matched against the subject value. The outcomes ' 2836*cda5da8dSAndroid Build Coastguard Worker 'are:\n' 2837*cda5da8dSAndroid Build Coastguard Worker '\n' 2838*cda5da8dSAndroid Build Coastguard Worker '* A match success or failure (also termed a pattern success or\n' 2839*cda5da8dSAndroid Build Coastguard Worker ' failure).\n' 2840*cda5da8dSAndroid Build Coastguard Worker '\n' 2841*cda5da8dSAndroid Build Coastguard Worker '* Possible binding of matched values to a name. The ' 2842*cda5da8dSAndroid Build Coastguard Worker 'prerequisites for\n' 2843*cda5da8dSAndroid Build Coastguard Worker ' this are further discussed below.\n' 2844*cda5da8dSAndroid Build Coastguard Worker '\n' 2845*cda5da8dSAndroid Build Coastguard Worker 'The "match" and "case" keywords are soft keywords.\n' 2846*cda5da8dSAndroid Build Coastguard Worker '\n' 2847*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 2848*cda5da8dSAndroid Build Coastguard Worker '\n' 2849*cda5da8dSAndroid Build Coastguard Worker ' * **PEP 634** – Structural Pattern Matching: Specification\n' 2850*cda5da8dSAndroid Build Coastguard Worker '\n' 2851*cda5da8dSAndroid Build Coastguard Worker ' * **PEP 636** – Structural Pattern Matching: Tutorial\n' 2852*cda5da8dSAndroid Build Coastguard Worker '\n' 2853*cda5da8dSAndroid Build Coastguard Worker '\n' 2854*cda5da8dSAndroid Build Coastguard Worker 'Overview\n' 2855*cda5da8dSAndroid Build Coastguard Worker '--------\n' 2856*cda5da8dSAndroid Build Coastguard Worker '\n' 2857*cda5da8dSAndroid Build Coastguard Worker 'Here’s an overview of the logical flow of a match statement:\n' 2858*cda5da8dSAndroid Build Coastguard Worker '\n' 2859*cda5da8dSAndroid Build Coastguard Worker '1. The subject expression "subject_expr" is evaluated and a ' 2860*cda5da8dSAndroid Build Coastguard Worker 'resulting\n' 2861*cda5da8dSAndroid Build Coastguard Worker ' subject value obtained. If the subject expression contains a ' 2862*cda5da8dSAndroid Build Coastguard Worker 'comma,\n' 2863*cda5da8dSAndroid Build Coastguard Worker ' a tuple is constructed using the standard rules.\n' 2864*cda5da8dSAndroid Build Coastguard Worker '\n' 2865*cda5da8dSAndroid Build Coastguard Worker '2. Each pattern in a "case_block" is attempted to match with ' 2866*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2867*cda5da8dSAndroid Build Coastguard Worker ' subject value. The specific rules for success or failure are\n' 2868*cda5da8dSAndroid Build Coastguard Worker ' described below. The match attempt can also bind some or all ' 2869*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 2870*cda5da8dSAndroid Build Coastguard Worker ' standalone names within the pattern. The precise pattern ' 2871*cda5da8dSAndroid Build Coastguard Worker 'binding\n' 2872*cda5da8dSAndroid Build Coastguard Worker ' rules vary per pattern type and are specified below. **Name\n' 2873*cda5da8dSAndroid Build Coastguard Worker ' bindings made during a successful pattern match outlive the\n' 2874*cda5da8dSAndroid Build Coastguard Worker ' executed block and can be used after the match statement**.\n' 2875*cda5da8dSAndroid Build Coastguard Worker '\n' 2876*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 2877*cda5da8dSAndroid Build Coastguard Worker '\n' 2878*cda5da8dSAndroid Build Coastguard Worker ' During failed pattern matches, some subpatterns may ' 2879*cda5da8dSAndroid Build Coastguard Worker 'succeed.\n' 2880*cda5da8dSAndroid Build Coastguard Worker ' Do not rely on bindings being made for a failed match.\n' 2881*cda5da8dSAndroid Build Coastguard Worker ' Conversely, do not rely on variables remaining unchanged ' 2882*cda5da8dSAndroid Build Coastguard Worker 'after\n' 2883*cda5da8dSAndroid Build Coastguard Worker ' a failed match. The exact behavior is dependent on\n' 2884*cda5da8dSAndroid Build Coastguard Worker ' implementation and may vary. This is an intentional ' 2885*cda5da8dSAndroid Build Coastguard Worker 'decision\n' 2886*cda5da8dSAndroid Build Coastguard Worker ' made to allow different implementations to add ' 2887*cda5da8dSAndroid Build Coastguard Worker 'optimizations.\n' 2888*cda5da8dSAndroid Build Coastguard Worker '\n' 2889*cda5da8dSAndroid Build Coastguard Worker '3. If the pattern succeeds, the corresponding guard (if present) ' 2890*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2891*cda5da8dSAndroid Build Coastguard Worker ' evaluated. In this case all name bindings are guaranteed to ' 2892*cda5da8dSAndroid Build Coastguard Worker 'have\n' 2893*cda5da8dSAndroid Build Coastguard Worker ' happened.\n' 2894*cda5da8dSAndroid Build Coastguard Worker '\n' 2895*cda5da8dSAndroid Build Coastguard Worker ' * If the guard evaluates as true or is missing, the "block" ' 2896*cda5da8dSAndroid Build Coastguard Worker 'inside\n' 2897*cda5da8dSAndroid Build Coastguard Worker ' "case_block" is executed.\n' 2898*cda5da8dSAndroid Build Coastguard Worker '\n' 2899*cda5da8dSAndroid Build Coastguard Worker ' * Otherwise, the next "case_block" is attempted as described ' 2900*cda5da8dSAndroid Build Coastguard Worker 'above.\n' 2901*cda5da8dSAndroid Build Coastguard Worker '\n' 2902*cda5da8dSAndroid Build Coastguard Worker ' * If there are no further case blocks, the match statement ' 2903*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2904*cda5da8dSAndroid Build Coastguard Worker ' completed.\n' 2905*cda5da8dSAndroid Build Coastguard Worker '\n' 2906*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 2907*cda5da8dSAndroid Build Coastguard Worker '\n' 2908*cda5da8dSAndroid Build Coastguard Worker ' Users should generally never rely on a pattern being ' 2909*cda5da8dSAndroid Build Coastguard Worker 'evaluated.\n' 2910*cda5da8dSAndroid Build Coastguard Worker ' Depending on implementation, the interpreter may cache values ' 2911*cda5da8dSAndroid Build Coastguard Worker 'or use\n' 2912*cda5da8dSAndroid Build Coastguard Worker ' other optimizations which skip repeated evaluations.\n' 2913*cda5da8dSAndroid Build Coastguard Worker '\n' 2914*cda5da8dSAndroid Build Coastguard Worker 'A sample match statement:\n' 2915*cda5da8dSAndroid Build Coastguard Worker '\n' 2916*cda5da8dSAndroid Build Coastguard Worker ' >>> flag = False\n' 2917*cda5da8dSAndroid Build Coastguard Worker ' >>> match (100, 200):\n' 2918*cda5da8dSAndroid Build Coastguard Worker ' ... case (100, 300): # Mismatch: 200 != 300\n' 2919*cda5da8dSAndroid Build Coastguard Worker " ... print('Case 1')\n" 2920*cda5da8dSAndroid Build Coastguard Worker ' ... case (100, 200) if flag: # Successful match, but ' 2921*cda5da8dSAndroid Build Coastguard Worker 'guard fails\n' 2922*cda5da8dSAndroid Build Coastguard Worker " ... print('Case 2')\n" 2923*cda5da8dSAndroid Build Coastguard Worker ' ... case (100, y): # Matches and binds y to 200\n' 2924*cda5da8dSAndroid Build Coastguard Worker " ... print(f'Case 3, y: {y}')\n" 2925*cda5da8dSAndroid Build Coastguard Worker ' ... case _: # Pattern not attempted\n' 2926*cda5da8dSAndroid Build Coastguard Worker " ... print('Case 4, I match anything!')\n" 2927*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 2928*cda5da8dSAndroid Build Coastguard Worker ' Case 3, y: 200\n' 2929*cda5da8dSAndroid Build Coastguard Worker '\n' 2930*cda5da8dSAndroid Build Coastguard Worker 'In this case, "if flag" is a guard. Read more about that in the ' 2931*cda5da8dSAndroid Build Coastguard Worker 'next\n' 2932*cda5da8dSAndroid Build Coastguard Worker 'section.\n' 2933*cda5da8dSAndroid Build Coastguard Worker '\n' 2934*cda5da8dSAndroid Build Coastguard Worker '\n' 2935*cda5da8dSAndroid Build Coastguard Worker 'Guards\n' 2936*cda5da8dSAndroid Build Coastguard Worker '------\n' 2937*cda5da8dSAndroid Build Coastguard Worker '\n' 2938*cda5da8dSAndroid Build Coastguard Worker ' guard ::= "if" named_expression\n' 2939*cda5da8dSAndroid Build Coastguard Worker '\n' 2940*cda5da8dSAndroid Build Coastguard Worker 'A "guard" (which is part of the "case") must succeed for code ' 2941*cda5da8dSAndroid Build Coastguard Worker 'inside\n' 2942*cda5da8dSAndroid Build Coastguard Worker 'the "case" block to execute. It takes the form: "if" followed ' 2943*cda5da8dSAndroid Build Coastguard Worker 'by an\n' 2944*cda5da8dSAndroid Build Coastguard Worker 'expression.\n' 2945*cda5da8dSAndroid Build Coastguard Worker '\n' 2946*cda5da8dSAndroid Build Coastguard Worker 'The logical flow of a "case" block with a "guard" follows:\n' 2947*cda5da8dSAndroid Build Coastguard Worker '\n' 2948*cda5da8dSAndroid Build Coastguard Worker '1. Check that the pattern in the "case" block succeeded. If ' 2949*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2950*cda5da8dSAndroid Build Coastguard Worker ' pattern failed, the "guard" is not evaluated and the next ' 2951*cda5da8dSAndroid Build Coastguard Worker '"case"\n' 2952*cda5da8dSAndroid Build Coastguard Worker ' block is checked.\n' 2953*cda5da8dSAndroid Build Coastguard Worker '\n' 2954*cda5da8dSAndroid Build Coastguard Worker '2. If the pattern succeeded, evaluate the "guard".\n' 2955*cda5da8dSAndroid Build Coastguard Worker '\n' 2956*cda5da8dSAndroid Build Coastguard Worker ' * If the "guard" condition evaluates as true, the case block ' 2957*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2958*cda5da8dSAndroid Build Coastguard Worker ' selected.\n' 2959*cda5da8dSAndroid Build Coastguard Worker '\n' 2960*cda5da8dSAndroid Build Coastguard Worker ' * If the "guard" condition evaluates as false, the case block ' 2961*cda5da8dSAndroid Build Coastguard Worker 'is\n' 2962*cda5da8dSAndroid Build Coastguard Worker ' not selected.\n' 2963*cda5da8dSAndroid Build Coastguard Worker '\n' 2964*cda5da8dSAndroid Build Coastguard Worker ' * If the "guard" raises an exception during evaluation, the\n' 2965*cda5da8dSAndroid Build Coastguard Worker ' exception bubbles up.\n' 2966*cda5da8dSAndroid Build Coastguard Worker '\n' 2967*cda5da8dSAndroid Build Coastguard Worker 'Guards are allowed to have side effects as they are ' 2968*cda5da8dSAndroid Build Coastguard Worker 'expressions.\n' 2969*cda5da8dSAndroid Build Coastguard Worker 'Guard evaluation must proceed from the first to the last case ' 2970*cda5da8dSAndroid Build Coastguard Worker 'block,\n' 2971*cda5da8dSAndroid Build Coastguard Worker 'one at a time, skipping case blocks whose pattern(s) don’t all\n' 2972*cda5da8dSAndroid Build Coastguard Worker 'succeed. (I.e., guard evaluation must happen in order.) Guard\n' 2973*cda5da8dSAndroid Build Coastguard Worker 'evaluation must stop once a case block is selected.\n' 2974*cda5da8dSAndroid Build Coastguard Worker '\n' 2975*cda5da8dSAndroid Build Coastguard Worker '\n' 2976*cda5da8dSAndroid Build Coastguard Worker 'Irrefutable Case Blocks\n' 2977*cda5da8dSAndroid Build Coastguard Worker '-----------------------\n' 2978*cda5da8dSAndroid Build Coastguard Worker '\n' 2979*cda5da8dSAndroid Build Coastguard Worker 'An irrefutable case block is a match-all case block. A match\n' 2980*cda5da8dSAndroid Build Coastguard Worker 'statement may have at most one irrefutable case block, and it ' 2981*cda5da8dSAndroid Build Coastguard Worker 'must be\n' 2982*cda5da8dSAndroid Build Coastguard Worker 'last.\n' 2983*cda5da8dSAndroid Build Coastguard Worker '\n' 2984*cda5da8dSAndroid Build Coastguard Worker 'A case block is considered irrefutable if it has no guard and ' 2985*cda5da8dSAndroid Build Coastguard Worker 'its\n' 2986*cda5da8dSAndroid Build Coastguard Worker 'pattern is irrefutable. A pattern is considered irrefutable if ' 2987*cda5da8dSAndroid Build Coastguard Worker 'we can\n' 2988*cda5da8dSAndroid Build Coastguard Worker 'prove from its syntax alone that it will always succeed. Only ' 2989*cda5da8dSAndroid Build Coastguard Worker 'the\n' 2990*cda5da8dSAndroid Build Coastguard Worker 'following patterns are irrefutable:\n' 2991*cda5da8dSAndroid Build Coastguard Worker '\n' 2992*cda5da8dSAndroid Build Coastguard Worker '* AS Patterns whose left-hand side is irrefutable\n' 2993*cda5da8dSAndroid Build Coastguard Worker '\n' 2994*cda5da8dSAndroid Build Coastguard Worker '* OR Patterns containing at least one irrefutable pattern\n' 2995*cda5da8dSAndroid Build Coastguard Worker '\n' 2996*cda5da8dSAndroid Build Coastguard Worker '* Capture Patterns\n' 2997*cda5da8dSAndroid Build Coastguard Worker '\n' 2998*cda5da8dSAndroid Build Coastguard Worker '* Wildcard Patterns\n' 2999*cda5da8dSAndroid Build Coastguard Worker '\n' 3000*cda5da8dSAndroid Build Coastguard Worker '* parenthesized irrefutable patterns\n' 3001*cda5da8dSAndroid Build Coastguard Worker '\n' 3002*cda5da8dSAndroid Build Coastguard Worker '\n' 3003*cda5da8dSAndroid Build Coastguard Worker 'Patterns\n' 3004*cda5da8dSAndroid Build Coastguard Worker '--------\n' 3005*cda5da8dSAndroid Build Coastguard Worker '\n' 3006*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 3007*cda5da8dSAndroid Build Coastguard Worker '\n' 3008*cda5da8dSAndroid Build Coastguard Worker ' This section uses grammar notations beyond standard EBNF:\n' 3009*cda5da8dSAndroid Build Coastguard Worker '\n' 3010*cda5da8dSAndroid Build Coastguard Worker ' * the notation "SEP.RULE+" is shorthand for "RULE (SEP ' 3011*cda5da8dSAndroid Build Coastguard Worker 'RULE)*"\n' 3012*cda5da8dSAndroid Build Coastguard Worker '\n' 3013*cda5da8dSAndroid Build Coastguard Worker ' * the notation "!RULE" is shorthand for a negative lookahead\n' 3014*cda5da8dSAndroid Build Coastguard Worker ' assertion\n' 3015*cda5da8dSAndroid Build Coastguard Worker '\n' 3016*cda5da8dSAndroid Build Coastguard Worker 'The top-level syntax for "patterns" is:\n' 3017*cda5da8dSAndroid Build Coastguard Worker '\n' 3018*cda5da8dSAndroid Build Coastguard Worker ' patterns ::= open_sequence_pattern | pattern\n' 3019*cda5da8dSAndroid Build Coastguard Worker ' pattern ::= as_pattern | or_pattern\n' 3020*cda5da8dSAndroid Build Coastguard Worker ' closed_pattern ::= | literal_pattern\n' 3021*cda5da8dSAndroid Build Coastguard Worker ' | capture_pattern\n' 3022*cda5da8dSAndroid Build Coastguard Worker ' | wildcard_pattern\n' 3023*cda5da8dSAndroid Build Coastguard Worker ' | value_pattern\n' 3024*cda5da8dSAndroid Build Coastguard Worker ' | group_pattern\n' 3025*cda5da8dSAndroid Build Coastguard Worker ' | sequence_pattern\n' 3026*cda5da8dSAndroid Build Coastguard Worker ' | mapping_pattern\n' 3027*cda5da8dSAndroid Build Coastguard Worker ' | class_pattern\n' 3028*cda5da8dSAndroid Build Coastguard Worker '\n' 3029*cda5da8dSAndroid Build Coastguard Worker 'The descriptions below will include a description “in simple ' 3030*cda5da8dSAndroid Build Coastguard Worker 'terms” of\n' 3031*cda5da8dSAndroid Build Coastguard Worker 'what a pattern does for illustration purposes (credits to ' 3032*cda5da8dSAndroid Build Coastguard Worker 'Raymond\n' 3033*cda5da8dSAndroid Build Coastguard Worker 'Hettinger for a document that inspired most of the ' 3034*cda5da8dSAndroid Build Coastguard Worker 'descriptions). Note\n' 3035*cda5da8dSAndroid Build Coastguard Worker 'that these descriptions are purely for illustration purposes and ' 3036*cda5da8dSAndroid Build Coastguard Worker '**may\n' 3037*cda5da8dSAndroid Build Coastguard Worker 'not** reflect the underlying implementation. Furthermore, they ' 3038*cda5da8dSAndroid Build Coastguard Worker 'do not\n' 3039*cda5da8dSAndroid Build Coastguard Worker 'cover all valid forms.\n' 3040*cda5da8dSAndroid Build Coastguard Worker '\n' 3041*cda5da8dSAndroid Build Coastguard Worker '\n' 3042*cda5da8dSAndroid Build Coastguard Worker 'OR Patterns\n' 3043*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~\n' 3044*cda5da8dSAndroid Build Coastguard Worker '\n' 3045*cda5da8dSAndroid Build Coastguard Worker 'An OR pattern is two or more patterns separated by vertical bars ' 3046*cda5da8dSAndroid Build Coastguard Worker '"|".\n' 3047*cda5da8dSAndroid Build Coastguard Worker 'Syntax:\n' 3048*cda5da8dSAndroid Build Coastguard Worker '\n' 3049*cda5da8dSAndroid Build Coastguard Worker ' or_pattern ::= "|".closed_pattern+\n' 3050*cda5da8dSAndroid Build Coastguard Worker '\n' 3051*cda5da8dSAndroid Build Coastguard Worker 'Only the final subpattern may be irrefutable, and each ' 3052*cda5da8dSAndroid Build Coastguard Worker 'subpattern must\n' 3053*cda5da8dSAndroid Build Coastguard Worker 'bind the same set of names to avoid ambiguity.\n' 3054*cda5da8dSAndroid Build Coastguard Worker '\n' 3055*cda5da8dSAndroid Build Coastguard Worker 'An OR pattern matches each of its subpatterns in turn to the ' 3056*cda5da8dSAndroid Build Coastguard Worker 'subject\n' 3057*cda5da8dSAndroid Build Coastguard Worker 'value, until one succeeds. The OR pattern is then considered\n' 3058*cda5da8dSAndroid Build Coastguard Worker 'successful. Otherwise, if none of the subpatterns succeed, the ' 3059*cda5da8dSAndroid Build Coastguard Worker 'OR\n' 3060*cda5da8dSAndroid Build Coastguard Worker 'pattern fails.\n' 3061*cda5da8dSAndroid Build Coastguard Worker '\n' 3062*cda5da8dSAndroid Build Coastguard Worker 'In simple terms, "P1 | P2 | ..." will try to match "P1", if it ' 3063*cda5da8dSAndroid Build Coastguard Worker 'fails\n' 3064*cda5da8dSAndroid Build Coastguard Worker 'it will try to match "P2", succeeding immediately if any ' 3065*cda5da8dSAndroid Build Coastguard Worker 'succeeds,\n' 3066*cda5da8dSAndroid Build Coastguard Worker 'failing otherwise.\n' 3067*cda5da8dSAndroid Build Coastguard Worker '\n' 3068*cda5da8dSAndroid Build Coastguard Worker '\n' 3069*cda5da8dSAndroid Build Coastguard Worker 'AS Patterns\n' 3070*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~\n' 3071*cda5da8dSAndroid Build Coastguard Worker '\n' 3072*cda5da8dSAndroid Build Coastguard Worker 'An AS pattern matches an OR pattern on the left of the "as" ' 3073*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3074*cda5da8dSAndroid Build Coastguard Worker 'against a subject. Syntax:\n' 3075*cda5da8dSAndroid Build Coastguard Worker '\n' 3076*cda5da8dSAndroid Build Coastguard Worker ' as_pattern ::= or_pattern "as" capture_pattern\n' 3077*cda5da8dSAndroid Build Coastguard Worker '\n' 3078*cda5da8dSAndroid Build Coastguard Worker 'If the OR pattern fails, the AS pattern fails. Otherwise, the ' 3079*cda5da8dSAndroid Build Coastguard Worker 'AS\n' 3080*cda5da8dSAndroid Build Coastguard Worker 'pattern binds the subject to the name on the right of the as ' 3081*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3082*cda5da8dSAndroid Build Coastguard Worker 'and succeeds. "capture_pattern" cannot be a "_".\n' 3083*cda5da8dSAndroid Build Coastguard Worker '\n' 3084*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "P as NAME" will match with "P", and on success ' 3085*cda5da8dSAndroid Build Coastguard Worker 'it\n' 3086*cda5da8dSAndroid Build Coastguard Worker 'will set "NAME = <subject>".\n' 3087*cda5da8dSAndroid Build Coastguard Worker '\n' 3088*cda5da8dSAndroid Build Coastguard Worker '\n' 3089*cda5da8dSAndroid Build Coastguard Worker 'Literal Patterns\n' 3090*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~\n' 3091*cda5da8dSAndroid Build Coastguard Worker '\n' 3092*cda5da8dSAndroid Build Coastguard Worker 'A literal pattern corresponds to most literals in Python. ' 3093*cda5da8dSAndroid Build Coastguard Worker 'Syntax:\n' 3094*cda5da8dSAndroid Build Coastguard Worker '\n' 3095*cda5da8dSAndroid Build Coastguard Worker ' literal_pattern ::= signed_number\n' 3096*cda5da8dSAndroid Build Coastguard Worker ' | signed_number "+" NUMBER\n' 3097*cda5da8dSAndroid Build Coastguard Worker ' | signed_number "-" NUMBER\n' 3098*cda5da8dSAndroid Build Coastguard Worker ' | strings\n' 3099*cda5da8dSAndroid Build Coastguard Worker ' | "None"\n' 3100*cda5da8dSAndroid Build Coastguard Worker ' | "True"\n' 3101*cda5da8dSAndroid Build Coastguard Worker ' | "False"\n' 3102*cda5da8dSAndroid Build Coastguard Worker ' | signed_number: NUMBER | "-" NUMBER\n' 3103*cda5da8dSAndroid Build Coastguard Worker '\n' 3104*cda5da8dSAndroid Build Coastguard Worker 'The rule "strings" and the token "NUMBER" are defined in the ' 3105*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 3106*cda5da8dSAndroid Build Coastguard Worker 'Python grammar. Triple-quoted strings are supported. Raw ' 3107*cda5da8dSAndroid Build Coastguard Worker 'strings and\n' 3108*cda5da8dSAndroid Build Coastguard Worker 'byte strings are supported. Formatted string literals are not\n' 3109*cda5da8dSAndroid Build Coastguard Worker 'supported.\n' 3110*cda5da8dSAndroid Build Coastguard Worker '\n' 3111*cda5da8dSAndroid Build Coastguard Worker 'The forms "signed_number \'+\' NUMBER" and "signed_number \'-\' ' 3112*cda5da8dSAndroid Build Coastguard Worker 'NUMBER"\n' 3113*cda5da8dSAndroid Build Coastguard Worker 'are for expressing complex numbers; they require a real number ' 3114*cda5da8dSAndroid Build Coastguard Worker 'on the\n' 3115*cda5da8dSAndroid Build Coastguard Worker 'left and an imaginary number on the right. E.g. "3 + 4j".\n' 3116*cda5da8dSAndroid Build Coastguard Worker '\n' 3117*cda5da8dSAndroid Build Coastguard Worker 'In simple terms, "LITERAL" will succeed only if "<subject> ==\n' 3118*cda5da8dSAndroid Build Coastguard Worker 'LITERAL". For the singletons "None", "True" and "False", the ' 3119*cda5da8dSAndroid Build Coastguard Worker '"is"\n' 3120*cda5da8dSAndroid Build Coastguard Worker 'operator is used.\n' 3121*cda5da8dSAndroid Build Coastguard Worker '\n' 3122*cda5da8dSAndroid Build Coastguard Worker '\n' 3123*cda5da8dSAndroid Build Coastguard Worker 'Capture Patterns\n' 3124*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~\n' 3125*cda5da8dSAndroid Build Coastguard Worker '\n' 3126*cda5da8dSAndroid Build Coastguard Worker 'A capture pattern binds the subject value to a name. Syntax:\n' 3127*cda5da8dSAndroid Build Coastguard Worker '\n' 3128*cda5da8dSAndroid Build Coastguard Worker " capture_pattern ::= !'_' NAME\n" 3129*cda5da8dSAndroid Build Coastguard Worker '\n' 3130*cda5da8dSAndroid Build Coastguard Worker 'A single underscore "_" is not a capture pattern (this is what ' 3131*cda5da8dSAndroid Build Coastguard Worker '"!\'_\'"\n' 3132*cda5da8dSAndroid Build Coastguard Worker 'expresses). It is instead treated as a "wildcard_pattern".\n' 3133*cda5da8dSAndroid Build Coastguard Worker '\n' 3134*cda5da8dSAndroid Build Coastguard Worker 'In a given pattern, a given name can only be bound once. E.g. ' 3135*cda5da8dSAndroid Build Coastguard Worker '"case\n' 3136*cda5da8dSAndroid Build Coastguard Worker 'x, x: ..." is invalid while "case [x] | x: ..." is allowed.\n' 3137*cda5da8dSAndroid Build Coastguard Worker '\n' 3138*cda5da8dSAndroid Build Coastguard Worker 'Capture patterns always succeed. The binding follows scoping ' 3139*cda5da8dSAndroid Build Coastguard Worker 'rules\n' 3140*cda5da8dSAndroid Build Coastguard Worker 'established by the assignment expression operator in **PEP ' 3141*cda5da8dSAndroid Build Coastguard Worker '572**; the\n' 3142*cda5da8dSAndroid Build Coastguard Worker 'name becomes a local variable in the closest containing function ' 3143*cda5da8dSAndroid Build Coastguard Worker 'scope\n' 3144*cda5da8dSAndroid Build Coastguard Worker 'unless there’s an applicable "global" or "nonlocal" statement.\n' 3145*cda5da8dSAndroid Build Coastguard Worker '\n' 3146*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "NAME" will always succeed and it will set "NAME ' 3147*cda5da8dSAndroid Build Coastguard Worker '=\n' 3148*cda5da8dSAndroid Build Coastguard Worker '<subject>".\n' 3149*cda5da8dSAndroid Build Coastguard Worker '\n' 3150*cda5da8dSAndroid Build Coastguard Worker '\n' 3151*cda5da8dSAndroid Build Coastguard Worker 'Wildcard Patterns\n' 3152*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~~\n' 3153*cda5da8dSAndroid Build Coastguard Worker '\n' 3154*cda5da8dSAndroid Build Coastguard Worker 'A wildcard pattern always succeeds (matches anything) and binds ' 3155*cda5da8dSAndroid Build Coastguard Worker 'no\n' 3156*cda5da8dSAndroid Build Coastguard Worker 'name. Syntax:\n' 3157*cda5da8dSAndroid Build Coastguard Worker '\n' 3158*cda5da8dSAndroid Build Coastguard Worker " wildcard_pattern ::= '_'\n" 3159*cda5da8dSAndroid Build Coastguard Worker '\n' 3160*cda5da8dSAndroid Build Coastguard Worker '"_" is a soft keyword within any pattern, but only within ' 3161*cda5da8dSAndroid Build Coastguard Worker 'patterns.\n' 3162*cda5da8dSAndroid Build Coastguard Worker 'It is an identifier, as usual, even within "match" subject\n' 3163*cda5da8dSAndroid Build Coastguard Worker 'expressions, "guard"s, and "case" blocks.\n' 3164*cda5da8dSAndroid Build Coastguard Worker '\n' 3165*cda5da8dSAndroid Build Coastguard Worker 'In simple terms, "_" will always succeed.\n' 3166*cda5da8dSAndroid Build Coastguard Worker '\n' 3167*cda5da8dSAndroid Build Coastguard Worker '\n' 3168*cda5da8dSAndroid Build Coastguard Worker 'Value Patterns\n' 3169*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~\n' 3170*cda5da8dSAndroid Build Coastguard Worker '\n' 3171*cda5da8dSAndroid Build Coastguard Worker 'A value pattern represents a named value in Python. Syntax:\n' 3172*cda5da8dSAndroid Build Coastguard Worker '\n' 3173*cda5da8dSAndroid Build Coastguard Worker ' value_pattern ::= attr\n' 3174*cda5da8dSAndroid Build Coastguard Worker ' attr ::= name_or_attr "." NAME\n' 3175*cda5da8dSAndroid Build Coastguard Worker ' name_or_attr ::= attr | NAME\n' 3176*cda5da8dSAndroid Build Coastguard Worker '\n' 3177*cda5da8dSAndroid Build Coastguard Worker 'The dotted name in the pattern is looked up using standard ' 3178*cda5da8dSAndroid Build Coastguard Worker 'Python name\n' 3179*cda5da8dSAndroid Build Coastguard Worker 'resolution rules. The pattern succeeds if the value found ' 3180*cda5da8dSAndroid Build Coastguard Worker 'compares\n' 3181*cda5da8dSAndroid Build Coastguard Worker 'equal to the subject value (using the "==" equality operator).\n' 3182*cda5da8dSAndroid Build Coastguard Worker '\n' 3183*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "NAME1.NAME2" will succeed only if "<subject> ' 3184*cda5da8dSAndroid Build Coastguard Worker '==\n' 3185*cda5da8dSAndroid Build Coastguard Worker 'NAME1.NAME2"\n' 3186*cda5da8dSAndroid Build Coastguard Worker '\n' 3187*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 3188*cda5da8dSAndroid Build Coastguard Worker '\n' 3189*cda5da8dSAndroid Build Coastguard Worker ' If the same value occurs multiple times in the same match ' 3190*cda5da8dSAndroid Build Coastguard Worker 'statement,\n' 3191*cda5da8dSAndroid Build Coastguard Worker ' the interpreter may cache the first value found and reuse it ' 3192*cda5da8dSAndroid Build Coastguard Worker 'rather\n' 3193*cda5da8dSAndroid Build Coastguard Worker ' than repeat the same lookup. This cache is strictly tied to a ' 3194*cda5da8dSAndroid Build Coastguard Worker 'given\n' 3195*cda5da8dSAndroid Build Coastguard Worker ' execution of a given match statement.\n' 3196*cda5da8dSAndroid Build Coastguard Worker '\n' 3197*cda5da8dSAndroid Build Coastguard Worker '\n' 3198*cda5da8dSAndroid Build Coastguard Worker 'Group Patterns\n' 3199*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~\n' 3200*cda5da8dSAndroid Build Coastguard Worker '\n' 3201*cda5da8dSAndroid Build Coastguard Worker 'A group pattern allows users to add parentheses around patterns ' 3202*cda5da8dSAndroid Build Coastguard Worker 'to\n' 3203*cda5da8dSAndroid Build Coastguard Worker 'emphasize the intended grouping. Otherwise, it has no ' 3204*cda5da8dSAndroid Build Coastguard Worker 'additional\n' 3205*cda5da8dSAndroid Build Coastguard Worker 'syntax. Syntax:\n' 3206*cda5da8dSAndroid Build Coastguard Worker '\n' 3207*cda5da8dSAndroid Build Coastguard Worker ' group_pattern ::= "(" pattern ")"\n' 3208*cda5da8dSAndroid Build Coastguard Worker '\n' 3209*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "(P)" has the same effect as "P".\n' 3210*cda5da8dSAndroid Build Coastguard Worker '\n' 3211*cda5da8dSAndroid Build Coastguard Worker '\n' 3212*cda5da8dSAndroid Build Coastguard Worker 'Sequence Patterns\n' 3213*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~~\n' 3214*cda5da8dSAndroid Build Coastguard Worker '\n' 3215*cda5da8dSAndroid Build Coastguard Worker 'A sequence pattern contains several subpatterns to be matched ' 3216*cda5da8dSAndroid Build Coastguard Worker 'against\n' 3217*cda5da8dSAndroid Build Coastguard Worker 'sequence elements. The syntax is similar to the unpacking of a ' 3218*cda5da8dSAndroid Build Coastguard Worker 'list or\n' 3219*cda5da8dSAndroid Build Coastguard Worker 'tuple.\n' 3220*cda5da8dSAndroid Build Coastguard Worker '\n' 3221*cda5da8dSAndroid Build Coastguard Worker ' sequence_pattern ::= "[" [maybe_sequence_pattern] "]"\n' 3222*cda5da8dSAndroid Build Coastguard Worker ' | "(" [open_sequence_pattern] ")"\n' 3223*cda5da8dSAndroid Build Coastguard Worker ' open_sequence_pattern ::= maybe_star_pattern "," ' 3224*cda5da8dSAndroid Build Coastguard Worker '[maybe_sequence_pattern]\n' 3225*cda5da8dSAndroid Build Coastguard Worker ' maybe_sequence_pattern ::= ",".maybe_star_pattern+ ","?\n' 3226*cda5da8dSAndroid Build Coastguard Worker ' maybe_star_pattern ::= star_pattern | pattern\n' 3227*cda5da8dSAndroid Build Coastguard Worker ' star_pattern ::= "*" (capture_pattern | ' 3228*cda5da8dSAndroid Build Coastguard Worker 'wildcard_pattern)\n' 3229*cda5da8dSAndroid Build Coastguard Worker '\n' 3230*cda5da8dSAndroid Build Coastguard Worker 'There is no difference if parentheses or square brackets are ' 3231*cda5da8dSAndroid Build Coastguard Worker 'used for\n' 3232*cda5da8dSAndroid Build Coastguard Worker 'sequence patterns (i.e. "(...)" vs "[...]" ).\n' 3233*cda5da8dSAndroid Build Coastguard Worker '\n' 3234*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 3235*cda5da8dSAndroid Build Coastguard Worker '\n' 3236*cda5da8dSAndroid Build Coastguard Worker ' A single pattern enclosed in parentheses without a trailing ' 3237*cda5da8dSAndroid Build Coastguard Worker 'comma\n' 3238*cda5da8dSAndroid Build Coastguard Worker ' (e.g. "(3 | 4)") is a group pattern. While a single pattern ' 3239*cda5da8dSAndroid Build Coastguard Worker 'enclosed\n' 3240*cda5da8dSAndroid Build Coastguard Worker ' in square brackets (e.g. "[3 | 4]") is still a sequence ' 3241*cda5da8dSAndroid Build Coastguard Worker 'pattern.\n' 3242*cda5da8dSAndroid Build Coastguard Worker '\n' 3243*cda5da8dSAndroid Build Coastguard Worker 'At most one star subpattern may be in a sequence pattern. The ' 3244*cda5da8dSAndroid Build Coastguard Worker 'star\n' 3245*cda5da8dSAndroid Build Coastguard Worker 'subpattern may occur in any position. If no star subpattern is\n' 3246*cda5da8dSAndroid Build Coastguard Worker 'present, the sequence pattern is a fixed-length sequence ' 3247*cda5da8dSAndroid Build Coastguard Worker 'pattern;\n' 3248*cda5da8dSAndroid Build Coastguard Worker 'otherwise it is a variable-length sequence pattern.\n' 3249*cda5da8dSAndroid Build Coastguard Worker '\n' 3250*cda5da8dSAndroid Build Coastguard Worker 'The following is the logical flow for matching a sequence ' 3251*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3252*cda5da8dSAndroid Build Coastguard Worker 'against a subject value:\n' 3253*cda5da8dSAndroid Build Coastguard Worker '\n' 3254*cda5da8dSAndroid Build Coastguard Worker '1. If the subject value is not a sequence [2], the sequence ' 3255*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3256*cda5da8dSAndroid Build Coastguard Worker ' fails.\n' 3257*cda5da8dSAndroid Build Coastguard Worker '\n' 3258*cda5da8dSAndroid Build Coastguard Worker '2. If the subject value is an instance of "str", "bytes" or\n' 3259*cda5da8dSAndroid Build Coastguard Worker ' "bytearray" the sequence pattern fails.\n' 3260*cda5da8dSAndroid Build Coastguard Worker '\n' 3261*cda5da8dSAndroid Build Coastguard Worker '3. The subsequent steps depend on whether the sequence pattern ' 3262*cda5da8dSAndroid Build Coastguard Worker 'is\n' 3263*cda5da8dSAndroid Build Coastguard Worker ' fixed or variable-length.\n' 3264*cda5da8dSAndroid Build Coastguard Worker '\n' 3265*cda5da8dSAndroid Build Coastguard Worker ' If the sequence pattern is fixed-length:\n' 3266*cda5da8dSAndroid Build Coastguard Worker '\n' 3267*cda5da8dSAndroid Build Coastguard Worker ' 1. If the length of the subject sequence is not equal to the ' 3268*cda5da8dSAndroid Build Coastguard Worker 'number\n' 3269*cda5da8dSAndroid Build Coastguard Worker ' of subpatterns, the sequence pattern fails\n' 3270*cda5da8dSAndroid Build Coastguard Worker '\n' 3271*cda5da8dSAndroid Build Coastguard Worker ' 2. Subpatterns in the sequence pattern are matched to their\n' 3272*cda5da8dSAndroid Build Coastguard Worker ' corresponding items in the subject sequence from left to ' 3273*cda5da8dSAndroid Build Coastguard Worker 'right.\n' 3274*cda5da8dSAndroid Build Coastguard Worker ' Matching stops as soon as a subpattern fails. If all\n' 3275*cda5da8dSAndroid Build Coastguard Worker ' subpatterns succeed in matching their corresponding item, ' 3276*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3277*cda5da8dSAndroid Build Coastguard Worker ' sequence pattern succeeds.\n' 3278*cda5da8dSAndroid Build Coastguard Worker '\n' 3279*cda5da8dSAndroid Build Coastguard Worker ' Otherwise, if the sequence pattern is variable-length:\n' 3280*cda5da8dSAndroid Build Coastguard Worker '\n' 3281*cda5da8dSAndroid Build Coastguard Worker ' 1. If the length of the subject sequence is less than the ' 3282*cda5da8dSAndroid Build Coastguard Worker 'number of\n' 3283*cda5da8dSAndroid Build Coastguard Worker ' non-star subpatterns, the sequence pattern fails.\n' 3284*cda5da8dSAndroid Build Coastguard Worker '\n' 3285*cda5da8dSAndroid Build Coastguard Worker ' 2. The leading non-star subpatterns are matched to their\n' 3286*cda5da8dSAndroid Build Coastguard Worker ' corresponding items as for fixed-length sequences.\n' 3287*cda5da8dSAndroid Build Coastguard Worker '\n' 3288*cda5da8dSAndroid Build Coastguard Worker ' 3. If the previous step succeeds, the star subpattern matches ' 3289*cda5da8dSAndroid Build Coastguard Worker 'a\n' 3290*cda5da8dSAndroid Build Coastguard Worker ' list formed of the remaining subject items, excluding the\n' 3291*cda5da8dSAndroid Build Coastguard Worker ' remaining items corresponding to non-star subpatterns ' 3292*cda5da8dSAndroid Build Coastguard Worker 'following\n' 3293*cda5da8dSAndroid Build Coastguard Worker ' the star subpattern.\n' 3294*cda5da8dSAndroid Build Coastguard Worker '\n' 3295*cda5da8dSAndroid Build Coastguard Worker ' 4. Remaining non-star subpatterns are matched to their\n' 3296*cda5da8dSAndroid Build Coastguard Worker ' corresponding subject items, as for a fixed-length ' 3297*cda5da8dSAndroid Build Coastguard Worker 'sequence.\n' 3298*cda5da8dSAndroid Build Coastguard Worker '\n' 3299*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 3300*cda5da8dSAndroid Build Coastguard Worker '\n' 3301*cda5da8dSAndroid Build Coastguard Worker ' The length of the subject sequence is obtained via "len()" ' 3302*cda5da8dSAndroid Build Coastguard Worker '(i.e.\n' 3303*cda5da8dSAndroid Build Coastguard Worker ' via the "__len__()" protocol). This length may be cached ' 3304*cda5da8dSAndroid Build Coastguard Worker 'by the\n' 3305*cda5da8dSAndroid Build Coastguard Worker ' interpreter in a similar manner as value patterns.\n' 3306*cda5da8dSAndroid Build Coastguard Worker '\n' 3307*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "[P1, P2, P3," … ", P<N>]" matches only if all ' 3308*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3309*cda5da8dSAndroid Build Coastguard Worker 'following happens:\n' 3310*cda5da8dSAndroid Build Coastguard Worker '\n' 3311*cda5da8dSAndroid Build Coastguard Worker '* check "<subject>" is a sequence\n' 3312*cda5da8dSAndroid Build Coastguard Worker '\n' 3313*cda5da8dSAndroid Build Coastguard Worker '* "len(subject) == <N>"\n' 3314*cda5da8dSAndroid Build Coastguard Worker '\n' 3315*cda5da8dSAndroid Build Coastguard Worker '* "P1" matches "<subject>[0]" (note that this match can also ' 3316*cda5da8dSAndroid Build Coastguard Worker 'bind\n' 3317*cda5da8dSAndroid Build Coastguard Worker ' names)\n' 3318*cda5da8dSAndroid Build Coastguard Worker '\n' 3319*cda5da8dSAndroid Build Coastguard Worker '* "P2" matches "<subject>[1]" (note that this match can also ' 3320*cda5da8dSAndroid Build Coastguard Worker 'bind\n' 3321*cda5da8dSAndroid Build Coastguard Worker ' names)\n' 3322*cda5da8dSAndroid Build Coastguard Worker '\n' 3323*cda5da8dSAndroid Build Coastguard Worker '* … and so on for the corresponding pattern/element.\n' 3324*cda5da8dSAndroid Build Coastguard Worker '\n' 3325*cda5da8dSAndroid Build Coastguard Worker '\n' 3326*cda5da8dSAndroid Build Coastguard Worker 'Mapping Patterns\n' 3327*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~\n' 3328*cda5da8dSAndroid Build Coastguard Worker '\n' 3329*cda5da8dSAndroid Build Coastguard Worker 'A mapping pattern contains one or more key-value patterns. The ' 3330*cda5da8dSAndroid Build Coastguard Worker 'syntax\n' 3331*cda5da8dSAndroid Build Coastguard Worker 'is similar to the construction of a dictionary. Syntax:\n' 3332*cda5da8dSAndroid Build Coastguard Worker '\n' 3333*cda5da8dSAndroid Build Coastguard Worker ' mapping_pattern ::= "{" [items_pattern] "}"\n' 3334*cda5da8dSAndroid Build Coastguard Worker ' items_pattern ::= ",".key_value_pattern+ ","?\n' 3335*cda5da8dSAndroid Build Coastguard Worker ' key_value_pattern ::= (literal_pattern | value_pattern) ":" ' 3336*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3337*cda5da8dSAndroid Build Coastguard Worker ' | double_star_pattern\n' 3338*cda5da8dSAndroid Build Coastguard Worker ' double_star_pattern ::= "**" capture_pattern\n' 3339*cda5da8dSAndroid Build Coastguard Worker '\n' 3340*cda5da8dSAndroid Build Coastguard Worker 'At most one double star pattern may be in a mapping pattern. ' 3341*cda5da8dSAndroid Build Coastguard Worker 'The\n' 3342*cda5da8dSAndroid Build Coastguard Worker 'double star pattern must be the last subpattern in the mapping\n' 3343*cda5da8dSAndroid Build Coastguard Worker 'pattern.\n' 3344*cda5da8dSAndroid Build Coastguard Worker '\n' 3345*cda5da8dSAndroid Build Coastguard Worker 'Duplicate keys in mapping patterns are disallowed. Duplicate ' 3346*cda5da8dSAndroid Build Coastguard Worker 'literal\n' 3347*cda5da8dSAndroid Build Coastguard Worker 'keys will raise a "SyntaxError". Two keys that otherwise have ' 3348*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 3349*cda5da8dSAndroid Build Coastguard Worker 'value will raise a "ValueError" at runtime.\n' 3350*cda5da8dSAndroid Build Coastguard Worker '\n' 3351*cda5da8dSAndroid Build Coastguard Worker 'The following is the logical flow for matching a mapping ' 3352*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3353*cda5da8dSAndroid Build Coastguard Worker 'against a subject value:\n' 3354*cda5da8dSAndroid Build Coastguard Worker '\n' 3355*cda5da8dSAndroid Build Coastguard Worker '1. If the subject value is not a mapping [3],the mapping ' 3356*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3357*cda5da8dSAndroid Build Coastguard Worker ' fails.\n' 3358*cda5da8dSAndroid Build Coastguard Worker '\n' 3359*cda5da8dSAndroid Build Coastguard Worker '2. If every key given in the mapping pattern is present in the ' 3360*cda5da8dSAndroid Build Coastguard Worker 'subject\n' 3361*cda5da8dSAndroid Build Coastguard Worker ' mapping, and the pattern for each key matches the ' 3362*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 3363*cda5da8dSAndroid Build Coastguard Worker ' item of the subject mapping, the mapping pattern succeeds.\n' 3364*cda5da8dSAndroid Build Coastguard Worker '\n' 3365*cda5da8dSAndroid Build Coastguard Worker '3. If duplicate keys are detected in the mapping pattern, the ' 3366*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3367*cda5da8dSAndroid Build Coastguard Worker ' is considered invalid. A "SyntaxError" is raised for ' 3368*cda5da8dSAndroid Build Coastguard Worker 'duplicate\n' 3369*cda5da8dSAndroid Build Coastguard Worker ' literal values; or a "ValueError" for named keys of the same ' 3370*cda5da8dSAndroid Build Coastguard Worker 'value.\n' 3371*cda5da8dSAndroid Build Coastguard Worker '\n' 3372*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 3373*cda5da8dSAndroid Build Coastguard Worker '\n' 3374*cda5da8dSAndroid Build Coastguard Worker ' Key-value pairs are matched using the two-argument form of ' 3375*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3376*cda5da8dSAndroid Build Coastguard Worker ' mapping subject’s "get()" method. Matched key-value pairs ' 3377*cda5da8dSAndroid Build Coastguard Worker 'must\n' 3378*cda5da8dSAndroid Build Coastguard Worker ' already be present in the mapping, and not created on-the-fly ' 3379*cda5da8dSAndroid Build Coastguard Worker 'via\n' 3380*cda5da8dSAndroid Build Coastguard Worker ' "__missing__()" or "__getitem__()".\n' 3381*cda5da8dSAndroid Build Coastguard Worker '\n' 3382*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "{KEY1: P1, KEY2: P2, ... }" matches only if all ' 3383*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3384*cda5da8dSAndroid Build Coastguard Worker 'following happens:\n' 3385*cda5da8dSAndroid Build Coastguard Worker '\n' 3386*cda5da8dSAndroid Build Coastguard Worker '* check "<subject>" is a mapping\n' 3387*cda5da8dSAndroid Build Coastguard Worker '\n' 3388*cda5da8dSAndroid Build Coastguard Worker '* "KEY1 in <subject>"\n' 3389*cda5da8dSAndroid Build Coastguard Worker '\n' 3390*cda5da8dSAndroid Build Coastguard Worker '* "P1" matches "<subject>[KEY1]"\n' 3391*cda5da8dSAndroid Build Coastguard Worker '\n' 3392*cda5da8dSAndroid Build Coastguard Worker '* … and so on for the corresponding KEY/pattern pair.\n' 3393*cda5da8dSAndroid Build Coastguard Worker '\n' 3394*cda5da8dSAndroid Build Coastguard Worker '\n' 3395*cda5da8dSAndroid Build Coastguard Worker 'Class Patterns\n' 3396*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~\n' 3397*cda5da8dSAndroid Build Coastguard Worker '\n' 3398*cda5da8dSAndroid Build Coastguard Worker 'A class pattern represents a class and its positional and ' 3399*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3400*cda5da8dSAndroid Build Coastguard Worker 'arguments (if any). Syntax:\n' 3401*cda5da8dSAndroid Build Coastguard Worker '\n' 3402*cda5da8dSAndroid Build Coastguard Worker ' class_pattern ::= name_or_attr "(" [pattern_arguments ' 3403*cda5da8dSAndroid Build Coastguard Worker '","?] ")"\n' 3404*cda5da8dSAndroid Build Coastguard Worker ' pattern_arguments ::= positional_patterns ["," ' 3405*cda5da8dSAndroid Build Coastguard Worker 'keyword_patterns]\n' 3406*cda5da8dSAndroid Build Coastguard Worker ' | keyword_patterns\n' 3407*cda5da8dSAndroid Build Coastguard Worker ' positional_patterns ::= ",".pattern+\n' 3408*cda5da8dSAndroid Build Coastguard Worker ' keyword_patterns ::= ",".keyword_pattern+\n' 3409*cda5da8dSAndroid Build Coastguard Worker ' keyword_pattern ::= NAME "=" pattern\n' 3410*cda5da8dSAndroid Build Coastguard Worker '\n' 3411*cda5da8dSAndroid Build Coastguard Worker 'The same keyword should not be repeated in class patterns.\n' 3412*cda5da8dSAndroid Build Coastguard Worker '\n' 3413*cda5da8dSAndroid Build Coastguard Worker 'The following is the logical flow for matching a class pattern ' 3414*cda5da8dSAndroid Build Coastguard Worker 'against\n' 3415*cda5da8dSAndroid Build Coastguard Worker 'a subject value:\n' 3416*cda5da8dSAndroid Build Coastguard Worker '\n' 3417*cda5da8dSAndroid Build Coastguard Worker '1. If "name_or_attr" is not an instance of the builtin "type" , ' 3418*cda5da8dSAndroid Build Coastguard Worker 'raise\n' 3419*cda5da8dSAndroid Build Coastguard Worker ' "TypeError".\n' 3420*cda5da8dSAndroid Build Coastguard Worker '\n' 3421*cda5da8dSAndroid Build Coastguard Worker '2. If the subject value is not an instance of "name_or_attr" ' 3422*cda5da8dSAndroid Build Coastguard Worker '(tested\n' 3423*cda5da8dSAndroid Build Coastguard Worker ' via "isinstance()"), the class pattern fails.\n' 3424*cda5da8dSAndroid Build Coastguard Worker '\n' 3425*cda5da8dSAndroid Build Coastguard Worker '3. If no pattern arguments are present, the pattern succeeds.\n' 3426*cda5da8dSAndroid Build Coastguard Worker ' Otherwise, the subsequent steps depend on whether keyword or\n' 3427*cda5da8dSAndroid Build Coastguard Worker ' positional argument patterns are present.\n' 3428*cda5da8dSAndroid Build Coastguard Worker '\n' 3429*cda5da8dSAndroid Build Coastguard Worker ' For a number of built-in types (specified below), a single\n' 3430*cda5da8dSAndroid Build Coastguard Worker ' positional subpattern is accepted which will match the ' 3431*cda5da8dSAndroid Build Coastguard Worker 'entire\n' 3432*cda5da8dSAndroid Build Coastguard Worker ' subject; for these types keyword patterns also work as for ' 3433*cda5da8dSAndroid Build Coastguard Worker 'other\n' 3434*cda5da8dSAndroid Build Coastguard Worker ' types.\n' 3435*cda5da8dSAndroid Build Coastguard Worker '\n' 3436*cda5da8dSAndroid Build Coastguard Worker ' If only keyword patterns are present, they are processed as\n' 3437*cda5da8dSAndroid Build Coastguard Worker ' follows, one by one:\n' 3438*cda5da8dSAndroid Build Coastguard Worker '\n' 3439*cda5da8dSAndroid Build Coastguard Worker ' I. The keyword is looked up as an attribute on the subject.\n' 3440*cda5da8dSAndroid Build Coastguard Worker '\n' 3441*cda5da8dSAndroid Build Coastguard Worker ' * If this raises an exception other than "AttributeError", ' 3442*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3443*cda5da8dSAndroid Build Coastguard Worker ' exception bubbles up.\n' 3444*cda5da8dSAndroid Build Coastguard Worker '\n' 3445*cda5da8dSAndroid Build Coastguard Worker ' * If this raises "AttributeError", the class pattern has ' 3446*cda5da8dSAndroid Build Coastguard Worker 'failed.\n' 3447*cda5da8dSAndroid Build Coastguard Worker '\n' 3448*cda5da8dSAndroid Build Coastguard Worker ' * Else, the subpattern associated with the keyword pattern ' 3449*cda5da8dSAndroid Build Coastguard Worker 'is\n' 3450*cda5da8dSAndroid Build Coastguard Worker ' matched against the subject’s attribute value. If this ' 3451*cda5da8dSAndroid Build Coastguard Worker 'fails,\n' 3452*cda5da8dSAndroid Build Coastguard Worker ' the class pattern fails; if this succeeds, the match ' 3453*cda5da8dSAndroid Build Coastguard Worker 'proceeds\n' 3454*cda5da8dSAndroid Build Coastguard Worker ' to the next keyword.\n' 3455*cda5da8dSAndroid Build Coastguard Worker '\n' 3456*cda5da8dSAndroid Build Coastguard Worker ' II. If all keyword patterns succeed, the class pattern ' 3457*cda5da8dSAndroid Build Coastguard Worker 'succeeds.\n' 3458*cda5da8dSAndroid Build Coastguard Worker '\n' 3459*cda5da8dSAndroid Build Coastguard Worker ' If any positional patterns are present, they are converted ' 3460*cda5da8dSAndroid Build Coastguard Worker 'to\n' 3461*cda5da8dSAndroid Build Coastguard Worker ' keyword patterns using the "__match_args__" attribute on the ' 3462*cda5da8dSAndroid Build Coastguard Worker 'class\n' 3463*cda5da8dSAndroid Build Coastguard Worker ' "name_or_attr" before matching:\n' 3464*cda5da8dSAndroid Build Coastguard Worker '\n' 3465*cda5da8dSAndroid Build Coastguard Worker ' I. The equivalent of "getattr(cls, "__match_args__", ())" is\n' 3466*cda5da8dSAndroid Build Coastguard Worker ' called.\n' 3467*cda5da8dSAndroid Build Coastguard Worker '\n' 3468*cda5da8dSAndroid Build Coastguard Worker ' * If this raises an exception, the exception bubbles up.\n' 3469*cda5da8dSAndroid Build Coastguard Worker '\n' 3470*cda5da8dSAndroid Build Coastguard Worker ' * If the returned value is not a tuple, the conversion ' 3471*cda5da8dSAndroid Build Coastguard Worker 'fails and\n' 3472*cda5da8dSAndroid Build Coastguard Worker ' "TypeError" is raised.\n' 3473*cda5da8dSAndroid Build Coastguard Worker '\n' 3474*cda5da8dSAndroid Build Coastguard Worker ' * If there are more positional patterns than\n' 3475*cda5da8dSAndroid Build Coastguard Worker ' "len(cls.__match_args__)", "TypeError" is raised.\n' 3476*cda5da8dSAndroid Build Coastguard Worker '\n' 3477*cda5da8dSAndroid Build Coastguard Worker ' * Otherwise, positional pattern "i" is converted to a ' 3478*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3479*cda5da8dSAndroid Build Coastguard Worker ' pattern using "__match_args__[i]" as the keyword.\n' 3480*cda5da8dSAndroid Build Coastguard Worker ' "__match_args__[i]" must be a string; if not "TypeError" ' 3481*cda5da8dSAndroid Build Coastguard Worker 'is\n' 3482*cda5da8dSAndroid Build Coastguard Worker ' raised.\n' 3483*cda5da8dSAndroid Build Coastguard Worker '\n' 3484*cda5da8dSAndroid Build Coastguard Worker ' * If there are duplicate keywords, "TypeError" is raised.\n' 3485*cda5da8dSAndroid Build Coastguard Worker '\n' 3486*cda5da8dSAndroid Build Coastguard Worker ' See also:\n' 3487*cda5da8dSAndroid Build Coastguard Worker '\n' 3488*cda5da8dSAndroid Build Coastguard Worker ' Customizing positional arguments in class pattern ' 3489*cda5da8dSAndroid Build Coastguard Worker 'matching\n' 3490*cda5da8dSAndroid Build Coastguard Worker '\n' 3491*cda5da8dSAndroid Build Coastguard Worker ' II. Once all positional patterns have been converted to ' 3492*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3493*cda5da8dSAndroid Build Coastguard Worker ' patterns,\n' 3494*cda5da8dSAndroid Build Coastguard Worker ' the match proceeds as if there were only keyword ' 3495*cda5da8dSAndroid Build Coastguard Worker 'patterns.\n' 3496*cda5da8dSAndroid Build Coastguard Worker '\n' 3497*cda5da8dSAndroid Build Coastguard Worker ' For the following built-in types the handling of positional\n' 3498*cda5da8dSAndroid Build Coastguard Worker ' subpatterns is different:\n' 3499*cda5da8dSAndroid Build Coastguard Worker '\n' 3500*cda5da8dSAndroid Build Coastguard Worker ' * "bool"\n' 3501*cda5da8dSAndroid Build Coastguard Worker '\n' 3502*cda5da8dSAndroid Build Coastguard Worker ' * "bytearray"\n' 3503*cda5da8dSAndroid Build Coastguard Worker '\n' 3504*cda5da8dSAndroid Build Coastguard Worker ' * "bytes"\n' 3505*cda5da8dSAndroid Build Coastguard Worker '\n' 3506*cda5da8dSAndroid Build Coastguard Worker ' * "dict"\n' 3507*cda5da8dSAndroid Build Coastguard Worker '\n' 3508*cda5da8dSAndroid Build Coastguard Worker ' * "float"\n' 3509*cda5da8dSAndroid Build Coastguard Worker '\n' 3510*cda5da8dSAndroid Build Coastguard Worker ' * "frozenset"\n' 3511*cda5da8dSAndroid Build Coastguard Worker '\n' 3512*cda5da8dSAndroid Build Coastguard Worker ' * "int"\n' 3513*cda5da8dSAndroid Build Coastguard Worker '\n' 3514*cda5da8dSAndroid Build Coastguard Worker ' * "list"\n' 3515*cda5da8dSAndroid Build Coastguard Worker '\n' 3516*cda5da8dSAndroid Build Coastguard Worker ' * "set"\n' 3517*cda5da8dSAndroid Build Coastguard Worker '\n' 3518*cda5da8dSAndroid Build Coastguard Worker ' * "str"\n' 3519*cda5da8dSAndroid Build Coastguard Worker '\n' 3520*cda5da8dSAndroid Build Coastguard Worker ' * "tuple"\n' 3521*cda5da8dSAndroid Build Coastguard Worker '\n' 3522*cda5da8dSAndroid Build Coastguard Worker ' These classes accept a single positional argument, and the ' 3523*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 3524*cda5da8dSAndroid Build Coastguard Worker ' there is matched against the whole object rather than an ' 3525*cda5da8dSAndroid Build Coastguard Worker 'attribute.\n' 3526*cda5da8dSAndroid Build Coastguard Worker ' For example "int(0|1)" matches the value "0", but not the ' 3527*cda5da8dSAndroid Build Coastguard Worker 'value\n' 3528*cda5da8dSAndroid Build Coastguard Worker ' "0.0".\n' 3529*cda5da8dSAndroid Build Coastguard Worker '\n' 3530*cda5da8dSAndroid Build Coastguard Worker 'In simple terms "CLS(P1, attr=P2)" matches only if the ' 3531*cda5da8dSAndroid Build Coastguard Worker 'following\n' 3532*cda5da8dSAndroid Build Coastguard Worker 'happens:\n' 3533*cda5da8dSAndroid Build Coastguard Worker '\n' 3534*cda5da8dSAndroid Build Coastguard Worker '* "isinstance(<subject>, CLS)"\n' 3535*cda5da8dSAndroid Build Coastguard Worker '\n' 3536*cda5da8dSAndroid Build Coastguard Worker '* convert "P1" to a keyword pattern using "CLS.__match_args__"\n' 3537*cda5da8dSAndroid Build Coastguard Worker '\n' 3538*cda5da8dSAndroid Build Coastguard Worker '* For each keyword argument "attr=P2":\n' 3539*cda5da8dSAndroid Build Coastguard Worker ' * "hasattr(<subject>, "attr")"\n' 3540*cda5da8dSAndroid Build Coastguard Worker '\n' 3541*cda5da8dSAndroid Build Coastguard Worker ' * "P2" matches "<subject>.attr"\n' 3542*cda5da8dSAndroid Build Coastguard Worker '\n' 3543*cda5da8dSAndroid Build Coastguard Worker '* … and so on for the corresponding keyword argument/pattern ' 3544*cda5da8dSAndroid Build Coastguard Worker 'pair.\n' 3545*cda5da8dSAndroid Build Coastguard Worker '\n' 3546*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 3547*cda5da8dSAndroid Build Coastguard Worker '\n' 3548*cda5da8dSAndroid Build Coastguard Worker ' * **PEP 634** – Structural Pattern Matching: Specification\n' 3549*cda5da8dSAndroid Build Coastguard Worker '\n' 3550*cda5da8dSAndroid Build Coastguard Worker ' * **PEP 636** – Structural Pattern Matching: Tutorial\n' 3551*cda5da8dSAndroid Build Coastguard Worker '\n' 3552*cda5da8dSAndroid Build Coastguard Worker '\n' 3553*cda5da8dSAndroid Build Coastguard Worker 'Function definitions\n' 3554*cda5da8dSAndroid Build Coastguard Worker '====================\n' 3555*cda5da8dSAndroid Build Coastguard Worker '\n' 3556*cda5da8dSAndroid Build Coastguard Worker 'A function definition defines a user-defined function object ' 3557*cda5da8dSAndroid Build Coastguard Worker '(see\n' 3558*cda5da8dSAndroid Build Coastguard Worker 'section The standard type hierarchy):\n' 3559*cda5da8dSAndroid Build Coastguard Worker '\n' 3560*cda5da8dSAndroid Build Coastguard Worker ' funcdef ::= [decorators] "def" funcname "(" ' 3561*cda5da8dSAndroid Build Coastguard Worker '[parameter_list] ")"\n' 3562*cda5da8dSAndroid Build Coastguard Worker ' ["->" expression] ":" suite\n' 3563*cda5da8dSAndroid Build Coastguard Worker ' decorators ::= decorator+\n' 3564*cda5da8dSAndroid Build Coastguard Worker ' decorator ::= "@" assignment_expression ' 3565*cda5da8dSAndroid Build Coastguard Worker 'NEWLINE\n' 3566*cda5da8dSAndroid Build Coastguard Worker ' parameter_list ::= defparameter ("," ' 3567*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n' 3568*cda5da8dSAndroid Build Coastguard Worker ' | parameter_list_no_posonly\n' 3569*cda5da8dSAndroid Build Coastguard Worker ' parameter_list_no_posonly ::= defparameter ("," ' 3570*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* ["," [parameter_list_starargs]]\n' 3571*cda5da8dSAndroid Build Coastguard Worker ' | parameter_list_starargs\n' 3572*cda5da8dSAndroid Build Coastguard Worker ' parameter_list_starargs ::= "*" [parameter] ("," ' 3573*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* ["," ["**" parameter [","]]]\n' 3574*cda5da8dSAndroid Build Coastguard Worker ' | "**" parameter [","]\n' 3575*cda5da8dSAndroid Build Coastguard Worker ' parameter ::= identifier [":" expression]\n' 3576*cda5da8dSAndroid Build Coastguard Worker ' defparameter ::= parameter ["=" expression]\n' 3577*cda5da8dSAndroid Build Coastguard Worker ' funcname ::= identifier\n' 3578*cda5da8dSAndroid Build Coastguard Worker '\n' 3579*cda5da8dSAndroid Build Coastguard Worker 'A function definition is an executable statement. Its execution ' 3580*cda5da8dSAndroid Build Coastguard Worker 'binds\n' 3581*cda5da8dSAndroid Build Coastguard Worker 'the function name in the current local namespace to a function ' 3582*cda5da8dSAndroid Build Coastguard Worker 'object\n' 3583*cda5da8dSAndroid Build Coastguard Worker '(a wrapper around the executable code for the function). This\n' 3584*cda5da8dSAndroid Build Coastguard Worker 'function object contains a reference to the current global ' 3585*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 3586*cda5da8dSAndroid Build Coastguard Worker 'as the global namespace to be used when the function is called.\n' 3587*cda5da8dSAndroid Build Coastguard Worker '\n' 3588*cda5da8dSAndroid Build Coastguard Worker 'The function definition does not execute the function body; this ' 3589*cda5da8dSAndroid Build Coastguard Worker 'gets\n' 3590*cda5da8dSAndroid Build Coastguard Worker 'executed only when the function is called. [4]\n' 3591*cda5da8dSAndroid Build Coastguard Worker '\n' 3592*cda5da8dSAndroid Build Coastguard Worker 'A function definition may be wrapped by one or more *decorator*\n' 3593*cda5da8dSAndroid Build Coastguard Worker 'expressions. Decorator expressions are evaluated when the ' 3594*cda5da8dSAndroid Build Coastguard Worker 'function is\n' 3595*cda5da8dSAndroid Build Coastguard Worker 'defined, in the scope that contains the function definition. ' 3596*cda5da8dSAndroid Build Coastguard Worker 'The\n' 3597*cda5da8dSAndroid Build Coastguard Worker 'result must be a callable, which is invoked with the function ' 3598*cda5da8dSAndroid Build Coastguard Worker 'object\n' 3599*cda5da8dSAndroid Build Coastguard Worker 'as the only argument. The returned value is bound to the ' 3600*cda5da8dSAndroid Build Coastguard Worker 'function name\n' 3601*cda5da8dSAndroid Build Coastguard Worker 'instead of the function object. Multiple decorators are applied ' 3602*cda5da8dSAndroid Build Coastguard Worker 'in\n' 3603*cda5da8dSAndroid Build Coastguard Worker 'nested fashion. For example, the following code\n' 3604*cda5da8dSAndroid Build Coastguard Worker '\n' 3605*cda5da8dSAndroid Build Coastguard Worker ' @f1(arg)\n' 3606*cda5da8dSAndroid Build Coastguard Worker ' @f2\n' 3607*cda5da8dSAndroid Build Coastguard Worker ' def func(): pass\n' 3608*cda5da8dSAndroid Build Coastguard Worker '\n' 3609*cda5da8dSAndroid Build Coastguard Worker 'is roughly equivalent to\n' 3610*cda5da8dSAndroid Build Coastguard Worker '\n' 3611*cda5da8dSAndroid Build Coastguard Worker ' def func(): pass\n' 3612*cda5da8dSAndroid Build Coastguard Worker ' func = f1(arg)(f2(func))\n' 3613*cda5da8dSAndroid Build Coastguard Worker '\n' 3614*cda5da8dSAndroid Build Coastguard Worker 'except that the original function is not temporarily bound to ' 3615*cda5da8dSAndroid Build Coastguard Worker 'the name\n' 3616*cda5da8dSAndroid Build Coastguard Worker '"func".\n' 3617*cda5da8dSAndroid Build Coastguard Worker '\n' 3618*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.9: Functions may be decorated with any ' 3619*cda5da8dSAndroid Build Coastguard Worker 'valid\n' 3620*cda5da8dSAndroid Build Coastguard Worker '"assignment_expression". Previously, the grammar was much more\n' 3621*cda5da8dSAndroid Build Coastguard Worker 'restrictive; see **PEP 614** for details.\n' 3622*cda5da8dSAndroid Build Coastguard Worker '\n' 3623*cda5da8dSAndroid Build Coastguard Worker 'When one or more *parameters* have the form *parameter* "="\n' 3624*cda5da8dSAndroid Build Coastguard Worker '*expression*, the function is said to have “default parameter ' 3625*cda5da8dSAndroid Build Coastguard Worker 'values.”\n' 3626*cda5da8dSAndroid Build Coastguard Worker 'For a parameter with a default value, the corresponding ' 3627*cda5da8dSAndroid Build Coastguard Worker '*argument* may\n' 3628*cda5da8dSAndroid Build Coastguard Worker 'be omitted from a call, in which case the parameter’s default ' 3629*cda5da8dSAndroid Build Coastguard Worker 'value is\n' 3630*cda5da8dSAndroid Build Coastguard Worker 'substituted. If a parameter has a default value, all following\n' 3631*cda5da8dSAndroid Build Coastguard Worker 'parameters up until the “"*"” must also have a default value — ' 3632*cda5da8dSAndroid Build Coastguard Worker 'this is\n' 3633*cda5da8dSAndroid Build Coastguard Worker 'a syntactic restriction that is not expressed by the grammar.\n' 3634*cda5da8dSAndroid Build Coastguard Worker '\n' 3635*cda5da8dSAndroid Build Coastguard Worker '**Default parameter values are evaluated from left to right when ' 3636*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3637*cda5da8dSAndroid Build Coastguard Worker 'function definition is executed.** This means that the ' 3638*cda5da8dSAndroid Build Coastguard Worker 'expression is\n' 3639*cda5da8dSAndroid Build Coastguard Worker 'evaluated once, when the function is defined, and that the same ' 3640*cda5da8dSAndroid Build Coastguard Worker '“pre-\n' 3641*cda5da8dSAndroid Build Coastguard Worker 'computed” value is used for each call. This is especially ' 3642*cda5da8dSAndroid Build Coastguard Worker 'important\n' 3643*cda5da8dSAndroid Build Coastguard Worker 'to understand when a default parameter value is a mutable ' 3644*cda5da8dSAndroid Build Coastguard Worker 'object, such\n' 3645*cda5da8dSAndroid Build Coastguard Worker 'as a list or a dictionary: if the function modifies the object ' 3646*cda5da8dSAndroid Build Coastguard Worker '(e.g.\n' 3647*cda5da8dSAndroid Build Coastguard Worker 'by appending an item to a list), the default parameter value is ' 3648*cda5da8dSAndroid Build Coastguard Worker 'in\n' 3649*cda5da8dSAndroid Build Coastguard Worker 'effect modified. This is generally not what was intended. A ' 3650*cda5da8dSAndroid Build Coastguard Worker 'way\n' 3651*cda5da8dSAndroid Build Coastguard Worker 'around this is to use "None" as the default, and explicitly test ' 3652*cda5da8dSAndroid Build Coastguard Worker 'for\n' 3653*cda5da8dSAndroid Build Coastguard Worker 'it in the body of the function, e.g.:\n' 3654*cda5da8dSAndroid Build Coastguard Worker '\n' 3655*cda5da8dSAndroid Build Coastguard Worker ' def whats_on_the_telly(penguin=None):\n' 3656*cda5da8dSAndroid Build Coastguard Worker ' if penguin is None:\n' 3657*cda5da8dSAndroid Build Coastguard Worker ' penguin = []\n' 3658*cda5da8dSAndroid Build Coastguard Worker ' penguin.append("property of the zoo")\n' 3659*cda5da8dSAndroid Build Coastguard Worker ' return penguin\n' 3660*cda5da8dSAndroid Build Coastguard Worker '\n' 3661*cda5da8dSAndroid Build Coastguard Worker 'Function call semantics are described in more detail in section ' 3662*cda5da8dSAndroid Build Coastguard Worker 'Calls.\n' 3663*cda5da8dSAndroid Build Coastguard Worker 'A function call always assigns values to all parameters ' 3664*cda5da8dSAndroid Build Coastguard Worker 'mentioned in\n' 3665*cda5da8dSAndroid Build Coastguard Worker 'the parameter list, either from positional arguments, from ' 3666*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 3667*cda5da8dSAndroid Build Coastguard Worker 'arguments, or from default values. If the form “"*identifier"” ' 3668*cda5da8dSAndroid Build Coastguard Worker 'is\n' 3669*cda5da8dSAndroid Build Coastguard Worker 'present, it is initialized to a tuple receiving any excess ' 3670*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 3671*cda5da8dSAndroid Build Coastguard Worker 'parameters, defaulting to the empty tuple. If the form\n' 3672*cda5da8dSAndroid Build Coastguard Worker '“"**identifier"” is present, it is initialized to a new ordered\n' 3673*cda5da8dSAndroid Build Coastguard Worker 'mapping receiving any excess keyword arguments, defaulting to a ' 3674*cda5da8dSAndroid Build Coastguard Worker 'new\n' 3675*cda5da8dSAndroid Build Coastguard Worker 'empty mapping of the same type. Parameters after “"*"” or\n' 3676*cda5da8dSAndroid Build Coastguard Worker '“"*identifier"” are keyword-only parameters and may only be ' 3677*cda5da8dSAndroid Build Coastguard Worker 'passed by\n' 3678*cda5da8dSAndroid Build Coastguard Worker 'keyword arguments. Parameters before “"/"” are positional-only\n' 3679*cda5da8dSAndroid Build Coastguard Worker 'parameters and may only be passed by positional arguments.\n' 3680*cda5da8dSAndroid Build Coastguard Worker '\n' 3681*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: The "/" function parameter syntax may be ' 3682*cda5da8dSAndroid Build Coastguard Worker 'used\n' 3683*cda5da8dSAndroid Build Coastguard Worker 'to indicate positional-only parameters. See **PEP 570** for ' 3684*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 3685*cda5da8dSAndroid Build Coastguard Worker '\n' 3686*cda5da8dSAndroid Build Coastguard Worker 'Parameters may have an *annotation* of the form “": ' 3687*cda5da8dSAndroid Build Coastguard Worker 'expression"”\n' 3688*cda5da8dSAndroid Build Coastguard Worker 'following the parameter name. Any parameter may have an ' 3689*cda5da8dSAndroid Build Coastguard Worker 'annotation,\n' 3690*cda5da8dSAndroid Build Coastguard Worker 'even those of the form "*identifier" or "**identifier". ' 3691*cda5da8dSAndroid Build Coastguard Worker 'Functions may\n' 3692*cda5da8dSAndroid Build Coastguard Worker 'have “return” annotation of the form “"-> expression"” after ' 3693*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3694*cda5da8dSAndroid Build Coastguard Worker 'parameter list. These annotations can be any valid Python ' 3695*cda5da8dSAndroid Build Coastguard Worker 'expression.\n' 3696*cda5da8dSAndroid Build Coastguard Worker 'The presence of annotations does not change the semantics of a\n' 3697*cda5da8dSAndroid Build Coastguard Worker 'function. The annotation values are available as values of a\n' 3698*cda5da8dSAndroid Build Coastguard Worker 'dictionary keyed by the parameters’ names in the ' 3699*cda5da8dSAndroid Build Coastguard Worker '"__annotations__"\n' 3700*cda5da8dSAndroid Build Coastguard Worker 'attribute of the function object. If the "annotations" import ' 3701*cda5da8dSAndroid Build Coastguard Worker 'from\n' 3702*cda5da8dSAndroid Build Coastguard Worker '"__future__" is used, annotations are preserved as strings at ' 3703*cda5da8dSAndroid Build Coastguard Worker 'runtime\n' 3704*cda5da8dSAndroid Build Coastguard Worker 'which enables postponed evaluation. Otherwise, they are ' 3705*cda5da8dSAndroid Build Coastguard Worker 'evaluated\n' 3706*cda5da8dSAndroid Build Coastguard Worker 'when the function definition is executed. In this case ' 3707*cda5da8dSAndroid Build Coastguard Worker 'annotations\n' 3708*cda5da8dSAndroid Build Coastguard Worker 'may be evaluated in a different order than they appear in the ' 3709*cda5da8dSAndroid Build Coastguard Worker 'source\n' 3710*cda5da8dSAndroid Build Coastguard Worker 'code.\n' 3711*cda5da8dSAndroid Build Coastguard Worker '\n' 3712*cda5da8dSAndroid Build Coastguard Worker 'It is also possible to create anonymous functions (functions not ' 3713*cda5da8dSAndroid Build Coastguard Worker 'bound\n' 3714*cda5da8dSAndroid Build Coastguard Worker 'to a name), for immediate use in expressions. This uses lambda\n' 3715*cda5da8dSAndroid Build Coastguard Worker 'expressions, described in section Lambdas. Note that the ' 3716*cda5da8dSAndroid Build Coastguard Worker 'lambda\n' 3717*cda5da8dSAndroid Build Coastguard Worker 'expression is merely a shorthand for a simplified function ' 3718*cda5da8dSAndroid Build Coastguard Worker 'definition;\n' 3719*cda5da8dSAndroid Build Coastguard Worker 'a function defined in a “"def"” statement can be passed around ' 3720*cda5da8dSAndroid Build Coastguard Worker 'or\n' 3721*cda5da8dSAndroid Build Coastguard Worker 'assigned to another name just like a function defined by a ' 3722*cda5da8dSAndroid Build Coastguard Worker 'lambda\n' 3723*cda5da8dSAndroid Build Coastguard Worker 'expression. The “"def"” form is actually more powerful since ' 3724*cda5da8dSAndroid Build Coastguard Worker 'it\n' 3725*cda5da8dSAndroid Build Coastguard Worker 'allows the execution of multiple statements and annotations.\n' 3726*cda5da8dSAndroid Build Coastguard Worker '\n' 3727*cda5da8dSAndroid Build Coastguard Worker '**Programmer’s note:** Functions are first-class objects. A ' 3728*cda5da8dSAndroid Build Coastguard Worker '“"def"”\n' 3729*cda5da8dSAndroid Build Coastguard Worker 'statement executed inside a function definition defines a local\n' 3730*cda5da8dSAndroid Build Coastguard Worker 'function that can be returned or passed around. Free variables ' 3731*cda5da8dSAndroid Build Coastguard Worker 'used\n' 3732*cda5da8dSAndroid Build Coastguard Worker 'in the nested function can access the local variables of the ' 3733*cda5da8dSAndroid Build Coastguard Worker 'function\n' 3734*cda5da8dSAndroid Build Coastguard Worker 'containing the def. See section Naming and binding for ' 3735*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 3736*cda5da8dSAndroid Build Coastguard Worker '\n' 3737*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 3738*cda5da8dSAndroid Build Coastguard Worker '\n' 3739*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3107** - Function Annotations\n' 3740*cda5da8dSAndroid Build Coastguard Worker ' The original specification for function annotations.\n' 3741*cda5da8dSAndroid Build Coastguard Worker '\n' 3742*cda5da8dSAndroid Build Coastguard Worker ' **PEP 484** - Type Hints\n' 3743*cda5da8dSAndroid Build Coastguard Worker ' Definition of a standard meaning for annotations: type ' 3744*cda5da8dSAndroid Build Coastguard Worker 'hints.\n' 3745*cda5da8dSAndroid Build Coastguard Worker '\n' 3746*cda5da8dSAndroid Build Coastguard Worker ' **PEP 526** - Syntax for Variable Annotations\n' 3747*cda5da8dSAndroid Build Coastguard Worker ' Ability to type hint variable declarations, including ' 3748*cda5da8dSAndroid Build Coastguard Worker 'class\n' 3749*cda5da8dSAndroid Build Coastguard Worker ' variables and instance variables\n' 3750*cda5da8dSAndroid Build Coastguard Worker '\n' 3751*cda5da8dSAndroid Build Coastguard Worker ' **PEP 563** - Postponed Evaluation of Annotations\n' 3752*cda5da8dSAndroid Build Coastguard Worker ' Support for forward references within annotations by ' 3753*cda5da8dSAndroid Build Coastguard Worker 'preserving\n' 3754*cda5da8dSAndroid Build Coastguard Worker ' annotations in a string form at runtime instead of eager\n' 3755*cda5da8dSAndroid Build Coastguard Worker ' evaluation.\n' 3756*cda5da8dSAndroid Build Coastguard Worker '\n' 3757*cda5da8dSAndroid Build Coastguard Worker '\n' 3758*cda5da8dSAndroid Build Coastguard Worker 'Class definitions\n' 3759*cda5da8dSAndroid Build Coastguard Worker '=================\n' 3760*cda5da8dSAndroid Build Coastguard Worker '\n' 3761*cda5da8dSAndroid Build Coastguard Worker 'A class definition defines a class object (see section The ' 3762*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 3763*cda5da8dSAndroid Build Coastguard Worker 'type hierarchy):\n' 3764*cda5da8dSAndroid Build Coastguard Worker '\n' 3765*cda5da8dSAndroid Build Coastguard Worker ' classdef ::= [decorators] "class" classname [inheritance] ' 3766*cda5da8dSAndroid Build Coastguard Worker '":" suite\n' 3767*cda5da8dSAndroid Build Coastguard Worker ' inheritance ::= "(" [argument_list] ")"\n' 3768*cda5da8dSAndroid Build Coastguard Worker ' classname ::= identifier\n' 3769*cda5da8dSAndroid Build Coastguard Worker '\n' 3770*cda5da8dSAndroid Build Coastguard Worker 'A class definition is an executable statement. The inheritance ' 3771*cda5da8dSAndroid Build Coastguard Worker 'list\n' 3772*cda5da8dSAndroid Build Coastguard Worker 'usually gives a list of base classes (see Metaclasses for more\n' 3773*cda5da8dSAndroid Build Coastguard Worker 'advanced uses), so each item in the list should evaluate to a ' 3774*cda5da8dSAndroid Build Coastguard Worker 'class\n' 3775*cda5da8dSAndroid Build Coastguard Worker 'object which allows subclassing. Classes without an inheritance ' 3776*cda5da8dSAndroid Build Coastguard Worker 'list\n' 3777*cda5da8dSAndroid Build Coastguard Worker 'inherit, by default, from the base class "object"; hence,\n' 3778*cda5da8dSAndroid Build Coastguard Worker '\n' 3779*cda5da8dSAndroid Build Coastguard Worker ' class Foo:\n' 3780*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 3781*cda5da8dSAndroid Build Coastguard Worker '\n' 3782*cda5da8dSAndroid Build Coastguard Worker 'is equivalent to\n' 3783*cda5da8dSAndroid Build Coastguard Worker '\n' 3784*cda5da8dSAndroid Build Coastguard Worker ' class Foo(object):\n' 3785*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 3786*cda5da8dSAndroid Build Coastguard Worker '\n' 3787*cda5da8dSAndroid Build Coastguard Worker 'The class’s suite is then executed in a new execution frame ' 3788*cda5da8dSAndroid Build Coastguard Worker '(see\n' 3789*cda5da8dSAndroid Build Coastguard Worker 'Naming and binding), using a newly created local namespace and ' 3790*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3791*cda5da8dSAndroid Build Coastguard Worker 'original global namespace. (Usually, the suite contains mostly\n' 3792*cda5da8dSAndroid Build Coastguard Worker 'function definitions.) When the class’s suite finishes ' 3793*cda5da8dSAndroid Build Coastguard Worker 'execution, its\n' 3794*cda5da8dSAndroid Build Coastguard Worker 'execution frame is discarded but its local namespace is saved. ' 3795*cda5da8dSAndroid Build Coastguard Worker '[5] A\n' 3796*cda5da8dSAndroid Build Coastguard Worker 'class object is then created using the inheritance list for the ' 3797*cda5da8dSAndroid Build Coastguard Worker 'base\n' 3798*cda5da8dSAndroid Build Coastguard Worker 'classes and the saved local namespace for the attribute ' 3799*cda5da8dSAndroid Build Coastguard Worker 'dictionary.\n' 3800*cda5da8dSAndroid Build Coastguard Worker 'The class name is bound to this class object in the original ' 3801*cda5da8dSAndroid Build Coastguard Worker 'local\n' 3802*cda5da8dSAndroid Build Coastguard Worker 'namespace.\n' 3803*cda5da8dSAndroid Build Coastguard Worker '\n' 3804*cda5da8dSAndroid Build Coastguard Worker 'The order in which attributes are defined in the class body is\n' 3805*cda5da8dSAndroid Build Coastguard Worker 'preserved in the new class’s "__dict__". Note that this is ' 3806*cda5da8dSAndroid Build Coastguard Worker 'reliable\n' 3807*cda5da8dSAndroid Build Coastguard Worker 'only right after the class is created and only for classes that ' 3808*cda5da8dSAndroid Build Coastguard Worker 'were\n' 3809*cda5da8dSAndroid Build Coastguard Worker 'defined using the definition syntax.\n' 3810*cda5da8dSAndroid Build Coastguard Worker '\n' 3811*cda5da8dSAndroid Build Coastguard Worker 'Class creation can be customized heavily using metaclasses.\n' 3812*cda5da8dSAndroid Build Coastguard Worker '\n' 3813*cda5da8dSAndroid Build Coastguard Worker 'Classes can also be decorated: just like when decorating ' 3814*cda5da8dSAndroid Build Coastguard Worker 'functions,\n' 3815*cda5da8dSAndroid Build Coastguard Worker '\n' 3816*cda5da8dSAndroid Build Coastguard Worker ' @f1(arg)\n' 3817*cda5da8dSAndroid Build Coastguard Worker ' @f2\n' 3818*cda5da8dSAndroid Build Coastguard Worker ' class Foo: pass\n' 3819*cda5da8dSAndroid Build Coastguard Worker '\n' 3820*cda5da8dSAndroid Build Coastguard Worker 'is roughly equivalent to\n' 3821*cda5da8dSAndroid Build Coastguard Worker '\n' 3822*cda5da8dSAndroid Build Coastguard Worker ' class Foo: pass\n' 3823*cda5da8dSAndroid Build Coastguard Worker ' Foo = f1(arg)(f2(Foo))\n' 3824*cda5da8dSAndroid Build Coastguard Worker '\n' 3825*cda5da8dSAndroid Build Coastguard Worker 'The evaluation rules for the decorator expressions are the same ' 3826*cda5da8dSAndroid Build Coastguard Worker 'as for\n' 3827*cda5da8dSAndroid Build Coastguard Worker 'function decorators. The result is then bound to the class ' 3828*cda5da8dSAndroid Build Coastguard Worker 'name.\n' 3829*cda5da8dSAndroid Build Coastguard Worker '\n' 3830*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.9: Classes may be decorated with any valid\n' 3831*cda5da8dSAndroid Build Coastguard Worker '"assignment_expression". Previously, the grammar was much more\n' 3832*cda5da8dSAndroid Build Coastguard Worker 'restrictive; see **PEP 614** for details.\n' 3833*cda5da8dSAndroid Build Coastguard Worker '\n' 3834*cda5da8dSAndroid Build Coastguard Worker '**Programmer’s note:** Variables defined in the class definition ' 3835*cda5da8dSAndroid Build Coastguard Worker 'are\n' 3836*cda5da8dSAndroid Build Coastguard Worker 'class attributes; they are shared by instances. Instance ' 3837*cda5da8dSAndroid Build Coastguard Worker 'attributes\n' 3838*cda5da8dSAndroid Build Coastguard Worker 'can be set in a method with "self.name = value". Both class ' 3839*cda5da8dSAndroid Build Coastguard Worker 'and\n' 3840*cda5da8dSAndroid Build Coastguard Worker 'instance attributes are accessible through the notation ' 3841*cda5da8dSAndroid Build Coastguard Worker '“"self.name"”,\n' 3842*cda5da8dSAndroid Build Coastguard Worker 'and an instance attribute hides a class attribute with the same ' 3843*cda5da8dSAndroid Build Coastguard Worker 'name\n' 3844*cda5da8dSAndroid Build Coastguard Worker 'when accessed in this way. Class attributes can be used as ' 3845*cda5da8dSAndroid Build Coastguard Worker 'defaults\n' 3846*cda5da8dSAndroid Build Coastguard Worker 'for instance attributes, but using mutable values there can lead ' 3847*cda5da8dSAndroid Build Coastguard Worker 'to\n' 3848*cda5da8dSAndroid Build Coastguard Worker 'unexpected results. Descriptors can be used to create instance\n' 3849*cda5da8dSAndroid Build Coastguard Worker 'variables with different implementation details.\n' 3850*cda5da8dSAndroid Build Coastguard Worker '\n' 3851*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 3852*cda5da8dSAndroid Build Coastguard Worker '\n' 3853*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3115** - Metaclasses in Python 3000\n' 3854*cda5da8dSAndroid Build Coastguard Worker ' The proposal that changed the declaration of metaclasses to ' 3855*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3856*cda5da8dSAndroid Build Coastguard Worker ' current syntax, and the semantics for how classes with\n' 3857*cda5da8dSAndroid Build Coastguard Worker ' metaclasses are constructed.\n' 3858*cda5da8dSAndroid Build Coastguard Worker '\n' 3859*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3129** - Class Decorators\n' 3860*cda5da8dSAndroid Build Coastguard Worker ' The proposal that added class decorators. Function and ' 3861*cda5da8dSAndroid Build Coastguard Worker 'method\n' 3862*cda5da8dSAndroid Build Coastguard Worker ' decorators were introduced in **PEP 318**.\n' 3863*cda5da8dSAndroid Build Coastguard Worker '\n' 3864*cda5da8dSAndroid Build Coastguard Worker '\n' 3865*cda5da8dSAndroid Build Coastguard Worker 'Coroutines\n' 3866*cda5da8dSAndroid Build Coastguard Worker '==========\n' 3867*cda5da8dSAndroid Build Coastguard Worker '\n' 3868*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5.\n' 3869*cda5da8dSAndroid Build Coastguard Worker '\n' 3870*cda5da8dSAndroid Build Coastguard Worker '\n' 3871*cda5da8dSAndroid Build Coastguard Worker 'Coroutine function definition\n' 3872*cda5da8dSAndroid Build Coastguard Worker '-----------------------------\n' 3873*cda5da8dSAndroid Build Coastguard Worker '\n' 3874*cda5da8dSAndroid Build Coastguard Worker ' async_funcdef ::= [decorators] "async" "def" funcname "(" ' 3875*cda5da8dSAndroid Build Coastguard Worker '[parameter_list] ")"\n' 3876*cda5da8dSAndroid Build Coastguard Worker ' ["->" expression] ":" suite\n' 3877*cda5da8dSAndroid Build Coastguard Worker '\n' 3878*cda5da8dSAndroid Build Coastguard Worker 'Execution of Python coroutines can be suspended and resumed at ' 3879*cda5da8dSAndroid Build Coastguard Worker 'many\n' 3880*cda5da8dSAndroid Build Coastguard Worker 'points (see *coroutine*). "await" expressions, "async for" and ' 3881*cda5da8dSAndroid Build Coastguard Worker '"async\n' 3882*cda5da8dSAndroid Build Coastguard Worker 'with" can only be used in the body of a coroutine function.\n' 3883*cda5da8dSAndroid Build Coastguard Worker '\n' 3884*cda5da8dSAndroid Build Coastguard Worker 'Functions defined with "async def" syntax are always coroutine\n' 3885*cda5da8dSAndroid Build Coastguard Worker 'functions, even if they do not contain "await" or "async" ' 3886*cda5da8dSAndroid Build Coastguard Worker 'keywords.\n' 3887*cda5da8dSAndroid Build Coastguard Worker '\n' 3888*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use a "yield from" expression inside ' 3889*cda5da8dSAndroid Build Coastguard Worker 'the body\n' 3890*cda5da8dSAndroid Build Coastguard Worker 'of a coroutine function.\n' 3891*cda5da8dSAndroid Build Coastguard Worker '\n' 3892*cda5da8dSAndroid Build Coastguard Worker 'An example of a coroutine function:\n' 3893*cda5da8dSAndroid Build Coastguard Worker '\n' 3894*cda5da8dSAndroid Build Coastguard Worker ' async def func(param1, param2):\n' 3895*cda5da8dSAndroid Build Coastguard Worker ' do_stuff()\n' 3896*cda5da8dSAndroid Build Coastguard Worker ' await some_coroutine()\n' 3897*cda5da8dSAndroid Build Coastguard Worker '\n' 3898*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.7: "await" and "async" are now keywords;\n' 3899*cda5da8dSAndroid Build Coastguard Worker 'previously they were only treated as such inside the body of a\n' 3900*cda5da8dSAndroid Build Coastguard Worker 'coroutine function.\n' 3901*cda5da8dSAndroid Build Coastguard Worker '\n' 3902*cda5da8dSAndroid Build Coastguard Worker '\n' 3903*cda5da8dSAndroid Build Coastguard Worker 'The "async for" statement\n' 3904*cda5da8dSAndroid Build Coastguard Worker '-------------------------\n' 3905*cda5da8dSAndroid Build Coastguard Worker '\n' 3906*cda5da8dSAndroid Build Coastguard Worker ' async_for_stmt ::= "async" for_stmt\n' 3907*cda5da8dSAndroid Build Coastguard Worker '\n' 3908*cda5da8dSAndroid Build Coastguard Worker 'An *asynchronous iterable* provides an "__aiter__" method that\n' 3909*cda5da8dSAndroid Build Coastguard Worker 'directly returns an *asynchronous iterator*, which can call\n' 3910*cda5da8dSAndroid Build Coastguard Worker 'asynchronous code in its "__anext__" method.\n' 3911*cda5da8dSAndroid Build Coastguard Worker '\n' 3912*cda5da8dSAndroid Build Coastguard Worker 'The "async for" statement allows convenient iteration over\n' 3913*cda5da8dSAndroid Build Coastguard Worker 'asynchronous iterables.\n' 3914*cda5da8dSAndroid Build Coastguard Worker '\n' 3915*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 3916*cda5da8dSAndroid Build Coastguard Worker '\n' 3917*cda5da8dSAndroid Build Coastguard Worker ' async for TARGET in ITER:\n' 3918*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 3919*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 3920*cda5da8dSAndroid Build Coastguard Worker ' SUITE2\n' 3921*cda5da8dSAndroid Build Coastguard Worker '\n' 3922*cda5da8dSAndroid Build Coastguard Worker 'Is semantically equivalent to:\n' 3923*cda5da8dSAndroid Build Coastguard Worker '\n' 3924*cda5da8dSAndroid Build Coastguard Worker ' iter = (ITER)\n' 3925*cda5da8dSAndroid Build Coastguard Worker ' iter = type(iter).__aiter__(iter)\n' 3926*cda5da8dSAndroid Build Coastguard Worker ' running = True\n' 3927*cda5da8dSAndroid Build Coastguard Worker '\n' 3928*cda5da8dSAndroid Build Coastguard Worker ' while running:\n' 3929*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 3930*cda5da8dSAndroid Build Coastguard Worker ' TARGET = await type(iter).__anext__(iter)\n' 3931*cda5da8dSAndroid Build Coastguard Worker ' except StopAsyncIteration:\n' 3932*cda5da8dSAndroid Build Coastguard Worker ' running = False\n' 3933*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 3934*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 3935*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 3936*cda5da8dSAndroid Build Coastguard Worker ' SUITE2\n' 3937*cda5da8dSAndroid Build Coastguard Worker '\n' 3938*cda5da8dSAndroid Build Coastguard Worker 'See also "__aiter__()" and "__anext__()" for details.\n' 3939*cda5da8dSAndroid Build Coastguard Worker '\n' 3940*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use an "async for" statement outside ' 3941*cda5da8dSAndroid Build Coastguard Worker 'the body\n' 3942*cda5da8dSAndroid Build Coastguard Worker 'of a coroutine function.\n' 3943*cda5da8dSAndroid Build Coastguard Worker '\n' 3944*cda5da8dSAndroid Build Coastguard Worker '\n' 3945*cda5da8dSAndroid Build Coastguard Worker 'The "async with" statement\n' 3946*cda5da8dSAndroid Build Coastguard Worker '--------------------------\n' 3947*cda5da8dSAndroid Build Coastguard Worker '\n' 3948*cda5da8dSAndroid Build Coastguard Worker ' async_with_stmt ::= "async" with_stmt\n' 3949*cda5da8dSAndroid Build Coastguard Worker '\n' 3950*cda5da8dSAndroid Build Coastguard Worker 'An *asynchronous context manager* is a *context manager* that is ' 3951*cda5da8dSAndroid Build Coastguard Worker 'able\n' 3952*cda5da8dSAndroid Build Coastguard Worker 'to suspend execution in its *enter* and *exit* methods.\n' 3953*cda5da8dSAndroid Build Coastguard Worker '\n' 3954*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 3955*cda5da8dSAndroid Build Coastguard Worker '\n' 3956*cda5da8dSAndroid Build Coastguard Worker ' async with EXPRESSION as TARGET:\n' 3957*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 3958*cda5da8dSAndroid Build Coastguard Worker '\n' 3959*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 3960*cda5da8dSAndroid Build Coastguard Worker '\n' 3961*cda5da8dSAndroid Build Coastguard Worker ' manager = (EXPRESSION)\n' 3962*cda5da8dSAndroid Build Coastguard Worker ' aenter = type(manager).__aenter__\n' 3963*cda5da8dSAndroid Build Coastguard Worker ' aexit = type(manager).__aexit__\n' 3964*cda5da8dSAndroid Build Coastguard Worker ' value = await aenter(manager)\n' 3965*cda5da8dSAndroid Build Coastguard Worker ' hit_except = False\n' 3966*cda5da8dSAndroid Build Coastguard Worker '\n' 3967*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 3968*cda5da8dSAndroid Build Coastguard Worker ' TARGET = value\n' 3969*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 3970*cda5da8dSAndroid Build Coastguard Worker ' except:\n' 3971*cda5da8dSAndroid Build Coastguard Worker ' hit_except = True\n' 3972*cda5da8dSAndroid Build Coastguard Worker ' if not await aexit(manager, *sys.exc_info()):\n' 3973*cda5da8dSAndroid Build Coastguard Worker ' raise\n' 3974*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 3975*cda5da8dSAndroid Build Coastguard Worker ' if not hit_except:\n' 3976*cda5da8dSAndroid Build Coastguard Worker ' await aexit(manager, None, None, None)\n' 3977*cda5da8dSAndroid Build Coastguard Worker '\n' 3978*cda5da8dSAndroid Build Coastguard Worker 'See also "__aenter__()" and "__aexit__()" for details.\n' 3979*cda5da8dSAndroid Build Coastguard Worker '\n' 3980*cda5da8dSAndroid Build Coastguard Worker 'It is a "SyntaxError" to use an "async with" statement outside ' 3981*cda5da8dSAndroid Build Coastguard Worker 'the\n' 3982*cda5da8dSAndroid Build Coastguard Worker 'body of a coroutine function.\n' 3983*cda5da8dSAndroid Build Coastguard Worker '\n' 3984*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 3985*cda5da8dSAndroid Build Coastguard Worker '\n' 3986*cda5da8dSAndroid Build Coastguard Worker ' **PEP 492** - Coroutines with async and await syntax\n' 3987*cda5da8dSAndroid Build Coastguard Worker ' The proposal that made coroutines a proper standalone ' 3988*cda5da8dSAndroid Build Coastguard Worker 'concept in\n' 3989*cda5da8dSAndroid Build Coastguard Worker ' Python, and added supporting syntax.\n' 3990*cda5da8dSAndroid Build Coastguard Worker '\n' 3991*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 3992*cda5da8dSAndroid Build Coastguard Worker '\n' 3993*cda5da8dSAndroid Build Coastguard Worker '[1] The exception is propagated to the invocation stack unless ' 3994*cda5da8dSAndroid Build Coastguard Worker 'there\n' 3995*cda5da8dSAndroid Build Coastguard Worker ' is a "finally" clause which happens to raise another ' 3996*cda5da8dSAndroid Build Coastguard Worker 'exception.\n' 3997*cda5da8dSAndroid Build Coastguard Worker ' That new exception causes the old one to be lost.\n' 3998*cda5da8dSAndroid Build Coastguard Worker '\n' 3999*cda5da8dSAndroid Build Coastguard Worker '[2] In pattern matching, a sequence is defined as one of the\n' 4000*cda5da8dSAndroid Build Coastguard Worker ' following:\n' 4001*cda5da8dSAndroid Build Coastguard Worker '\n' 4002*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from "collections.abc.Sequence"\n' 4003*cda5da8dSAndroid Build Coastguard Worker '\n' 4004*cda5da8dSAndroid Build Coastguard Worker ' * a Python class that has been registered as\n' 4005*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.Sequence"\n' 4006*cda5da8dSAndroid Build Coastguard Worker '\n' 4007*cda5da8dSAndroid Build Coastguard Worker ' * a builtin class that has its (CPython) ' 4008*cda5da8dSAndroid Build Coastguard Worker '"Py_TPFLAGS_SEQUENCE"\n' 4009*cda5da8dSAndroid Build Coastguard Worker ' bit set\n' 4010*cda5da8dSAndroid Build Coastguard Worker '\n' 4011*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from any of the above\n' 4012*cda5da8dSAndroid Build Coastguard Worker '\n' 4013*cda5da8dSAndroid Build Coastguard Worker ' The following standard library classes are sequences:\n' 4014*cda5da8dSAndroid Build Coastguard Worker '\n' 4015*cda5da8dSAndroid Build Coastguard Worker ' * "array.array"\n' 4016*cda5da8dSAndroid Build Coastguard Worker '\n' 4017*cda5da8dSAndroid Build Coastguard Worker ' * "collections.deque"\n' 4018*cda5da8dSAndroid Build Coastguard Worker '\n' 4019*cda5da8dSAndroid Build Coastguard Worker ' * "list"\n' 4020*cda5da8dSAndroid Build Coastguard Worker '\n' 4021*cda5da8dSAndroid Build Coastguard Worker ' * "memoryview"\n' 4022*cda5da8dSAndroid Build Coastguard Worker '\n' 4023*cda5da8dSAndroid Build Coastguard Worker ' * "range"\n' 4024*cda5da8dSAndroid Build Coastguard Worker '\n' 4025*cda5da8dSAndroid Build Coastguard Worker ' * "tuple"\n' 4026*cda5da8dSAndroid Build Coastguard Worker '\n' 4027*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 4028*cda5da8dSAndroid Build Coastguard Worker '\n' 4029*cda5da8dSAndroid Build Coastguard Worker ' Subject values of type "str", "bytes", and "bytearray" do ' 4030*cda5da8dSAndroid Build Coastguard Worker 'not\n' 4031*cda5da8dSAndroid Build Coastguard Worker ' match sequence patterns.\n' 4032*cda5da8dSAndroid Build Coastguard Worker '\n' 4033*cda5da8dSAndroid Build Coastguard Worker '[3] In pattern matching, a mapping is defined as one of the ' 4034*cda5da8dSAndroid Build Coastguard Worker 'following:\n' 4035*cda5da8dSAndroid Build Coastguard Worker '\n' 4036*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from "collections.abc.Mapping"\n' 4037*cda5da8dSAndroid Build Coastguard Worker '\n' 4038*cda5da8dSAndroid Build Coastguard Worker ' * a Python class that has been registered as\n' 4039*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.Mapping"\n' 4040*cda5da8dSAndroid Build Coastguard Worker '\n' 4041*cda5da8dSAndroid Build Coastguard Worker ' * a builtin class that has its (CPython) ' 4042*cda5da8dSAndroid Build Coastguard Worker '"Py_TPFLAGS_MAPPING"\n' 4043*cda5da8dSAndroid Build Coastguard Worker ' bit set\n' 4044*cda5da8dSAndroid Build Coastguard Worker '\n' 4045*cda5da8dSAndroid Build Coastguard Worker ' * a class that inherits from any of the above\n' 4046*cda5da8dSAndroid Build Coastguard Worker '\n' 4047*cda5da8dSAndroid Build Coastguard Worker ' The standard library classes "dict" and ' 4048*cda5da8dSAndroid Build Coastguard Worker '"types.MappingProxyType"\n' 4049*cda5da8dSAndroid Build Coastguard Worker ' are mappings.\n' 4050*cda5da8dSAndroid Build Coastguard Worker '\n' 4051*cda5da8dSAndroid Build Coastguard Worker '[4] A string literal appearing as the first statement in the ' 4052*cda5da8dSAndroid Build Coastguard Worker 'function\n' 4053*cda5da8dSAndroid Build Coastguard Worker ' body is transformed into the function’s "__doc__" attribute ' 4054*cda5da8dSAndroid Build Coastguard Worker 'and\n' 4055*cda5da8dSAndroid Build Coastguard Worker ' therefore the function’s *docstring*.\n' 4056*cda5da8dSAndroid Build Coastguard Worker '\n' 4057*cda5da8dSAndroid Build Coastguard Worker '[5] A string literal appearing as the first statement in the ' 4058*cda5da8dSAndroid Build Coastguard Worker 'class\n' 4059*cda5da8dSAndroid Build Coastguard Worker ' body is transformed into the namespace’s "__doc__" item and\n' 4060*cda5da8dSAndroid Build Coastguard Worker ' therefore the class’s *docstring*.\n', 4061*cda5da8dSAndroid Build Coastguard Worker 'context-managers': 'With Statement Context Managers\n' 4062*cda5da8dSAndroid Build Coastguard Worker '*******************************\n' 4063*cda5da8dSAndroid Build Coastguard Worker '\n' 4064*cda5da8dSAndroid Build Coastguard Worker 'A *context manager* is an object that defines the ' 4065*cda5da8dSAndroid Build Coastguard Worker 'runtime context to\n' 4066*cda5da8dSAndroid Build Coastguard Worker 'be established when executing a "with" statement. The ' 4067*cda5da8dSAndroid Build Coastguard Worker 'context manager\n' 4068*cda5da8dSAndroid Build Coastguard Worker 'handles the entry into, and the exit from, the desired ' 4069*cda5da8dSAndroid Build Coastguard Worker 'runtime context\n' 4070*cda5da8dSAndroid Build Coastguard Worker 'for the execution of the block of code. Context ' 4071*cda5da8dSAndroid Build Coastguard Worker 'managers are normally\n' 4072*cda5da8dSAndroid Build Coastguard Worker 'invoked using the "with" statement (described in section ' 4073*cda5da8dSAndroid Build Coastguard Worker 'The with\n' 4074*cda5da8dSAndroid Build Coastguard Worker 'statement), but can also be used by directly invoking ' 4075*cda5da8dSAndroid Build Coastguard Worker 'their methods.\n' 4076*cda5da8dSAndroid Build Coastguard Worker '\n' 4077*cda5da8dSAndroid Build Coastguard Worker 'Typical uses of context managers include saving and ' 4078*cda5da8dSAndroid Build Coastguard Worker 'restoring various\n' 4079*cda5da8dSAndroid Build Coastguard Worker 'kinds of global state, locking and unlocking resources, ' 4080*cda5da8dSAndroid Build Coastguard Worker 'closing opened\n' 4081*cda5da8dSAndroid Build Coastguard Worker 'files, etc.\n' 4082*cda5da8dSAndroid Build Coastguard Worker '\n' 4083*cda5da8dSAndroid Build Coastguard Worker 'For more information on context managers, see Context ' 4084*cda5da8dSAndroid Build Coastguard Worker 'Manager Types.\n' 4085*cda5da8dSAndroid Build Coastguard Worker '\n' 4086*cda5da8dSAndroid Build Coastguard Worker 'object.__enter__(self)\n' 4087*cda5da8dSAndroid Build Coastguard Worker '\n' 4088*cda5da8dSAndroid Build Coastguard Worker ' Enter the runtime context related to this object. The ' 4089*cda5da8dSAndroid Build Coastguard Worker '"with"\n' 4090*cda5da8dSAndroid Build Coastguard Worker ' statement will bind this method’s return value to the ' 4091*cda5da8dSAndroid Build Coastguard Worker 'target(s)\n' 4092*cda5da8dSAndroid Build Coastguard Worker ' specified in the "as" clause of the statement, if ' 4093*cda5da8dSAndroid Build Coastguard Worker 'any.\n' 4094*cda5da8dSAndroid Build Coastguard Worker '\n' 4095*cda5da8dSAndroid Build Coastguard Worker 'object.__exit__(self, exc_type, exc_value, traceback)\n' 4096*cda5da8dSAndroid Build Coastguard Worker '\n' 4097*cda5da8dSAndroid Build Coastguard Worker ' Exit the runtime context related to this object. The ' 4098*cda5da8dSAndroid Build Coastguard Worker 'parameters\n' 4099*cda5da8dSAndroid Build Coastguard Worker ' describe the exception that caused the context to be ' 4100*cda5da8dSAndroid Build Coastguard Worker 'exited. If the\n' 4101*cda5da8dSAndroid Build Coastguard Worker ' context was exited without an exception, all three ' 4102*cda5da8dSAndroid Build Coastguard Worker 'arguments will\n' 4103*cda5da8dSAndroid Build Coastguard Worker ' be "None".\n' 4104*cda5da8dSAndroid Build Coastguard Worker '\n' 4105*cda5da8dSAndroid Build Coastguard Worker ' If an exception is supplied, and the method wishes to ' 4106*cda5da8dSAndroid Build Coastguard Worker 'suppress the\n' 4107*cda5da8dSAndroid Build Coastguard Worker ' exception (i.e., prevent it from being propagated), ' 4108*cda5da8dSAndroid Build Coastguard Worker 'it should\n' 4109*cda5da8dSAndroid Build Coastguard Worker ' return a true value. Otherwise, the exception will be ' 4110*cda5da8dSAndroid Build Coastguard Worker 'processed\n' 4111*cda5da8dSAndroid Build Coastguard Worker ' normally upon exit from this method.\n' 4112*cda5da8dSAndroid Build Coastguard Worker '\n' 4113*cda5da8dSAndroid Build Coastguard Worker ' Note that "__exit__()" methods should not reraise the ' 4114*cda5da8dSAndroid Build Coastguard Worker 'passed-in\n' 4115*cda5da8dSAndroid Build Coastguard Worker ' exception; this is the caller’s responsibility.\n' 4116*cda5da8dSAndroid Build Coastguard Worker '\n' 4117*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 4118*cda5da8dSAndroid Build Coastguard Worker '\n' 4119*cda5da8dSAndroid Build Coastguard Worker ' **PEP 343** - The “with” statement\n' 4120*cda5da8dSAndroid Build Coastguard Worker ' The specification, background, and examples for the ' 4121*cda5da8dSAndroid Build Coastguard Worker 'Python "with"\n' 4122*cda5da8dSAndroid Build Coastguard Worker ' statement.\n', 4123*cda5da8dSAndroid Build Coastguard Worker 'continue': 'The "continue" statement\n' 4124*cda5da8dSAndroid Build Coastguard Worker '************************\n' 4125*cda5da8dSAndroid Build Coastguard Worker '\n' 4126*cda5da8dSAndroid Build Coastguard Worker ' continue_stmt ::= "continue"\n' 4127*cda5da8dSAndroid Build Coastguard Worker '\n' 4128*cda5da8dSAndroid Build Coastguard Worker '"continue" may only occur syntactically nested in a "for" or ' 4129*cda5da8dSAndroid Build Coastguard Worker '"while"\n' 4130*cda5da8dSAndroid Build Coastguard Worker 'loop, but not nested in a function or class definition within ' 4131*cda5da8dSAndroid Build Coastguard Worker 'that\n' 4132*cda5da8dSAndroid Build Coastguard Worker 'loop. It continues with the next cycle of the nearest enclosing ' 4133*cda5da8dSAndroid Build Coastguard Worker 'loop.\n' 4134*cda5da8dSAndroid Build Coastguard Worker '\n' 4135*cda5da8dSAndroid Build Coastguard Worker 'When "continue" passes control out of a "try" statement with a\n' 4136*cda5da8dSAndroid Build Coastguard Worker '"finally" clause, that "finally" clause is executed before ' 4137*cda5da8dSAndroid Build Coastguard Worker 'really\n' 4138*cda5da8dSAndroid Build Coastguard Worker 'starting the next loop cycle.\n', 4139*cda5da8dSAndroid Build Coastguard Worker 'conversions': 'Arithmetic conversions\n' 4140*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 4141*cda5da8dSAndroid Build Coastguard Worker '\n' 4142*cda5da8dSAndroid Build Coastguard Worker 'When a description of an arithmetic operator below uses the ' 4143*cda5da8dSAndroid Build Coastguard Worker 'phrase\n' 4144*cda5da8dSAndroid Build Coastguard Worker '“the numeric arguments are converted to a common type”, this ' 4145*cda5da8dSAndroid Build Coastguard Worker 'means\n' 4146*cda5da8dSAndroid Build Coastguard Worker 'that the operator implementation for built-in types works as ' 4147*cda5da8dSAndroid Build Coastguard Worker 'follows:\n' 4148*cda5da8dSAndroid Build Coastguard Worker '\n' 4149*cda5da8dSAndroid Build Coastguard Worker '* If either argument is a complex number, the other is ' 4150*cda5da8dSAndroid Build Coastguard Worker 'converted to\n' 4151*cda5da8dSAndroid Build Coastguard Worker ' complex;\n' 4152*cda5da8dSAndroid Build Coastguard Worker '\n' 4153*cda5da8dSAndroid Build Coastguard Worker '* otherwise, if either argument is a floating point number, ' 4154*cda5da8dSAndroid Build Coastguard Worker 'the other\n' 4155*cda5da8dSAndroid Build Coastguard Worker ' is converted to floating point;\n' 4156*cda5da8dSAndroid Build Coastguard Worker '\n' 4157*cda5da8dSAndroid Build Coastguard Worker '* otherwise, both must be integers and no conversion is ' 4158*cda5da8dSAndroid Build Coastguard Worker 'necessary.\n' 4159*cda5da8dSAndroid Build Coastguard Worker '\n' 4160*cda5da8dSAndroid Build Coastguard Worker 'Some additional rules apply for certain operators (e.g., a ' 4161*cda5da8dSAndroid Build Coastguard Worker 'string as a\n' 4162*cda5da8dSAndroid Build Coastguard Worker 'left argument to the ‘%’ operator). Extensions must define ' 4163*cda5da8dSAndroid Build Coastguard Worker 'their own\n' 4164*cda5da8dSAndroid Build Coastguard Worker 'conversion behavior.\n', 4165*cda5da8dSAndroid Build Coastguard Worker 'customization': 'Basic customization\n' 4166*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 4167*cda5da8dSAndroid Build Coastguard Worker '\n' 4168*cda5da8dSAndroid Build Coastguard Worker 'object.__new__(cls[, ...])\n' 4169*cda5da8dSAndroid Build Coastguard Worker '\n' 4170*cda5da8dSAndroid Build Coastguard Worker ' Called to create a new instance of class *cls*. ' 4171*cda5da8dSAndroid Build Coastguard Worker '"__new__()" is a\n' 4172*cda5da8dSAndroid Build Coastguard Worker ' static method (special-cased so you need not declare it ' 4173*cda5da8dSAndroid Build Coastguard Worker 'as such)\n' 4174*cda5da8dSAndroid Build Coastguard Worker ' that takes the class of which an instance was requested ' 4175*cda5da8dSAndroid Build Coastguard Worker 'as its\n' 4176*cda5da8dSAndroid Build Coastguard Worker ' first argument. The remaining arguments are those ' 4177*cda5da8dSAndroid Build Coastguard Worker 'passed to the\n' 4178*cda5da8dSAndroid Build Coastguard Worker ' object constructor expression (the call to the class). ' 4179*cda5da8dSAndroid Build Coastguard Worker 'The return\n' 4180*cda5da8dSAndroid Build Coastguard Worker ' value of "__new__()" should be the new object instance ' 4181*cda5da8dSAndroid Build Coastguard Worker '(usually an\n' 4182*cda5da8dSAndroid Build Coastguard Worker ' instance of *cls*).\n' 4183*cda5da8dSAndroid Build Coastguard Worker '\n' 4184*cda5da8dSAndroid Build Coastguard Worker ' Typical implementations create a new instance of the ' 4185*cda5da8dSAndroid Build Coastguard Worker 'class by\n' 4186*cda5da8dSAndroid Build Coastguard Worker ' invoking the superclass’s "__new__()" method using\n' 4187*cda5da8dSAndroid Build Coastguard Worker ' "super().__new__(cls[, ...])" with appropriate arguments ' 4188*cda5da8dSAndroid Build Coastguard Worker 'and then\n' 4189*cda5da8dSAndroid Build Coastguard Worker ' modifying the newly created instance as necessary before ' 4190*cda5da8dSAndroid Build Coastguard Worker 'returning\n' 4191*cda5da8dSAndroid Build Coastguard Worker ' it.\n' 4192*cda5da8dSAndroid Build Coastguard Worker '\n' 4193*cda5da8dSAndroid Build Coastguard Worker ' If "__new__()" is invoked during object construction and ' 4194*cda5da8dSAndroid Build Coastguard Worker 'it returns\n' 4195*cda5da8dSAndroid Build Coastguard Worker ' an instance of *cls*, then the new instance’s ' 4196*cda5da8dSAndroid Build Coastguard Worker '"__init__()" method\n' 4197*cda5da8dSAndroid Build Coastguard Worker ' will be invoked like "__init__(self[, ...])", where ' 4198*cda5da8dSAndroid Build Coastguard Worker '*self* is the\n' 4199*cda5da8dSAndroid Build Coastguard Worker ' new instance and the remaining arguments are the same as ' 4200*cda5da8dSAndroid Build Coastguard Worker 'were\n' 4201*cda5da8dSAndroid Build Coastguard Worker ' passed to the object constructor.\n' 4202*cda5da8dSAndroid Build Coastguard Worker '\n' 4203*cda5da8dSAndroid Build Coastguard Worker ' If "__new__()" does not return an instance of *cls*, ' 4204*cda5da8dSAndroid Build Coastguard Worker 'then the new\n' 4205*cda5da8dSAndroid Build Coastguard Worker ' instance’s "__init__()" method will not be invoked.\n' 4206*cda5da8dSAndroid Build Coastguard Worker '\n' 4207*cda5da8dSAndroid Build Coastguard Worker ' "__new__()" is intended mainly to allow subclasses of ' 4208*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 4209*cda5da8dSAndroid Build Coastguard Worker ' types (like int, str, or tuple) to customize instance ' 4210*cda5da8dSAndroid Build Coastguard Worker 'creation. It\n' 4211*cda5da8dSAndroid Build Coastguard Worker ' is also commonly overridden in custom metaclasses in ' 4212*cda5da8dSAndroid Build Coastguard Worker 'order to\n' 4213*cda5da8dSAndroid Build Coastguard Worker ' customize class creation.\n' 4214*cda5da8dSAndroid Build Coastguard Worker '\n' 4215*cda5da8dSAndroid Build Coastguard Worker 'object.__init__(self[, ...])\n' 4216*cda5da8dSAndroid Build Coastguard Worker '\n' 4217*cda5da8dSAndroid Build Coastguard Worker ' Called after the instance has been created (by ' 4218*cda5da8dSAndroid Build Coastguard Worker '"__new__()"), but\n' 4219*cda5da8dSAndroid Build Coastguard Worker ' before it is returned to the caller. The arguments are ' 4220*cda5da8dSAndroid Build Coastguard Worker 'those\n' 4221*cda5da8dSAndroid Build Coastguard Worker ' passed to the class constructor expression. If a base ' 4222*cda5da8dSAndroid Build Coastguard Worker 'class has an\n' 4223*cda5da8dSAndroid Build Coastguard Worker ' "__init__()" method, the derived class’s "__init__()" ' 4224*cda5da8dSAndroid Build Coastguard Worker 'method, if\n' 4225*cda5da8dSAndroid Build Coastguard Worker ' any, must explicitly call it to ensure proper ' 4226*cda5da8dSAndroid Build Coastguard Worker 'initialization of the\n' 4227*cda5da8dSAndroid Build Coastguard Worker ' base class part of the instance; for example:\n' 4228*cda5da8dSAndroid Build Coastguard Worker ' "super().__init__([args...])".\n' 4229*cda5da8dSAndroid Build Coastguard Worker '\n' 4230*cda5da8dSAndroid Build Coastguard Worker ' Because "__new__()" and "__init__()" work together in ' 4231*cda5da8dSAndroid Build Coastguard Worker 'constructing\n' 4232*cda5da8dSAndroid Build Coastguard Worker ' objects ("__new__()" to create it, and "__init__()" to ' 4233*cda5da8dSAndroid Build Coastguard Worker 'customize\n' 4234*cda5da8dSAndroid Build Coastguard Worker ' it), no non-"None" value may be returned by ' 4235*cda5da8dSAndroid Build Coastguard Worker '"__init__()"; doing so\n' 4236*cda5da8dSAndroid Build Coastguard Worker ' will cause a "TypeError" to be raised at runtime.\n' 4237*cda5da8dSAndroid Build Coastguard Worker '\n' 4238*cda5da8dSAndroid Build Coastguard Worker 'object.__del__(self)\n' 4239*cda5da8dSAndroid Build Coastguard Worker '\n' 4240*cda5da8dSAndroid Build Coastguard Worker ' Called when the instance is about to be destroyed. This ' 4241*cda5da8dSAndroid Build Coastguard Worker 'is also\n' 4242*cda5da8dSAndroid Build Coastguard Worker ' called a finalizer or (improperly) a destructor. If a ' 4243*cda5da8dSAndroid Build Coastguard Worker 'base class\n' 4244*cda5da8dSAndroid Build Coastguard Worker ' has a "__del__()" method, the derived class’s ' 4245*cda5da8dSAndroid Build Coastguard Worker '"__del__()" method,\n' 4246*cda5da8dSAndroid Build Coastguard Worker ' if any, must explicitly call it to ensure proper ' 4247*cda5da8dSAndroid Build Coastguard Worker 'deletion of the\n' 4248*cda5da8dSAndroid Build Coastguard Worker ' base class part of the instance.\n' 4249*cda5da8dSAndroid Build Coastguard Worker '\n' 4250*cda5da8dSAndroid Build Coastguard Worker ' It is possible (though not recommended!) for the ' 4251*cda5da8dSAndroid Build Coastguard Worker '"__del__()" method\n' 4252*cda5da8dSAndroid Build Coastguard Worker ' to postpone destruction of the instance by creating a ' 4253*cda5da8dSAndroid Build Coastguard Worker 'new reference\n' 4254*cda5da8dSAndroid Build Coastguard Worker ' to it. This is called object *resurrection*. It is\n' 4255*cda5da8dSAndroid Build Coastguard Worker ' implementation-dependent whether "__del__()" is called a ' 4256*cda5da8dSAndroid Build Coastguard Worker 'second\n' 4257*cda5da8dSAndroid Build Coastguard Worker ' time when a resurrected object is about to be destroyed; ' 4258*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4259*cda5da8dSAndroid Build Coastguard Worker ' current *CPython* implementation only calls it once.\n' 4260*cda5da8dSAndroid Build Coastguard Worker '\n' 4261*cda5da8dSAndroid Build Coastguard Worker ' It is not guaranteed that "__del__()" methods are called ' 4262*cda5da8dSAndroid Build Coastguard Worker 'for\n' 4263*cda5da8dSAndroid Build Coastguard Worker ' objects that still exist when the interpreter exits.\n' 4264*cda5da8dSAndroid Build Coastguard Worker '\n' 4265*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 4266*cda5da8dSAndroid Build Coastguard Worker '\n' 4267*cda5da8dSAndroid Build Coastguard Worker ' "del x" doesn’t directly call "x.__del__()" — the ' 4268*cda5da8dSAndroid Build Coastguard Worker 'former\n' 4269*cda5da8dSAndroid Build Coastguard Worker ' decrements the reference count for "x" by one, and the ' 4270*cda5da8dSAndroid Build Coastguard Worker 'latter is\n' 4271*cda5da8dSAndroid Build Coastguard Worker ' only called when "x"’s reference count reaches zero.\n' 4272*cda5da8dSAndroid Build Coastguard Worker '\n' 4273*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** It is possible for a ' 4274*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 4275*cda5da8dSAndroid Build Coastguard Worker ' cycle to prevent the reference count of an object from ' 4276*cda5da8dSAndroid Build Coastguard Worker 'going to\n' 4277*cda5da8dSAndroid Build Coastguard Worker ' zero. In this case, the cycle will be later detected ' 4278*cda5da8dSAndroid Build Coastguard Worker 'and deleted\n' 4279*cda5da8dSAndroid Build Coastguard Worker ' by the *cyclic garbage collector*. A common cause of ' 4280*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 4281*cda5da8dSAndroid Build Coastguard Worker ' cycles is when an exception has been caught in a local ' 4282*cda5da8dSAndroid Build Coastguard Worker 'variable.\n' 4283*cda5da8dSAndroid Build Coastguard Worker ' The frame’s locals then reference the exception, which ' 4284*cda5da8dSAndroid Build Coastguard Worker 'references\n' 4285*cda5da8dSAndroid Build Coastguard Worker ' its own traceback, which references the locals of all ' 4286*cda5da8dSAndroid Build Coastguard Worker 'frames caught\n' 4287*cda5da8dSAndroid Build Coastguard Worker ' in the traceback.\n' 4288*cda5da8dSAndroid Build Coastguard Worker '\n' 4289*cda5da8dSAndroid Build Coastguard Worker ' See also: Documentation for the "gc" module.\n' 4290*cda5da8dSAndroid Build Coastguard Worker '\n' 4291*cda5da8dSAndroid Build Coastguard Worker ' Warning:\n' 4292*cda5da8dSAndroid Build Coastguard Worker '\n' 4293*cda5da8dSAndroid Build Coastguard Worker ' Due to the precarious circumstances under which ' 4294*cda5da8dSAndroid Build Coastguard Worker '"__del__()"\n' 4295*cda5da8dSAndroid Build Coastguard Worker ' methods are invoked, exceptions that occur during ' 4296*cda5da8dSAndroid Build Coastguard Worker 'their execution\n' 4297*cda5da8dSAndroid Build Coastguard Worker ' are ignored, and a warning is printed to "sys.stderr" ' 4298*cda5da8dSAndroid Build Coastguard Worker 'instead.\n' 4299*cda5da8dSAndroid Build Coastguard Worker ' In particular:\n' 4300*cda5da8dSAndroid Build Coastguard Worker '\n' 4301*cda5da8dSAndroid Build Coastguard Worker ' * "__del__()" can be invoked when arbitrary code is ' 4302*cda5da8dSAndroid Build Coastguard Worker 'being\n' 4303*cda5da8dSAndroid Build Coastguard Worker ' executed, including from any arbitrary thread. If ' 4304*cda5da8dSAndroid Build Coastguard Worker '"__del__()"\n' 4305*cda5da8dSAndroid Build Coastguard Worker ' needs to take a lock or invoke any other blocking ' 4306*cda5da8dSAndroid Build Coastguard Worker 'resource, it\n' 4307*cda5da8dSAndroid Build Coastguard Worker ' may deadlock as the resource may already be taken by ' 4308*cda5da8dSAndroid Build Coastguard Worker 'the code\n' 4309*cda5da8dSAndroid Build Coastguard Worker ' that gets interrupted to execute "__del__()".\n' 4310*cda5da8dSAndroid Build Coastguard Worker '\n' 4311*cda5da8dSAndroid Build Coastguard Worker ' * "__del__()" can be executed during interpreter ' 4312*cda5da8dSAndroid Build Coastguard Worker 'shutdown. As a\n' 4313*cda5da8dSAndroid Build Coastguard Worker ' consequence, the global variables it needs to access ' 4314*cda5da8dSAndroid Build Coastguard Worker '(including\n' 4315*cda5da8dSAndroid Build Coastguard Worker ' other modules) may already have been deleted or set ' 4316*cda5da8dSAndroid Build Coastguard Worker 'to "None".\n' 4317*cda5da8dSAndroid Build Coastguard Worker ' Python guarantees that globals whose name begins ' 4318*cda5da8dSAndroid Build Coastguard Worker 'with a single\n' 4319*cda5da8dSAndroid Build Coastguard Worker ' underscore are deleted from their module before ' 4320*cda5da8dSAndroid Build Coastguard Worker 'other globals\n' 4321*cda5da8dSAndroid Build Coastguard Worker ' are deleted; if no other references to such globals ' 4322*cda5da8dSAndroid Build Coastguard Worker 'exist, this\n' 4323*cda5da8dSAndroid Build Coastguard Worker ' may help in assuring that imported modules are still ' 4324*cda5da8dSAndroid Build Coastguard Worker 'available\n' 4325*cda5da8dSAndroid Build Coastguard Worker ' at the time when the "__del__()" method is called.\n' 4326*cda5da8dSAndroid Build Coastguard Worker '\n' 4327*cda5da8dSAndroid Build Coastguard Worker 'object.__repr__(self)\n' 4328*cda5da8dSAndroid Build Coastguard Worker '\n' 4329*cda5da8dSAndroid Build Coastguard Worker ' Called by the "repr()" built-in function to compute the ' 4330*cda5da8dSAndroid Build Coastguard Worker '“official”\n' 4331*cda5da8dSAndroid Build Coastguard Worker ' string representation of an object. If at all possible, ' 4332*cda5da8dSAndroid Build Coastguard Worker 'this\n' 4333*cda5da8dSAndroid Build Coastguard Worker ' should look like a valid Python expression that could be ' 4334*cda5da8dSAndroid Build Coastguard Worker 'used to\n' 4335*cda5da8dSAndroid Build Coastguard Worker ' recreate an object with the same value (given an ' 4336*cda5da8dSAndroid Build Coastguard Worker 'appropriate\n' 4337*cda5da8dSAndroid Build Coastguard Worker ' environment). If this is not possible, a string of the ' 4338*cda5da8dSAndroid Build Coastguard Worker 'form\n' 4339*cda5da8dSAndroid Build Coastguard Worker ' "<...some useful description...>" should be returned. ' 4340*cda5da8dSAndroid Build Coastguard Worker 'The return\n' 4341*cda5da8dSAndroid Build Coastguard Worker ' value must be a string object. If a class defines ' 4342*cda5da8dSAndroid Build Coastguard Worker '"__repr__()" but\n' 4343*cda5da8dSAndroid Build Coastguard Worker ' not "__str__()", then "__repr__()" is also used when an ' 4344*cda5da8dSAndroid Build Coastguard Worker '“informal”\n' 4345*cda5da8dSAndroid Build Coastguard Worker ' string representation of instances of that class is ' 4346*cda5da8dSAndroid Build Coastguard Worker 'required.\n' 4347*cda5da8dSAndroid Build Coastguard Worker '\n' 4348*cda5da8dSAndroid Build Coastguard Worker ' This is typically used for debugging, so it is important ' 4349*cda5da8dSAndroid Build Coastguard Worker 'that the\n' 4350*cda5da8dSAndroid Build Coastguard Worker ' representation is information-rich and unambiguous.\n' 4351*cda5da8dSAndroid Build Coastguard Worker '\n' 4352*cda5da8dSAndroid Build Coastguard Worker 'object.__str__(self)\n' 4353*cda5da8dSAndroid Build Coastguard Worker '\n' 4354*cda5da8dSAndroid Build Coastguard Worker ' Called by "str(object)" and the built-in functions ' 4355*cda5da8dSAndroid Build Coastguard Worker '"format()" and\n' 4356*cda5da8dSAndroid Build Coastguard Worker ' "print()" to compute the “informal” or nicely printable ' 4357*cda5da8dSAndroid Build Coastguard Worker 'string\n' 4358*cda5da8dSAndroid Build Coastguard Worker ' representation of an object. The return value must be a ' 4359*cda5da8dSAndroid Build Coastguard Worker 'string\n' 4360*cda5da8dSAndroid Build Coastguard Worker ' object.\n' 4361*cda5da8dSAndroid Build Coastguard Worker '\n' 4362*cda5da8dSAndroid Build Coastguard Worker ' This method differs from "object.__repr__()" in that ' 4363*cda5da8dSAndroid Build Coastguard Worker 'there is no\n' 4364*cda5da8dSAndroid Build Coastguard Worker ' expectation that "__str__()" return a valid Python ' 4365*cda5da8dSAndroid Build Coastguard Worker 'expression: a\n' 4366*cda5da8dSAndroid Build Coastguard Worker ' more convenient or concise representation can be used.\n' 4367*cda5da8dSAndroid Build Coastguard Worker '\n' 4368*cda5da8dSAndroid Build Coastguard Worker ' The default implementation defined by the built-in type ' 4369*cda5da8dSAndroid Build Coastguard Worker '"object"\n' 4370*cda5da8dSAndroid Build Coastguard Worker ' calls "object.__repr__()".\n' 4371*cda5da8dSAndroid Build Coastguard Worker '\n' 4372*cda5da8dSAndroid Build Coastguard Worker 'object.__bytes__(self)\n' 4373*cda5da8dSAndroid Build Coastguard Worker '\n' 4374*cda5da8dSAndroid Build Coastguard Worker ' Called by bytes to compute a byte-string representation ' 4375*cda5da8dSAndroid Build Coastguard Worker 'of an\n' 4376*cda5da8dSAndroid Build Coastguard Worker ' object. This should return a "bytes" object.\n' 4377*cda5da8dSAndroid Build Coastguard Worker '\n' 4378*cda5da8dSAndroid Build Coastguard Worker 'object.__format__(self, format_spec)\n' 4379*cda5da8dSAndroid Build Coastguard Worker '\n' 4380*cda5da8dSAndroid Build Coastguard Worker ' Called by the "format()" built-in function, and by ' 4381*cda5da8dSAndroid Build Coastguard Worker 'extension,\n' 4382*cda5da8dSAndroid Build Coastguard Worker ' evaluation of formatted string literals and the ' 4383*cda5da8dSAndroid Build Coastguard Worker '"str.format()"\n' 4384*cda5da8dSAndroid Build Coastguard Worker ' method, to produce a “formatted” string representation ' 4385*cda5da8dSAndroid Build Coastguard Worker 'of an\n' 4386*cda5da8dSAndroid Build Coastguard Worker ' object. The *format_spec* argument is a string that ' 4387*cda5da8dSAndroid Build Coastguard Worker 'contains a\n' 4388*cda5da8dSAndroid Build Coastguard Worker ' description of the formatting options desired. The ' 4389*cda5da8dSAndroid Build Coastguard Worker 'interpretation\n' 4390*cda5da8dSAndroid Build Coastguard Worker ' of the *format_spec* argument is up to the type ' 4391*cda5da8dSAndroid Build Coastguard Worker 'implementing\n' 4392*cda5da8dSAndroid Build Coastguard Worker ' "__format__()", however most classes will either ' 4393*cda5da8dSAndroid Build Coastguard Worker 'delegate\n' 4394*cda5da8dSAndroid Build Coastguard Worker ' formatting to one of the built-in types, or use a ' 4395*cda5da8dSAndroid Build Coastguard Worker 'similar\n' 4396*cda5da8dSAndroid Build Coastguard Worker ' formatting option syntax.\n' 4397*cda5da8dSAndroid Build Coastguard Worker '\n' 4398*cda5da8dSAndroid Build Coastguard Worker ' See Format Specification Mini-Language for a description ' 4399*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 4400*cda5da8dSAndroid Build Coastguard Worker ' standard formatting syntax.\n' 4401*cda5da8dSAndroid Build Coastguard Worker '\n' 4402*cda5da8dSAndroid Build Coastguard Worker ' The return value must be a string object.\n' 4403*cda5da8dSAndroid Build Coastguard Worker '\n' 4404*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.4: The __format__ method of ' 4405*cda5da8dSAndroid Build Coastguard Worker '"object" itself\n' 4406*cda5da8dSAndroid Build Coastguard Worker ' raises a "TypeError" if passed any non-empty string.\n' 4407*cda5da8dSAndroid Build Coastguard Worker '\n' 4408*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: "object.__format__(x, \'\')" is ' 4409*cda5da8dSAndroid Build Coastguard Worker 'now\n' 4410*cda5da8dSAndroid Build Coastguard Worker ' equivalent to "str(x)" rather than "format(str(x), ' 4411*cda5da8dSAndroid Build Coastguard Worker '\'\')".\n' 4412*cda5da8dSAndroid Build Coastguard Worker '\n' 4413*cda5da8dSAndroid Build Coastguard Worker 'object.__lt__(self, other)\n' 4414*cda5da8dSAndroid Build Coastguard Worker 'object.__le__(self, other)\n' 4415*cda5da8dSAndroid Build Coastguard Worker 'object.__eq__(self, other)\n' 4416*cda5da8dSAndroid Build Coastguard Worker 'object.__ne__(self, other)\n' 4417*cda5da8dSAndroid Build Coastguard Worker 'object.__gt__(self, other)\n' 4418*cda5da8dSAndroid Build Coastguard Worker 'object.__ge__(self, other)\n' 4419*cda5da8dSAndroid Build Coastguard Worker '\n' 4420*cda5da8dSAndroid Build Coastguard Worker ' These are the so-called “rich comparison” methods. The\n' 4421*cda5da8dSAndroid Build Coastguard Worker ' correspondence between operator symbols and method names ' 4422*cda5da8dSAndroid Build Coastguard Worker 'is as\n' 4423*cda5da8dSAndroid Build Coastguard Worker ' follows: "x<y" calls "x.__lt__(y)", "x<=y" calls ' 4424*cda5da8dSAndroid Build Coastguard Worker '"x.__le__(y)",\n' 4425*cda5da8dSAndroid Build Coastguard Worker ' "x==y" calls "x.__eq__(y)", "x!=y" calls "x.__ne__(y)", ' 4426*cda5da8dSAndroid Build Coastguard Worker '"x>y" calls\n' 4427*cda5da8dSAndroid Build Coastguard Worker ' "x.__gt__(y)", and "x>=y" calls "x.__ge__(y)".\n' 4428*cda5da8dSAndroid Build Coastguard Worker '\n' 4429*cda5da8dSAndroid Build Coastguard Worker ' A rich comparison method may return the singleton ' 4430*cda5da8dSAndroid Build Coastguard Worker '"NotImplemented"\n' 4431*cda5da8dSAndroid Build Coastguard Worker ' if it does not implement the operation for a given pair ' 4432*cda5da8dSAndroid Build Coastguard Worker 'of\n' 4433*cda5da8dSAndroid Build Coastguard Worker ' arguments. By convention, "False" and "True" are ' 4434*cda5da8dSAndroid Build Coastguard Worker 'returned for a\n' 4435*cda5da8dSAndroid Build Coastguard Worker ' successful comparison. However, these methods can return ' 4436*cda5da8dSAndroid Build Coastguard Worker 'any value,\n' 4437*cda5da8dSAndroid Build Coastguard Worker ' so if the comparison operator is used in a Boolean ' 4438*cda5da8dSAndroid Build Coastguard Worker 'context (e.g.,\n' 4439*cda5da8dSAndroid Build Coastguard Worker ' in the condition of an "if" statement), Python will call ' 4440*cda5da8dSAndroid Build Coastguard Worker '"bool()"\n' 4441*cda5da8dSAndroid Build Coastguard Worker ' on the value to determine if the result is true or ' 4442*cda5da8dSAndroid Build Coastguard Worker 'false.\n' 4443*cda5da8dSAndroid Build Coastguard Worker '\n' 4444*cda5da8dSAndroid Build Coastguard Worker ' By default, "object" implements "__eq__()" by using ' 4445*cda5da8dSAndroid Build Coastguard Worker '"is", returning\n' 4446*cda5da8dSAndroid Build Coastguard Worker ' "NotImplemented" in the case of a false comparison: ' 4447*cda5da8dSAndroid Build Coastguard Worker '"True if x is y\n' 4448*cda5da8dSAndroid Build Coastguard Worker ' else NotImplemented". For "__ne__()", by default it ' 4449*cda5da8dSAndroid Build Coastguard Worker 'delegates to\n' 4450*cda5da8dSAndroid Build Coastguard Worker ' "__eq__()" and inverts the result unless it is ' 4451*cda5da8dSAndroid Build Coastguard Worker '"NotImplemented".\n' 4452*cda5da8dSAndroid Build Coastguard Worker ' There are no other implied relationships among the ' 4453*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 4454*cda5da8dSAndroid Build Coastguard Worker ' operators or default implementations; for example, the ' 4455*cda5da8dSAndroid Build Coastguard Worker 'truth of\n' 4456*cda5da8dSAndroid Build Coastguard Worker ' "(x<y or x==y)" does not imply "x<=y". To automatically ' 4457*cda5da8dSAndroid Build Coastguard Worker 'generate\n' 4458*cda5da8dSAndroid Build Coastguard Worker ' ordering operations from a single root operation, see\n' 4459*cda5da8dSAndroid Build Coastguard Worker ' "functools.total_ordering()".\n' 4460*cda5da8dSAndroid Build Coastguard Worker '\n' 4461*cda5da8dSAndroid Build Coastguard Worker ' See the paragraph on "__hash__()" for some important ' 4462*cda5da8dSAndroid Build Coastguard Worker 'notes on\n' 4463*cda5da8dSAndroid Build Coastguard Worker ' creating *hashable* objects which support custom ' 4464*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 4465*cda5da8dSAndroid Build Coastguard Worker ' operations and are usable as dictionary keys.\n' 4466*cda5da8dSAndroid Build Coastguard Worker '\n' 4467*cda5da8dSAndroid Build Coastguard Worker ' There are no swapped-argument versions of these methods ' 4468*cda5da8dSAndroid Build Coastguard Worker '(to be used\n' 4469*cda5da8dSAndroid Build Coastguard Worker ' when the left argument does not support the operation ' 4470*cda5da8dSAndroid Build Coastguard Worker 'but the right\n' 4471*cda5da8dSAndroid Build Coastguard Worker ' argument does); rather, "__lt__()" and "__gt__()" are ' 4472*cda5da8dSAndroid Build Coastguard Worker 'each other’s\n' 4473*cda5da8dSAndroid Build Coastguard Worker ' reflection, "__le__()" and "__ge__()" are each other’s ' 4474*cda5da8dSAndroid Build Coastguard Worker 'reflection,\n' 4475*cda5da8dSAndroid Build Coastguard Worker ' and "__eq__()" and "__ne__()" are their own reflection. ' 4476*cda5da8dSAndroid Build Coastguard Worker 'If the\n' 4477*cda5da8dSAndroid Build Coastguard Worker ' operands are of different types, and right operand’s ' 4478*cda5da8dSAndroid Build Coastguard Worker 'type is a\n' 4479*cda5da8dSAndroid Build Coastguard Worker ' direct or indirect subclass of the left operand’s type, ' 4480*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4481*cda5da8dSAndroid Build Coastguard Worker ' reflected method of the right operand has priority, ' 4482*cda5da8dSAndroid Build Coastguard Worker 'otherwise the\n' 4483*cda5da8dSAndroid Build Coastguard Worker ' left operand’s method has priority. Virtual subclassing ' 4484*cda5da8dSAndroid Build Coastguard Worker 'is not\n' 4485*cda5da8dSAndroid Build Coastguard Worker ' considered.\n' 4486*cda5da8dSAndroid Build Coastguard Worker '\n' 4487*cda5da8dSAndroid Build Coastguard Worker 'object.__hash__(self)\n' 4488*cda5da8dSAndroid Build Coastguard Worker '\n' 4489*cda5da8dSAndroid Build Coastguard Worker ' Called by built-in function "hash()" and for operations ' 4490*cda5da8dSAndroid Build Coastguard Worker 'on members\n' 4491*cda5da8dSAndroid Build Coastguard Worker ' of hashed collections including "set", "frozenset", and ' 4492*cda5da8dSAndroid Build Coastguard Worker '"dict".\n' 4493*cda5da8dSAndroid Build Coastguard Worker ' The "__hash__()" method should return an integer. The ' 4494*cda5da8dSAndroid Build Coastguard Worker 'only required\n' 4495*cda5da8dSAndroid Build Coastguard Worker ' property is that objects which compare equal have the ' 4496*cda5da8dSAndroid Build Coastguard Worker 'same hash\n' 4497*cda5da8dSAndroid Build Coastguard Worker ' value; it is advised to mix together the hash values of ' 4498*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4499*cda5da8dSAndroid Build Coastguard Worker ' components of the object that also play a part in ' 4500*cda5da8dSAndroid Build Coastguard Worker 'comparison of\n' 4501*cda5da8dSAndroid Build Coastguard Worker ' objects by packing them into a tuple and hashing the ' 4502*cda5da8dSAndroid Build Coastguard Worker 'tuple.\n' 4503*cda5da8dSAndroid Build Coastguard Worker ' Example:\n' 4504*cda5da8dSAndroid Build Coastguard Worker '\n' 4505*cda5da8dSAndroid Build Coastguard Worker ' def __hash__(self):\n' 4506*cda5da8dSAndroid Build Coastguard Worker ' return hash((self.name, self.nick, self.color))\n' 4507*cda5da8dSAndroid Build Coastguard Worker '\n' 4508*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 4509*cda5da8dSAndroid Build Coastguard Worker '\n' 4510*cda5da8dSAndroid Build Coastguard Worker ' "hash()" truncates the value returned from an object’s ' 4511*cda5da8dSAndroid Build Coastguard Worker 'custom\n' 4512*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()" method to the size of a "Py_ssize_t". ' 4513*cda5da8dSAndroid Build Coastguard Worker 'This is\n' 4514*cda5da8dSAndroid Build Coastguard Worker ' typically 8 bytes on 64-bit builds and 4 bytes on ' 4515*cda5da8dSAndroid Build Coastguard Worker '32-bit builds.\n' 4516*cda5da8dSAndroid Build Coastguard Worker ' If an object’s "__hash__()" must interoperate on ' 4517*cda5da8dSAndroid Build Coastguard Worker 'builds of\n' 4518*cda5da8dSAndroid Build Coastguard Worker ' different bit sizes, be sure to check the width on all ' 4519*cda5da8dSAndroid Build Coastguard Worker 'supported\n' 4520*cda5da8dSAndroid Build Coastguard Worker ' builds. An easy way to do this is with "python -c ' 4521*cda5da8dSAndroid Build Coastguard Worker '"import sys;\n' 4522*cda5da8dSAndroid Build Coastguard Worker ' print(sys.hash_info.width)"".\n' 4523*cda5da8dSAndroid Build Coastguard Worker '\n' 4524*cda5da8dSAndroid Build Coastguard Worker ' If a class does not define an "__eq__()" method it ' 4525*cda5da8dSAndroid Build Coastguard Worker 'should not\n' 4526*cda5da8dSAndroid Build Coastguard Worker ' define a "__hash__()" operation either; if it defines ' 4527*cda5da8dSAndroid Build Coastguard Worker '"__eq__()"\n' 4528*cda5da8dSAndroid Build Coastguard Worker ' but not "__hash__()", its instances will not be usable ' 4529*cda5da8dSAndroid Build Coastguard Worker 'as items in\n' 4530*cda5da8dSAndroid Build Coastguard Worker ' hashable collections. If a class defines mutable ' 4531*cda5da8dSAndroid Build Coastguard Worker 'objects and\n' 4532*cda5da8dSAndroid Build Coastguard Worker ' implements an "__eq__()" method, it should not ' 4533*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 4534*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()", since the implementation of *hashable* ' 4535*cda5da8dSAndroid Build Coastguard Worker 'collections\n' 4536*cda5da8dSAndroid Build Coastguard Worker ' requires that a key’s hash value is immutable (if the ' 4537*cda5da8dSAndroid Build Coastguard Worker 'object’s hash\n' 4538*cda5da8dSAndroid Build Coastguard Worker ' value changes, it will be in the wrong hash bucket).\n' 4539*cda5da8dSAndroid Build Coastguard Worker '\n' 4540*cda5da8dSAndroid Build Coastguard Worker ' User-defined classes have "__eq__()" and "__hash__()" ' 4541*cda5da8dSAndroid Build Coastguard Worker 'methods by\n' 4542*cda5da8dSAndroid Build Coastguard Worker ' default; with them, all objects compare unequal (except ' 4543*cda5da8dSAndroid Build Coastguard Worker 'with\n' 4544*cda5da8dSAndroid Build Coastguard Worker ' themselves) and "x.__hash__()" returns an appropriate ' 4545*cda5da8dSAndroid Build Coastguard Worker 'value such\n' 4546*cda5da8dSAndroid Build Coastguard Worker ' that "x == y" implies both that "x is y" and "hash(x) == ' 4547*cda5da8dSAndroid Build Coastguard Worker 'hash(y)".\n' 4548*cda5da8dSAndroid Build Coastguard Worker '\n' 4549*cda5da8dSAndroid Build Coastguard Worker ' A class that overrides "__eq__()" and does not define ' 4550*cda5da8dSAndroid Build Coastguard Worker '"__hash__()"\n' 4551*cda5da8dSAndroid Build Coastguard Worker ' will have its "__hash__()" implicitly set to "None". ' 4552*cda5da8dSAndroid Build Coastguard Worker 'When the\n' 4553*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()" method of a class is "None", instances of ' 4554*cda5da8dSAndroid Build Coastguard Worker 'the class\n' 4555*cda5da8dSAndroid Build Coastguard Worker ' will raise an appropriate "TypeError" when a program ' 4556*cda5da8dSAndroid Build Coastguard Worker 'attempts to\n' 4557*cda5da8dSAndroid Build Coastguard Worker ' retrieve their hash value, and will also be correctly ' 4558*cda5da8dSAndroid Build Coastguard Worker 'identified as\n' 4559*cda5da8dSAndroid Build Coastguard Worker ' unhashable when checking "isinstance(obj,\n' 4560*cda5da8dSAndroid Build Coastguard Worker ' collections.abc.Hashable)".\n' 4561*cda5da8dSAndroid Build Coastguard Worker '\n' 4562*cda5da8dSAndroid Build Coastguard Worker ' If a class that overrides "__eq__()" needs to retain ' 4563*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4564*cda5da8dSAndroid Build Coastguard Worker ' implementation of "__hash__()" from a parent class, the ' 4565*cda5da8dSAndroid Build Coastguard Worker 'interpreter\n' 4566*cda5da8dSAndroid Build Coastguard Worker ' must be told this explicitly by setting "__hash__ =\n' 4567*cda5da8dSAndroid Build Coastguard Worker ' <ParentClass>.__hash__".\n' 4568*cda5da8dSAndroid Build Coastguard Worker '\n' 4569*cda5da8dSAndroid Build Coastguard Worker ' If a class that does not override "__eq__()" wishes to ' 4570*cda5da8dSAndroid Build Coastguard Worker 'suppress\n' 4571*cda5da8dSAndroid Build Coastguard Worker ' hash support, it should include "__hash__ = None" in the ' 4572*cda5da8dSAndroid Build Coastguard Worker 'class\n' 4573*cda5da8dSAndroid Build Coastguard Worker ' definition. A class which defines its own "__hash__()" ' 4574*cda5da8dSAndroid Build Coastguard Worker 'that\n' 4575*cda5da8dSAndroid Build Coastguard Worker ' explicitly raises a "TypeError" would be incorrectly ' 4576*cda5da8dSAndroid Build Coastguard Worker 'identified as\n' 4577*cda5da8dSAndroid Build Coastguard Worker ' hashable by an "isinstance(obj, ' 4578*cda5da8dSAndroid Build Coastguard Worker 'collections.abc.Hashable)" call.\n' 4579*cda5da8dSAndroid Build Coastguard Worker '\n' 4580*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 4581*cda5da8dSAndroid Build Coastguard Worker '\n' 4582*cda5da8dSAndroid Build Coastguard Worker ' By default, the "__hash__()" values of str and bytes ' 4583*cda5da8dSAndroid Build Coastguard Worker 'objects are\n' 4584*cda5da8dSAndroid Build Coastguard Worker ' “salted” with an unpredictable random value. Although ' 4585*cda5da8dSAndroid Build Coastguard Worker 'they\n' 4586*cda5da8dSAndroid Build Coastguard Worker ' remain constant within an individual Python process, ' 4587*cda5da8dSAndroid Build Coastguard Worker 'they are not\n' 4588*cda5da8dSAndroid Build Coastguard Worker ' predictable between repeated invocations of ' 4589*cda5da8dSAndroid Build Coastguard Worker 'Python.This is\n' 4590*cda5da8dSAndroid Build Coastguard Worker ' intended to provide protection against a ' 4591*cda5da8dSAndroid Build Coastguard Worker 'denial-of-service caused\n' 4592*cda5da8dSAndroid Build Coastguard Worker ' by carefully chosen inputs that exploit the worst ' 4593*cda5da8dSAndroid Build Coastguard Worker 'case\n' 4594*cda5da8dSAndroid Build Coastguard Worker ' performance of a dict insertion, O(n^2) complexity. ' 4595*cda5da8dSAndroid Build Coastguard Worker 'See\n' 4596*cda5da8dSAndroid Build Coastguard Worker ' http://ocert.org/advisories/ocert-2011-003.html for\n' 4597*cda5da8dSAndroid Build Coastguard Worker ' details.Changing hash values affects the iteration ' 4598*cda5da8dSAndroid Build Coastguard Worker 'order of sets.\n' 4599*cda5da8dSAndroid Build Coastguard Worker ' Python has never made guarantees about this ordering ' 4600*cda5da8dSAndroid Build Coastguard Worker '(and it\n' 4601*cda5da8dSAndroid Build Coastguard Worker ' typically varies between 32-bit and 64-bit builds).See ' 4602*cda5da8dSAndroid Build Coastguard Worker 'also\n' 4603*cda5da8dSAndroid Build Coastguard Worker ' "PYTHONHASHSEED".\n' 4604*cda5da8dSAndroid Build Coastguard Worker '\n' 4605*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.3: Hash randomization is enabled by ' 4606*cda5da8dSAndroid Build Coastguard Worker 'default.\n' 4607*cda5da8dSAndroid Build Coastguard Worker '\n' 4608*cda5da8dSAndroid Build Coastguard Worker 'object.__bool__(self)\n' 4609*cda5da8dSAndroid Build Coastguard Worker '\n' 4610*cda5da8dSAndroid Build Coastguard Worker ' Called to implement truth value testing and the built-in ' 4611*cda5da8dSAndroid Build Coastguard Worker 'operation\n' 4612*cda5da8dSAndroid Build Coastguard Worker ' "bool()"; should return "False" or "True". When this ' 4613*cda5da8dSAndroid Build Coastguard Worker 'method is not\n' 4614*cda5da8dSAndroid Build Coastguard Worker ' defined, "__len__()" is called, if it is defined, and ' 4615*cda5da8dSAndroid Build Coastguard Worker 'the object is\n' 4616*cda5da8dSAndroid Build Coastguard Worker ' considered true if its result is nonzero. If a class ' 4617*cda5da8dSAndroid Build Coastguard Worker 'defines\n' 4618*cda5da8dSAndroid Build Coastguard Worker ' neither "__len__()" nor "__bool__()", all its instances ' 4619*cda5da8dSAndroid Build Coastguard Worker 'are\n' 4620*cda5da8dSAndroid Build Coastguard Worker ' considered true.\n', 4621*cda5da8dSAndroid Build Coastguard Worker 'debugger': '"pdb" — The Python Debugger\n' 4622*cda5da8dSAndroid Build Coastguard Worker '***************************\n' 4623*cda5da8dSAndroid Build Coastguard Worker '\n' 4624*cda5da8dSAndroid Build Coastguard Worker '**Source code:** Lib/pdb.py\n' 4625*cda5da8dSAndroid Build Coastguard Worker '\n' 4626*cda5da8dSAndroid Build Coastguard Worker '======================================================================\n' 4627*cda5da8dSAndroid Build Coastguard Worker '\n' 4628*cda5da8dSAndroid Build Coastguard Worker 'The module "pdb" defines an interactive source code debugger ' 4629*cda5da8dSAndroid Build Coastguard Worker 'for\n' 4630*cda5da8dSAndroid Build Coastguard Worker 'Python programs. It supports setting (conditional) breakpoints ' 4631*cda5da8dSAndroid Build Coastguard Worker 'and\n' 4632*cda5da8dSAndroid Build Coastguard Worker 'single stepping at the source line level, inspection of stack ' 4633*cda5da8dSAndroid Build Coastguard Worker 'frames,\n' 4634*cda5da8dSAndroid Build Coastguard Worker 'source code listing, and evaluation of arbitrary Python code in ' 4635*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4636*cda5da8dSAndroid Build Coastguard Worker 'context of any stack frame. It also supports post-mortem ' 4637*cda5da8dSAndroid Build Coastguard Worker 'debugging\n' 4638*cda5da8dSAndroid Build Coastguard Worker 'and can be called under program control.\n' 4639*cda5da8dSAndroid Build Coastguard Worker '\n' 4640*cda5da8dSAndroid Build Coastguard Worker 'The debugger is extensible – it is actually defined as the ' 4641*cda5da8dSAndroid Build Coastguard Worker 'class\n' 4642*cda5da8dSAndroid Build Coastguard Worker '"Pdb". This is currently undocumented but easily understood by ' 4643*cda5da8dSAndroid Build Coastguard Worker 'reading\n' 4644*cda5da8dSAndroid Build Coastguard Worker 'the source. The extension interface uses the modules "bdb" and ' 4645*cda5da8dSAndroid Build Coastguard Worker '"cmd".\n' 4646*cda5da8dSAndroid Build Coastguard Worker '\n' 4647*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 4648*cda5da8dSAndroid Build Coastguard Worker '\n' 4649*cda5da8dSAndroid Build Coastguard Worker ' Module "faulthandler"\n' 4650*cda5da8dSAndroid Build Coastguard Worker ' Used to dump Python tracebacks explicitly, on a fault, ' 4651*cda5da8dSAndroid Build Coastguard Worker 'after a\n' 4652*cda5da8dSAndroid Build Coastguard Worker ' timeout, or on a user signal.\n' 4653*cda5da8dSAndroid Build Coastguard Worker '\n' 4654*cda5da8dSAndroid Build Coastguard Worker ' Module "traceback"\n' 4655*cda5da8dSAndroid Build Coastguard Worker ' Standard interface to extract, format and print stack ' 4656*cda5da8dSAndroid Build Coastguard Worker 'traces of\n' 4657*cda5da8dSAndroid Build Coastguard Worker ' Python programs.\n' 4658*cda5da8dSAndroid Build Coastguard Worker '\n' 4659*cda5da8dSAndroid Build Coastguard Worker 'The typical usage to break into the debugger is to insert:\n' 4660*cda5da8dSAndroid Build Coastguard Worker '\n' 4661*cda5da8dSAndroid Build Coastguard Worker ' import pdb; pdb.set_trace()\n' 4662*cda5da8dSAndroid Build Coastguard Worker '\n' 4663*cda5da8dSAndroid Build Coastguard Worker 'Or:\n' 4664*cda5da8dSAndroid Build Coastguard Worker '\n' 4665*cda5da8dSAndroid Build Coastguard Worker ' breakpoint()\n' 4666*cda5da8dSAndroid Build Coastguard Worker '\n' 4667*cda5da8dSAndroid Build Coastguard Worker 'at the location you want to break into the debugger, and then ' 4668*cda5da8dSAndroid Build Coastguard Worker 'run the\n' 4669*cda5da8dSAndroid Build Coastguard Worker 'program. You can then step through the code following this ' 4670*cda5da8dSAndroid Build Coastguard Worker 'statement,\n' 4671*cda5da8dSAndroid Build Coastguard Worker 'and continue running without the debugger using the "continue"\n' 4672*cda5da8dSAndroid Build Coastguard Worker 'command.\n' 4673*cda5da8dSAndroid Build Coastguard Worker '\n' 4674*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.7: The built-in "breakpoint()", when called ' 4675*cda5da8dSAndroid Build Coastguard Worker 'with\n' 4676*cda5da8dSAndroid Build Coastguard Worker 'defaults, can be used instead of "import pdb; pdb.set_trace()".\n' 4677*cda5da8dSAndroid Build Coastguard Worker '\n' 4678*cda5da8dSAndroid Build Coastguard Worker ' def double(x):\n' 4679*cda5da8dSAndroid Build Coastguard Worker ' breakpoint()\n' 4680*cda5da8dSAndroid Build Coastguard Worker ' return x * 2\n' 4681*cda5da8dSAndroid Build Coastguard Worker ' val = 3\n' 4682*cda5da8dSAndroid Build Coastguard Worker ' print(f"{val} * 2 is {double(val)}")\n' 4683*cda5da8dSAndroid Build Coastguard Worker '\n' 4684*cda5da8dSAndroid Build Coastguard Worker 'The debugger’s prompt is "(Pdb)", which is the indicator that ' 4685*cda5da8dSAndroid Build Coastguard Worker 'you are\n' 4686*cda5da8dSAndroid Build Coastguard Worker 'in debug mode:\n' 4687*cda5da8dSAndroid Build Coastguard Worker '\n' 4688*cda5da8dSAndroid Build Coastguard Worker ' > ...(3)double()\n' 4689*cda5da8dSAndroid Build Coastguard Worker ' -> return x * 2\n' 4690*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) p x\n' 4691*cda5da8dSAndroid Build Coastguard Worker ' 3\n' 4692*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) continue\n' 4693*cda5da8dSAndroid Build Coastguard Worker ' 3 * 2 is 6\n' 4694*cda5da8dSAndroid Build Coastguard Worker '\n' 4695*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.3: Tab-completion via the "readline" module ' 4696*cda5da8dSAndroid Build Coastguard Worker 'is\n' 4697*cda5da8dSAndroid Build Coastguard Worker 'available for commands and command arguments, e.g. the current ' 4698*cda5da8dSAndroid Build Coastguard Worker 'global\n' 4699*cda5da8dSAndroid Build Coastguard Worker 'and local names are offered as arguments of the "p" command.\n' 4700*cda5da8dSAndroid Build Coastguard Worker '\n' 4701*cda5da8dSAndroid Build Coastguard Worker 'You can also invoke "pdb" from the command line to debug other\n' 4702*cda5da8dSAndroid Build Coastguard Worker 'scripts. For example:\n' 4703*cda5da8dSAndroid Build Coastguard Worker '\n' 4704*cda5da8dSAndroid Build Coastguard Worker ' python -m pdb myscript.py\n' 4705*cda5da8dSAndroid Build Coastguard Worker '\n' 4706*cda5da8dSAndroid Build Coastguard Worker 'When invoked as a module, pdb will automatically enter ' 4707*cda5da8dSAndroid Build Coastguard Worker 'post-mortem\n' 4708*cda5da8dSAndroid Build Coastguard Worker 'debugging if the program being debugged exits abnormally. After ' 4709*cda5da8dSAndroid Build Coastguard Worker 'post-\n' 4710*cda5da8dSAndroid Build Coastguard Worker 'mortem debugging (or after normal exit of the program), pdb ' 4711*cda5da8dSAndroid Build Coastguard Worker 'will\n' 4712*cda5da8dSAndroid Build Coastguard Worker 'restart the program. Automatic restarting preserves pdb’s state ' 4713*cda5da8dSAndroid Build Coastguard Worker '(such\n' 4714*cda5da8dSAndroid Build Coastguard Worker 'as breakpoints) and in most cases is more useful than quitting ' 4715*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4716*cda5da8dSAndroid Build Coastguard Worker 'debugger upon program’s exit.\n' 4717*cda5da8dSAndroid Build Coastguard Worker '\n' 4718*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.2: "-c" option is introduced to execute ' 4719*cda5da8dSAndroid Build Coastguard Worker 'commands as\n' 4720*cda5da8dSAndroid Build Coastguard Worker 'if given in a ".pdbrc" file, see Debugger Commands.\n' 4721*cda5da8dSAndroid Build Coastguard Worker '\n' 4722*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.7: "-m" option is introduced to execute ' 4723*cda5da8dSAndroid Build Coastguard Worker 'modules\n' 4724*cda5da8dSAndroid Build Coastguard Worker 'similar to the way "python -m" does. As with a script, the ' 4725*cda5da8dSAndroid Build Coastguard Worker 'debugger\n' 4726*cda5da8dSAndroid Build Coastguard Worker 'will pause execution just before the first line of the module.\n' 4727*cda5da8dSAndroid Build Coastguard Worker '\n' 4728*cda5da8dSAndroid Build Coastguard Worker 'Typical usage to execute a statement under control of the ' 4729*cda5da8dSAndroid Build Coastguard Worker 'debugger is:\n' 4730*cda5da8dSAndroid Build Coastguard Worker '\n' 4731*cda5da8dSAndroid Build Coastguard Worker ' >>> import pdb\n' 4732*cda5da8dSAndroid Build Coastguard Worker ' >>> def f(x):\n' 4733*cda5da8dSAndroid Build Coastguard Worker ' ... print(1 / x)\n' 4734*cda5da8dSAndroid Build Coastguard Worker ' >>> pdb.run("f(2)")\n' 4735*cda5da8dSAndroid Build Coastguard Worker ' > <string>(1)<module>()\n' 4736*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) continue\n' 4737*cda5da8dSAndroid Build Coastguard Worker ' 0.5\n' 4738*cda5da8dSAndroid Build Coastguard Worker ' >>>\n' 4739*cda5da8dSAndroid Build Coastguard Worker '\n' 4740*cda5da8dSAndroid Build Coastguard Worker 'The typical usage to inspect a crashed program is:\n' 4741*cda5da8dSAndroid Build Coastguard Worker '\n' 4742*cda5da8dSAndroid Build Coastguard Worker ' >>> import pdb\n' 4743*cda5da8dSAndroid Build Coastguard Worker ' >>> def f(x):\n' 4744*cda5da8dSAndroid Build Coastguard Worker ' ... print(1 / x)\n' 4745*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 4746*cda5da8dSAndroid Build Coastguard Worker ' >>> f(0)\n' 4747*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 4748*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 1, in <module>\n' 4749*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 2, in f\n' 4750*cda5da8dSAndroid Build Coastguard Worker ' ZeroDivisionError: division by zero\n' 4751*cda5da8dSAndroid Build Coastguard Worker ' >>> pdb.pm()\n' 4752*cda5da8dSAndroid Build Coastguard Worker ' > <stdin>(2)f()\n' 4753*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) p x\n' 4754*cda5da8dSAndroid Build Coastguard Worker ' 0\n' 4755*cda5da8dSAndroid Build Coastguard Worker ' (Pdb)\n' 4756*cda5da8dSAndroid Build Coastguard Worker '\n' 4757*cda5da8dSAndroid Build Coastguard Worker 'The module defines the following functions; each enters the ' 4758*cda5da8dSAndroid Build Coastguard Worker 'debugger\n' 4759*cda5da8dSAndroid Build Coastguard Worker 'in a slightly different way:\n' 4760*cda5da8dSAndroid Build Coastguard Worker '\n' 4761*cda5da8dSAndroid Build Coastguard Worker 'pdb.run(statement, globals=None, locals=None)\n' 4762*cda5da8dSAndroid Build Coastguard Worker '\n' 4763*cda5da8dSAndroid Build Coastguard Worker ' Execute the *statement* (given as a string or a code object) ' 4764*cda5da8dSAndroid Build Coastguard Worker 'under\n' 4765*cda5da8dSAndroid Build Coastguard Worker ' debugger control. The debugger prompt appears before any ' 4766*cda5da8dSAndroid Build Coastguard Worker 'code is\n' 4767*cda5da8dSAndroid Build Coastguard Worker ' executed; you can set breakpoints and type "continue", or you ' 4768*cda5da8dSAndroid Build Coastguard Worker 'can\n' 4769*cda5da8dSAndroid Build Coastguard Worker ' step through the statement using "step" or "next" (all these\n' 4770*cda5da8dSAndroid Build Coastguard Worker ' commands are explained below). The optional *globals* and ' 4771*cda5da8dSAndroid Build Coastguard Worker '*locals*\n' 4772*cda5da8dSAndroid Build Coastguard Worker ' arguments specify the environment in which the code is ' 4773*cda5da8dSAndroid Build Coastguard Worker 'executed; by\n' 4774*cda5da8dSAndroid Build Coastguard Worker ' default the dictionary of the module "__main__" is used. ' 4775*cda5da8dSAndroid Build Coastguard Worker '(See the\n' 4776*cda5da8dSAndroid Build Coastguard Worker ' explanation of the built-in "exec()" or "eval()" functions.)\n' 4777*cda5da8dSAndroid Build Coastguard Worker '\n' 4778*cda5da8dSAndroid Build Coastguard Worker 'pdb.runeval(expression, globals=None, locals=None)\n' 4779*cda5da8dSAndroid Build Coastguard Worker '\n' 4780*cda5da8dSAndroid Build Coastguard Worker ' Evaluate the *expression* (given as a string or a code ' 4781*cda5da8dSAndroid Build Coastguard Worker 'object)\n' 4782*cda5da8dSAndroid Build Coastguard Worker ' under debugger control. When "runeval()" returns, it returns ' 4783*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4784*cda5da8dSAndroid Build Coastguard Worker ' value of the *expression*. Otherwise this function is ' 4785*cda5da8dSAndroid Build Coastguard Worker 'similar to\n' 4786*cda5da8dSAndroid Build Coastguard Worker ' "run()".\n' 4787*cda5da8dSAndroid Build Coastguard Worker '\n' 4788*cda5da8dSAndroid Build Coastguard Worker 'pdb.runcall(function, *args, **kwds)\n' 4789*cda5da8dSAndroid Build Coastguard Worker '\n' 4790*cda5da8dSAndroid Build Coastguard Worker ' Call the *function* (a function or method object, not a ' 4791*cda5da8dSAndroid Build Coastguard Worker 'string)\n' 4792*cda5da8dSAndroid Build Coastguard Worker ' with the given arguments. When "runcall()" returns, it ' 4793*cda5da8dSAndroid Build Coastguard Worker 'returns\n' 4794*cda5da8dSAndroid Build Coastguard Worker ' whatever the function call returned. The debugger prompt ' 4795*cda5da8dSAndroid Build Coastguard Worker 'appears\n' 4796*cda5da8dSAndroid Build Coastguard Worker ' as soon as the function is entered.\n' 4797*cda5da8dSAndroid Build Coastguard Worker '\n' 4798*cda5da8dSAndroid Build Coastguard Worker 'pdb.set_trace(*, header=None)\n' 4799*cda5da8dSAndroid Build Coastguard Worker '\n' 4800*cda5da8dSAndroid Build Coastguard Worker ' Enter the debugger at the calling stack frame. This is ' 4801*cda5da8dSAndroid Build Coastguard Worker 'useful to\n' 4802*cda5da8dSAndroid Build Coastguard Worker ' hard-code a breakpoint at a given point in a program, even if ' 4803*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4804*cda5da8dSAndroid Build Coastguard Worker ' code is not otherwise being debugged (e.g. when an assertion\n' 4805*cda5da8dSAndroid Build Coastguard Worker ' fails). If given, *header* is printed to the console just ' 4806*cda5da8dSAndroid Build Coastguard Worker 'before\n' 4807*cda5da8dSAndroid Build Coastguard Worker ' debugging begins.\n' 4808*cda5da8dSAndroid Build Coastguard Worker '\n' 4809*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: The keyword-only argument *header*.\n' 4810*cda5da8dSAndroid Build Coastguard Worker '\n' 4811*cda5da8dSAndroid Build Coastguard Worker 'pdb.post_mortem(traceback=None)\n' 4812*cda5da8dSAndroid Build Coastguard Worker '\n' 4813*cda5da8dSAndroid Build Coastguard Worker ' Enter post-mortem debugging of the given *traceback* object. ' 4814*cda5da8dSAndroid Build Coastguard Worker 'If no\n' 4815*cda5da8dSAndroid Build Coastguard Worker ' *traceback* is given, it uses the one of the exception that ' 4816*cda5da8dSAndroid Build Coastguard Worker 'is\n' 4817*cda5da8dSAndroid Build Coastguard Worker ' currently being handled (an exception must be being handled ' 4818*cda5da8dSAndroid Build Coastguard Worker 'if the\n' 4819*cda5da8dSAndroid Build Coastguard Worker ' default is to be used).\n' 4820*cda5da8dSAndroid Build Coastguard Worker '\n' 4821*cda5da8dSAndroid Build Coastguard Worker 'pdb.pm()\n' 4822*cda5da8dSAndroid Build Coastguard Worker '\n' 4823*cda5da8dSAndroid Build Coastguard Worker ' Enter post-mortem debugging of the traceback found in\n' 4824*cda5da8dSAndroid Build Coastguard Worker ' "sys.last_traceback".\n' 4825*cda5da8dSAndroid Build Coastguard Worker '\n' 4826*cda5da8dSAndroid Build Coastguard Worker 'The "run*" functions and "set_trace()" are aliases for ' 4827*cda5da8dSAndroid Build Coastguard Worker 'instantiating\n' 4828*cda5da8dSAndroid Build Coastguard Worker 'the "Pdb" class and calling the method of the same name. If you ' 4829*cda5da8dSAndroid Build Coastguard Worker 'want\n' 4830*cda5da8dSAndroid Build Coastguard Worker 'to access further features, you have to do this yourself:\n' 4831*cda5da8dSAndroid Build Coastguard Worker '\n' 4832*cda5da8dSAndroid Build Coastguard Worker "class pdb.Pdb(completekey='tab', stdin=None, stdout=None, " 4833*cda5da8dSAndroid Build Coastguard Worker 'skip=None, nosigint=False, readrc=True)\n' 4834*cda5da8dSAndroid Build Coastguard Worker '\n' 4835*cda5da8dSAndroid Build Coastguard Worker ' "Pdb" is the debugger class.\n' 4836*cda5da8dSAndroid Build Coastguard Worker '\n' 4837*cda5da8dSAndroid Build Coastguard Worker ' The *completekey*, *stdin* and *stdout* arguments are passed ' 4838*cda5da8dSAndroid Build Coastguard Worker 'to the\n' 4839*cda5da8dSAndroid Build Coastguard Worker ' underlying "cmd.Cmd" class; see the description there.\n' 4840*cda5da8dSAndroid Build Coastguard Worker '\n' 4841*cda5da8dSAndroid Build Coastguard Worker ' The *skip* argument, if given, must be an iterable of ' 4842*cda5da8dSAndroid Build Coastguard Worker 'glob-style\n' 4843*cda5da8dSAndroid Build Coastguard Worker ' module name patterns. The debugger will not step into frames ' 4844*cda5da8dSAndroid Build Coastguard Worker 'that\n' 4845*cda5da8dSAndroid Build Coastguard Worker ' originate in a module that matches one of these patterns. ' 4846*cda5da8dSAndroid Build Coastguard Worker '[1]\n' 4847*cda5da8dSAndroid Build Coastguard Worker '\n' 4848*cda5da8dSAndroid Build Coastguard Worker ' By default, Pdb sets a handler for the SIGINT signal (which ' 4849*cda5da8dSAndroid Build Coastguard Worker 'is sent\n' 4850*cda5da8dSAndroid Build Coastguard Worker ' when the user presses "Ctrl-C" on the console) when you give ' 4851*cda5da8dSAndroid Build Coastguard Worker 'a\n' 4852*cda5da8dSAndroid Build Coastguard Worker ' "continue" command. This allows you to break into the ' 4853*cda5da8dSAndroid Build Coastguard Worker 'debugger\n' 4854*cda5da8dSAndroid Build Coastguard Worker ' again by pressing "Ctrl-C". If you want Pdb not to touch ' 4855*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4856*cda5da8dSAndroid Build Coastguard Worker ' SIGINT handler, set *nosigint* to true.\n' 4857*cda5da8dSAndroid Build Coastguard Worker '\n' 4858*cda5da8dSAndroid Build Coastguard Worker ' The *readrc* argument defaults to true and controls whether ' 4859*cda5da8dSAndroid Build Coastguard Worker 'Pdb\n' 4860*cda5da8dSAndroid Build Coastguard Worker ' will load .pdbrc files from the filesystem.\n' 4861*cda5da8dSAndroid Build Coastguard Worker '\n' 4862*cda5da8dSAndroid Build Coastguard Worker ' Example call to enable tracing with *skip*:\n' 4863*cda5da8dSAndroid Build Coastguard Worker '\n' 4864*cda5da8dSAndroid Build Coastguard Worker " import pdb; pdb.Pdb(skip=['django.*']).set_trace()\n" 4865*cda5da8dSAndroid Build Coastguard Worker '\n' 4866*cda5da8dSAndroid Build Coastguard Worker ' Raises an auditing event "pdb.Pdb" with no arguments.\n' 4867*cda5da8dSAndroid Build Coastguard Worker '\n' 4868*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.1: The *skip* argument.\n' 4869*cda5da8dSAndroid Build Coastguard Worker '\n' 4870*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2: The *nosigint* argument. Previously, a ' 4871*cda5da8dSAndroid Build Coastguard Worker 'SIGINT\n' 4872*cda5da8dSAndroid Build Coastguard Worker ' handler was never set by Pdb.\n' 4873*cda5da8dSAndroid Build Coastguard Worker '\n' 4874*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.6: The *readrc* argument.\n' 4875*cda5da8dSAndroid Build Coastguard Worker '\n' 4876*cda5da8dSAndroid Build Coastguard Worker ' run(statement, globals=None, locals=None)\n' 4877*cda5da8dSAndroid Build Coastguard Worker ' runeval(expression, globals=None, locals=None)\n' 4878*cda5da8dSAndroid Build Coastguard Worker ' runcall(function, *args, **kwds)\n' 4879*cda5da8dSAndroid Build Coastguard Worker ' set_trace()\n' 4880*cda5da8dSAndroid Build Coastguard Worker '\n' 4881*cda5da8dSAndroid Build Coastguard Worker ' See the documentation for the functions explained above.\n' 4882*cda5da8dSAndroid Build Coastguard Worker '\n' 4883*cda5da8dSAndroid Build Coastguard Worker '\n' 4884*cda5da8dSAndroid Build Coastguard Worker 'Debugger Commands\n' 4885*cda5da8dSAndroid Build Coastguard Worker '=================\n' 4886*cda5da8dSAndroid Build Coastguard Worker '\n' 4887*cda5da8dSAndroid Build Coastguard Worker 'The commands recognized by the debugger are listed below. Most\n' 4888*cda5da8dSAndroid Build Coastguard Worker 'commands can be abbreviated to one or two letters as indicated; ' 4889*cda5da8dSAndroid Build Coastguard Worker 'e.g.\n' 4890*cda5da8dSAndroid Build Coastguard Worker '"h(elp)" means that either "h" or "help" can be used to enter ' 4891*cda5da8dSAndroid Build Coastguard Worker 'the help\n' 4892*cda5da8dSAndroid Build Coastguard Worker 'command (but not "he" or "hel", nor "H" or "Help" or "HELP").\n' 4893*cda5da8dSAndroid Build Coastguard Worker 'Arguments to commands must be separated by whitespace (spaces ' 4894*cda5da8dSAndroid Build Coastguard Worker 'or\n' 4895*cda5da8dSAndroid Build Coastguard Worker 'tabs). Optional arguments are enclosed in square brackets ' 4896*cda5da8dSAndroid Build Coastguard Worker '("[]") in\n' 4897*cda5da8dSAndroid Build Coastguard Worker 'the command syntax; the square brackets must not be typed.\n' 4898*cda5da8dSAndroid Build Coastguard Worker 'Alternatives in the command syntax are separated by a vertical ' 4899*cda5da8dSAndroid Build Coastguard Worker 'bar\n' 4900*cda5da8dSAndroid Build Coastguard Worker '("|").\n' 4901*cda5da8dSAndroid Build Coastguard Worker '\n' 4902*cda5da8dSAndroid Build Coastguard Worker 'Entering a blank line repeats the last command entered. ' 4903*cda5da8dSAndroid Build Coastguard Worker 'Exception: if\n' 4904*cda5da8dSAndroid Build Coastguard Worker 'the last command was a "list" command, the next 11 lines are ' 4905*cda5da8dSAndroid Build Coastguard Worker 'listed.\n' 4906*cda5da8dSAndroid Build Coastguard Worker '\n' 4907*cda5da8dSAndroid Build Coastguard Worker 'Commands that the debugger doesn’t recognize are assumed to be ' 4908*cda5da8dSAndroid Build Coastguard Worker 'Python\n' 4909*cda5da8dSAndroid Build Coastguard Worker 'statements and are executed in the context of the program being\n' 4910*cda5da8dSAndroid Build Coastguard Worker 'debugged. Python statements can also be prefixed with an ' 4911*cda5da8dSAndroid Build Coastguard Worker 'exclamation\n' 4912*cda5da8dSAndroid Build Coastguard Worker 'point ("!"). This is a powerful way to inspect the program ' 4913*cda5da8dSAndroid Build Coastguard Worker 'being\n' 4914*cda5da8dSAndroid Build Coastguard Worker 'debugged; it is even possible to change a variable or call a ' 4915*cda5da8dSAndroid Build Coastguard Worker 'function.\n' 4916*cda5da8dSAndroid Build Coastguard Worker 'When an exception occurs in such a statement, the exception name ' 4917*cda5da8dSAndroid Build Coastguard Worker 'is\n' 4918*cda5da8dSAndroid Build Coastguard Worker 'printed but the debugger’s state is not changed.\n' 4919*cda5da8dSAndroid Build Coastguard Worker '\n' 4920*cda5da8dSAndroid Build Coastguard Worker 'The debugger supports aliases. Aliases can have parameters ' 4921*cda5da8dSAndroid Build Coastguard Worker 'which\n' 4922*cda5da8dSAndroid Build Coastguard Worker 'allows one a certain level of adaptability to the context under\n' 4923*cda5da8dSAndroid Build Coastguard Worker 'examination.\n' 4924*cda5da8dSAndroid Build Coastguard Worker '\n' 4925*cda5da8dSAndroid Build Coastguard Worker 'Multiple commands may be entered on a single line, separated by ' 4926*cda5da8dSAndroid Build Coastguard Worker '";;".\n' 4927*cda5da8dSAndroid Build Coastguard Worker '(A single ";" is not used as it is the separator for multiple ' 4928*cda5da8dSAndroid Build Coastguard Worker 'commands\n' 4929*cda5da8dSAndroid Build Coastguard Worker 'in a line that is passed to the Python parser.) No intelligence ' 4930*cda5da8dSAndroid Build Coastguard Worker 'is\n' 4931*cda5da8dSAndroid Build Coastguard Worker 'applied to separating the commands; the input is split at the ' 4932*cda5da8dSAndroid Build Coastguard Worker 'first\n' 4933*cda5da8dSAndroid Build Coastguard Worker '";;" pair, even if it is in the middle of a quoted string. A\n' 4934*cda5da8dSAndroid Build Coastguard Worker 'workaround for strings with double semicolons is to use ' 4935*cda5da8dSAndroid Build Coastguard Worker 'implicit\n' 4936*cda5da8dSAndroid Build Coastguard Worker 'string concatenation "\';\'\';\'" or "";"";"".\n' 4937*cda5da8dSAndroid Build Coastguard Worker '\n' 4938*cda5da8dSAndroid Build Coastguard Worker 'If a file ".pdbrc" exists in the user’s home directory or in ' 4939*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4940*cda5da8dSAndroid Build Coastguard Worker 'current directory, it is read with "\'utf-8\'" encoding and ' 4941*cda5da8dSAndroid Build Coastguard Worker 'executed as\n' 4942*cda5da8dSAndroid Build Coastguard Worker 'if it had been typed at the debugger prompt. This is ' 4943*cda5da8dSAndroid Build Coastguard Worker 'particularly\n' 4944*cda5da8dSAndroid Build Coastguard Worker 'useful for aliases. If both files exist, the one in the home\n' 4945*cda5da8dSAndroid Build Coastguard Worker 'directory is read first and aliases defined there can be ' 4946*cda5da8dSAndroid Build Coastguard Worker 'overridden by\n' 4947*cda5da8dSAndroid Build Coastguard Worker 'the local file.\n' 4948*cda5da8dSAndroid Build Coastguard Worker '\n' 4949*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.11: ".pdbrc" is now read with "\'utf-8\'" ' 4950*cda5da8dSAndroid Build Coastguard Worker 'encoding.\n' 4951*cda5da8dSAndroid Build Coastguard Worker 'Previously, it was read with the system locale encoding.\n' 4952*cda5da8dSAndroid Build Coastguard Worker '\n' 4953*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.2: ".pdbrc" can now contain commands that\n' 4954*cda5da8dSAndroid Build Coastguard Worker 'continue debugging, such as "continue" or "next". Previously, ' 4955*cda5da8dSAndroid Build Coastguard Worker 'these\n' 4956*cda5da8dSAndroid Build Coastguard Worker 'commands had no effect.\n' 4957*cda5da8dSAndroid Build Coastguard Worker '\n' 4958*cda5da8dSAndroid Build Coastguard Worker 'h(elp) [command]\n' 4959*cda5da8dSAndroid Build Coastguard Worker '\n' 4960*cda5da8dSAndroid Build Coastguard Worker ' Without argument, print the list of available commands. With ' 4961*cda5da8dSAndroid Build Coastguard Worker 'a\n' 4962*cda5da8dSAndroid Build Coastguard Worker ' *command* as argument, print help about that command. "help ' 4963*cda5da8dSAndroid Build Coastguard Worker 'pdb"\n' 4964*cda5da8dSAndroid Build Coastguard Worker ' displays the full documentation (the docstring of the "pdb"\n' 4965*cda5da8dSAndroid Build Coastguard Worker ' module). Since the *command* argument must be an identifier, ' 4966*cda5da8dSAndroid Build Coastguard Worker '"help\n' 4967*cda5da8dSAndroid Build Coastguard Worker ' exec" must be entered to get help on the "!" command.\n' 4968*cda5da8dSAndroid Build Coastguard Worker '\n' 4969*cda5da8dSAndroid Build Coastguard Worker 'w(here)\n' 4970*cda5da8dSAndroid Build Coastguard Worker '\n' 4971*cda5da8dSAndroid Build Coastguard Worker ' Print a stack trace, with the most recent frame at the ' 4972*cda5da8dSAndroid Build Coastguard Worker 'bottom. An\n' 4973*cda5da8dSAndroid Build Coastguard Worker ' arrow (">") indicates the current frame, which determines ' 4974*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4975*cda5da8dSAndroid Build Coastguard Worker ' context of most commands.\n' 4976*cda5da8dSAndroid Build Coastguard Worker '\n' 4977*cda5da8dSAndroid Build Coastguard Worker 'd(own) [count]\n' 4978*cda5da8dSAndroid Build Coastguard Worker '\n' 4979*cda5da8dSAndroid Build Coastguard Worker ' Move the current frame *count* (default one) levels down in ' 4980*cda5da8dSAndroid Build Coastguard Worker 'the\n' 4981*cda5da8dSAndroid Build Coastguard Worker ' stack trace (to a newer frame).\n' 4982*cda5da8dSAndroid Build Coastguard Worker '\n' 4983*cda5da8dSAndroid Build Coastguard Worker 'u(p) [count]\n' 4984*cda5da8dSAndroid Build Coastguard Worker '\n' 4985*cda5da8dSAndroid Build Coastguard Worker ' Move the current frame *count* (default one) levels up in the ' 4986*cda5da8dSAndroid Build Coastguard Worker 'stack\n' 4987*cda5da8dSAndroid Build Coastguard Worker ' trace (to an older frame).\n' 4988*cda5da8dSAndroid Build Coastguard Worker '\n' 4989*cda5da8dSAndroid Build Coastguard Worker 'b(reak) [([filename:]lineno | function) [, condition]]\n' 4990*cda5da8dSAndroid Build Coastguard Worker '\n' 4991*cda5da8dSAndroid Build Coastguard Worker ' With a *lineno* argument, set a break there in the current ' 4992*cda5da8dSAndroid Build Coastguard Worker 'file.\n' 4993*cda5da8dSAndroid Build Coastguard Worker ' With a *function* argument, set a break at the first ' 4994*cda5da8dSAndroid Build Coastguard Worker 'executable\n' 4995*cda5da8dSAndroid Build Coastguard Worker ' statement within that function. The line number may be ' 4996*cda5da8dSAndroid Build Coastguard Worker 'prefixed\n' 4997*cda5da8dSAndroid Build Coastguard Worker ' with a filename and a colon, to specify a breakpoint in ' 4998*cda5da8dSAndroid Build Coastguard Worker 'another\n' 4999*cda5da8dSAndroid Build Coastguard Worker ' file (probably one that hasn’t been loaded yet). The file ' 5000*cda5da8dSAndroid Build Coastguard Worker 'is\n' 5001*cda5da8dSAndroid Build Coastguard Worker ' searched on "sys.path". Note that each breakpoint is ' 5002*cda5da8dSAndroid Build Coastguard Worker 'assigned a\n' 5003*cda5da8dSAndroid Build Coastguard Worker ' number to which all the other breakpoint commands refer.\n' 5004*cda5da8dSAndroid Build Coastguard Worker '\n' 5005*cda5da8dSAndroid Build Coastguard Worker ' If a second argument is present, it is an expression which ' 5006*cda5da8dSAndroid Build Coastguard Worker 'must\n' 5007*cda5da8dSAndroid Build Coastguard Worker ' evaluate to true before the breakpoint is honored.\n' 5008*cda5da8dSAndroid Build Coastguard Worker '\n' 5009*cda5da8dSAndroid Build Coastguard Worker ' Without argument, list all breaks, including for each ' 5010*cda5da8dSAndroid Build Coastguard Worker 'breakpoint,\n' 5011*cda5da8dSAndroid Build Coastguard Worker ' the number of times that breakpoint has been hit, the ' 5012*cda5da8dSAndroid Build Coastguard Worker 'current\n' 5013*cda5da8dSAndroid Build Coastguard Worker ' ignore count, and the associated condition if any.\n' 5014*cda5da8dSAndroid Build Coastguard Worker '\n' 5015*cda5da8dSAndroid Build Coastguard Worker 'tbreak [([filename:]lineno | function) [, condition]]\n' 5016*cda5da8dSAndroid Build Coastguard Worker '\n' 5017*cda5da8dSAndroid Build Coastguard Worker ' Temporary breakpoint, which is removed automatically when it ' 5018*cda5da8dSAndroid Build Coastguard Worker 'is\n' 5019*cda5da8dSAndroid Build Coastguard Worker ' first hit. The arguments are the same as for "break".\n' 5020*cda5da8dSAndroid Build Coastguard Worker '\n' 5021*cda5da8dSAndroid Build Coastguard Worker 'cl(ear) [filename:lineno | bpnumber ...]\n' 5022*cda5da8dSAndroid Build Coastguard Worker '\n' 5023*cda5da8dSAndroid Build Coastguard Worker ' With a *filename:lineno* argument, clear all the breakpoints ' 5024*cda5da8dSAndroid Build Coastguard Worker 'at\n' 5025*cda5da8dSAndroid Build Coastguard Worker ' this line. With a space separated list of breakpoint numbers, ' 5026*cda5da8dSAndroid Build Coastguard Worker 'clear\n' 5027*cda5da8dSAndroid Build Coastguard Worker ' those breakpoints. Without argument, clear all breaks (but ' 5028*cda5da8dSAndroid Build Coastguard Worker 'first\n' 5029*cda5da8dSAndroid Build Coastguard Worker ' ask confirmation).\n' 5030*cda5da8dSAndroid Build Coastguard Worker '\n' 5031*cda5da8dSAndroid Build Coastguard Worker 'disable [bpnumber ...]\n' 5032*cda5da8dSAndroid Build Coastguard Worker '\n' 5033*cda5da8dSAndroid Build Coastguard Worker ' Disable the breakpoints given as a space separated list of\n' 5034*cda5da8dSAndroid Build Coastguard Worker ' breakpoint numbers. Disabling a breakpoint means it cannot ' 5035*cda5da8dSAndroid Build Coastguard Worker 'cause\n' 5036*cda5da8dSAndroid Build Coastguard Worker ' the program to stop execution, but unlike clearing a ' 5037*cda5da8dSAndroid Build Coastguard Worker 'breakpoint, it\n' 5038*cda5da8dSAndroid Build Coastguard Worker ' remains in the list of breakpoints and can be (re-)enabled.\n' 5039*cda5da8dSAndroid Build Coastguard Worker '\n' 5040*cda5da8dSAndroid Build Coastguard Worker 'enable [bpnumber ...]\n' 5041*cda5da8dSAndroid Build Coastguard Worker '\n' 5042*cda5da8dSAndroid Build Coastguard Worker ' Enable the breakpoints specified.\n' 5043*cda5da8dSAndroid Build Coastguard Worker '\n' 5044*cda5da8dSAndroid Build Coastguard Worker 'ignore bpnumber [count]\n' 5045*cda5da8dSAndroid Build Coastguard Worker '\n' 5046*cda5da8dSAndroid Build Coastguard Worker ' Set the ignore count for the given breakpoint number. If ' 5047*cda5da8dSAndroid Build Coastguard Worker '*count*\n' 5048*cda5da8dSAndroid Build Coastguard Worker ' is omitted, the ignore count is set to 0. A breakpoint ' 5049*cda5da8dSAndroid Build Coastguard Worker 'becomes\n' 5050*cda5da8dSAndroid Build Coastguard Worker ' active when the ignore count is zero. When non-zero, the ' 5051*cda5da8dSAndroid Build Coastguard Worker '*count*\n' 5052*cda5da8dSAndroid Build Coastguard Worker ' is decremented each time the breakpoint is reached and the\n' 5053*cda5da8dSAndroid Build Coastguard Worker ' breakpoint is not disabled and any associated condition ' 5054*cda5da8dSAndroid Build Coastguard Worker 'evaluates\n' 5055*cda5da8dSAndroid Build Coastguard Worker ' to true.\n' 5056*cda5da8dSAndroid Build Coastguard Worker '\n' 5057*cda5da8dSAndroid Build Coastguard Worker 'condition bpnumber [condition]\n' 5058*cda5da8dSAndroid Build Coastguard Worker '\n' 5059*cda5da8dSAndroid Build Coastguard Worker ' Set a new *condition* for the breakpoint, an expression which ' 5060*cda5da8dSAndroid Build Coastguard Worker 'must\n' 5061*cda5da8dSAndroid Build Coastguard Worker ' evaluate to true before the breakpoint is honored. If ' 5062*cda5da8dSAndroid Build Coastguard Worker '*condition*\n' 5063*cda5da8dSAndroid Build Coastguard Worker ' is absent, any existing condition is removed; i.e., the ' 5064*cda5da8dSAndroid Build Coastguard Worker 'breakpoint\n' 5065*cda5da8dSAndroid Build Coastguard Worker ' is made unconditional.\n' 5066*cda5da8dSAndroid Build Coastguard Worker '\n' 5067*cda5da8dSAndroid Build Coastguard Worker 'commands [bpnumber]\n' 5068*cda5da8dSAndroid Build Coastguard Worker '\n' 5069*cda5da8dSAndroid Build Coastguard Worker ' Specify a list of commands for breakpoint number *bpnumber*. ' 5070*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5071*cda5da8dSAndroid Build Coastguard Worker ' commands themselves appear on the following lines. Type a ' 5072*cda5da8dSAndroid Build Coastguard Worker 'line\n' 5073*cda5da8dSAndroid Build Coastguard Worker ' containing just "end" to terminate the commands. An example:\n' 5074*cda5da8dSAndroid Build Coastguard Worker '\n' 5075*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) commands 1\n' 5076*cda5da8dSAndroid Build Coastguard Worker ' (com) p some_variable\n' 5077*cda5da8dSAndroid Build Coastguard Worker ' (com) end\n' 5078*cda5da8dSAndroid Build Coastguard Worker ' (Pdb)\n' 5079*cda5da8dSAndroid Build Coastguard Worker '\n' 5080*cda5da8dSAndroid Build Coastguard Worker ' To remove all commands from a breakpoint, type "commands" ' 5081*cda5da8dSAndroid Build Coastguard Worker 'and\n' 5082*cda5da8dSAndroid Build Coastguard Worker ' follow it immediately with "end"; that is, give no commands.\n' 5083*cda5da8dSAndroid Build Coastguard Worker '\n' 5084*cda5da8dSAndroid Build Coastguard Worker ' With no *bpnumber* argument, "commands" refers to the last\n' 5085*cda5da8dSAndroid Build Coastguard Worker ' breakpoint set.\n' 5086*cda5da8dSAndroid Build Coastguard Worker '\n' 5087*cda5da8dSAndroid Build Coastguard Worker ' You can use breakpoint commands to start your program up ' 5088*cda5da8dSAndroid Build Coastguard Worker 'again.\n' 5089*cda5da8dSAndroid Build Coastguard Worker ' Simply use the "continue" command, or "step", or any other ' 5090*cda5da8dSAndroid Build Coastguard Worker 'command\n' 5091*cda5da8dSAndroid Build Coastguard Worker ' that resumes execution.\n' 5092*cda5da8dSAndroid Build Coastguard Worker '\n' 5093*cda5da8dSAndroid Build Coastguard Worker ' Specifying any command resuming execution (currently ' 5094*cda5da8dSAndroid Build Coastguard Worker '"continue",\n' 5095*cda5da8dSAndroid Build Coastguard Worker ' "step", "next", "return", "jump", "quit" and their ' 5096*cda5da8dSAndroid Build Coastguard Worker 'abbreviations)\n' 5097*cda5da8dSAndroid Build Coastguard Worker ' terminates the command list (as if that command was ' 5098*cda5da8dSAndroid Build Coastguard Worker 'immediately\n' 5099*cda5da8dSAndroid Build Coastguard Worker ' followed by end). This is because any time you resume ' 5100*cda5da8dSAndroid Build Coastguard Worker 'execution\n' 5101*cda5da8dSAndroid Build Coastguard Worker ' (even with a simple next or step), you may encounter another\n' 5102*cda5da8dSAndroid Build Coastguard Worker ' breakpoint—which could have its own command list, leading to\n' 5103*cda5da8dSAndroid Build Coastguard Worker ' ambiguities about which list to execute.\n' 5104*cda5da8dSAndroid Build Coastguard Worker '\n' 5105*cda5da8dSAndroid Build Coastguard Worker ' If you use the "silent" command in the command list, the ' 5106*cda5da8dSAndroid Build Coastguard Worker 'usual\n' 5107*cda5da8dSAndroid Build Coastguard Worker ' message about stopping at a breakpoint is not printed. This ' 5108*cda5da8dSAndroid Build Coastguard Worker 'may be\n' 5109*cda5da8dSAndroid Build Coastguard Worker ' desirable for breakpoints that are to print a specific ' 5110*cda5da8dSAndroid Build Coastguard Worker 'message and\n' 5111*cda5da8dSAndroid Build Coastguard Worker ' then continue. If none of the other commands print anything, ' 5112*cda5da8dSAndroid Build Coastguard Worker 'you\n' 5113*cda5da8dSAndroid Build Coastguard Worker ' see no sign that the breakpoint was reached.\n' 5114*cda5da8dSAndroid Build Coastguard Worker '\n' 5115*cda5da8dSAndroid Build Coastguard Worker 's(tep)\n' 5116*cda5da8dSAndroid Build Coastguard Worker '\n' 5117*cda5da8dSAndroid Build Coastguard Worker ' Execute the current line, stop at the first possible ' 5118*cda5da8dSAndroid Build Coastguard Worker 'occasion\n' 5119*cda5da8dSAndroid Build Coastguard Worker ' (either in a function that is called or on the next line in ' 5120*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5121*cda5da8dSAndroid Build Coastguard Worker ' current function).\n' 5122*cda5da8dSAndroid Build Coastguard Worker '\n' 5123*cda5da8dSAndroid Build Coastguard Worker 'n(ext)\n' 5124*cda5da8dSAndroid Build Coastguard Worker '\n' 5125*cda5da8dSAndroid Build Coastguard Worker ' Continue execution until the next line in the current ' 5126*cda5da8dSAndroid Build Coastguard Worker 'function is\n' 5127*cda5da8dSAndroid Build Coastguard Worker ' reached or it returns. (The difference between "next" and ' 5128*cda5da8dSAndroid Build Coastguard Worker '"step"\n' 5129*cda5da8dSAndroid Build Coastguard Worker ' is that "step" stops inside a called function, while "next"\n' 5130*cda5da8dSAndroid Build Coastguard Worker ' executes called functions at (nearly) full speed, only ' 5131*cda5da8dSAndroid Build Coastguard Worker 'stopping at\n' 5132*cda5da8dSAndroid Build Coastguard Worker ' the next line in the current function.)\n' 5133*cda5da8dSAndroid Build Coastguard Worker '\n' 5134*cda5da8dSAndroid Build Coastguard Worker 'unt(il) [lineno]\n' 5135*cda5da8dSAndroid Build Coastguard Worker '\n' 5136*cda5da8dSAndroid Build Coastguard Worker ' Without argument, continue execution until the line with a ' 5137*cda5da8dSAndroid Build Coastguard Worker 'number\n' 5138*cda5da8dSAndroid Build Coastguard Worker ' greater than the current one is reached.\n' 5139*cda5da8dSAndroid Build Coastguard Worker '\n' 5140*cda5da8dSAndroid Build Coastguard Worker ' With *lineno*, continue execution until a line with a number\n' 5141*cda5da8dSAndroid Build Coastguard Worker ' greater or equal to *lineno* is reached. In both cases, also ' 5142*cda5da8dSAndroid Build Coastguard Worker 'stop\n' 5143*cda5da8dSAndroid Build Coastguard Worker ' when the current frame returns.\n' 5144*cda5da8dSAndroid Build Coastguard Worker '\n' 5145*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.2: Allow giving an explicit line ' 5146*cda5da8dSAndroid Build Coastguard Worker 'number.\n' 5147*cda5da8dSAndroid Build Coastguard Worker '\n' 5148*cda5da8dSAndroid Build Coastguard Worker 'r(eturn)\n' 5149*cda5da8dSAndroid Build Coastguard Worker '\n' 5150*cda5da8dSAndroid Build Coastguard Worker ' Continue execution until the current function returns.\n' 5151*cda5da8dSAndroid Build Coastguard Worker '\n' 5152*cda5da8dSAndroid Build Coastguard Worker 'c(ont(inue))\n' 5153*cda5da8dSAndroid Build Coastguard Worker '\n' 5154*cda5da8dSAndroid Build Coastguard Worker ' Continue execution, only stop when a breakpoint is ' 5155*cda5da8dSAndroid Build Coastguard Worker 'encountered.\n' 5156*cda5da8dSAndroid Build Coastguard Worker '\n' 5157*cda5da8dSAndroid Build Coastguard Worker 'j(ump) lineno\n' 5158*cda5da8dSAndroid Build Coastguard Worker '\n' 5159*cda5da8dSAndroid Build Coastguard Worker ' Set the next line that will be executed. Only available in ' 5160*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5161*cda5da8dSAndroid Build Coastguard Worker ' bottom-most frame. This lets you jump back and execute code ' 5162*cda5da8dSAndroid Build Coastguard Worker 'again,\n' 5163*cda5da8dSAndroid Build Coastguard Worker ' or jump forward to skip code that you don’t want to run.\n' 5164*cda5da8dSAndroid Build Coastguard Worker '\n' 5165*cda5da8dSAndroid Build Coastguard Worker ' It should be noted that not all jumps are allowed – for ' 5166*cda5da8dSAndroid Build Coastguard Worker 'instance it\n' 5167*cda5da8dSAndroid Build Coastguard Worker ' is not possible to jump into the middle of a "for" loop or ' 5168*cda5da8dSAndroid Build Coastguard Worker 'out of a\n' 5169*cda5da8dSAndroid Build Coastguard Worker ' "finally" clause.\n' 5170*cda5da8dSAndroid Build Coastguard Worker '\n' 5171*cda5da8dSAndroid Build Coastguard Worker 'l(ist) [first[, last]]\n' 5172*cda5da8dSAndroid Build Coastguard Worker '\n' 5173*cda5da8dSAndroid Build Coastguard Worker ' List source code for the current file. Without arguments, ' 5174*cda5da8dSAndroid Build Coastguard Worker 'list 11\n' 5175*cda5da8dSAndroid Build Coastguard Worker ' lines around the current line or continue the previous ' 5176*cda5da8dSAndroid Build Coastguard Worker 'listing.\n' 5177*cda5da8dSAndroid Build Coastguard Worker ' With "." as argument, list 11 lines around the current line. ' 5178*cda5da8dSAndroid Build Coastguard Worker 'With\n' 5179*cda5da8dSAndroid Build Coastguard Worker ' one argument, list 11 lines around at that line. With two\n' 5180*cda5da8dSAndroid Build Coastguard Worker ' arguments, list the given range; if the second argument is ' 5181*cda5da8dSAndroid Build Coastguard Worker 'less\n' 5182*cda5da8dSAndroid Build Coastguard Worker ' than the first, it is interpreted as a count.\n' 5183*cda5da8dSAndroid Build Coastguard Worker '\n' 5184*cda5da8dSAndroid Build Coastguard Worker ' The current line in the current frame is indicated by "->". ' 5185*cda5da8dSAndroid Build Coastguard Worker 'If an\n' 5186*cda5da8dSAndroid Build Coastguard Worker ' exception is being debugged, the line where the exception ' 5187*cda5da8dSAndroid Build Coastguard Worker 'was\n' 5188*cda5da8dSAndroid Build Coastguard Worker ' originally raised or propagated is indicated by ">>", if it ' 5189*cda5da8dSAndroid Build Coastguard Worker 'differs\n' 5190*cda5da8dSAndroid Build Coastguard Worker ' from the current line.\n' 5191*cda5da8dSAndroid Build Coastguard Worker '\n' 5192*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2: The ">>" marker.\n' 5193*cda5da8dSAndroid Build Coastguard Worker '\n' 5194*cda5da8dSAndroid Build Coastguard Worker 'll | longlist\n' 5195*cda5da8dSAndroid Build Coastguard Worker '\n' 5196*cda5da8dSAndroid Build Coastguard Worker ' List all source code for the current function or frame.\n' 5197*cda5da8dSAndroid Build Coastguard Worker ' Interesting lines are marked as for "list".\n' 5198*cda5da8dSAndroid Build Coastguard Worker '\n' 5199*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 5200*cda5da8dSAndroid Build Coastguard Worker '\n' 5201*cda5da8dSAndroid Build Coastguard Worker 'a(rgs)\n' 5202*cda5da8dSAndroid Build Coastguard Worker '\n' 5203*cda5da8dSAndroid Build Coastguard Worker ' Print the arguments of the current function and their ' 5204*cda5da8dSAndroid Build Coastguard Worker 'current\n' 5205*cda5da8dSAndroid Build Coastguard Worker ' values.\n' 5206*cda5da8dSAndroid Build Coastguard Worker '\n' 5207*cda5da8dSAndroid Build Coastguard Worker 'p expression\n' 5208*cda5da8dSAndroid Build Coastguard Worker '\n' 5209*cda5da8dSAndroid Build Coastguard Worker ' Evaluate *expression* in the current context and print its ' 5210*cda5da8dSAndroid Build Coastguard Worker 'value.\n' 5211*cda5da8dSAndroid Build Coastguard Worker '\n' 5212*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 5213*cda5da8dSAndroid Build Coastguard Worker '\n' 5214*cda5da8dSAndroid Build Coastguard Worker ' "print()" can also be used, but is not a debugger command — ' 5215*cda5da8dSAndroid Build Coastguard Worker 'this\n' 5216*cda5da8dSAndroid Build Coastguard Worker ' executes the Python "print()" function.\n' 5217*cda5da8dSAndroid Build Coastguard Worker '\n' 5218*cda5da8dSAndroid Build Coastguard Worker 'pp expression\n' 5219*cda5da8dSAndroid Build Coastguard Worker '\n' 5220*cda5da8dSAndroid Build Coastguard Worker ' Like the "p" command, except the value of *expression* is ' 5221*cda5da8dSAndroid Build Coastguard Worker 'pretty-\n' 5222*cda5da8dSAndroid Build Coastguard Worker ' printed using the "pprint" module.\n' 5223*cda5da8dSAndroid Build Coastguard Worker '\n' 5224*cda5da8dSAndroid Build Coastguard Worker 'whatis expression\n' 5225*cda5da8dSAndroid Build Coastguard Worker '\n' 5226*cda5da8dSAndroid Build Coastguard Worker ' Print the type of *expression*.\n' 5227*cda5da8dSAndroid Build Coastguard Worker '\n' 5228*cda5da8dSAndroid Build Coastguard Worker 'source expression\n' 5229*cda5da8dSAndroid Build Coastguard Worker '\n' 5230*cda5da8dSAndroid Build Coastguard Worker ' Try to get source code of *expression* and display it.\n' 5231*cda5da8dSAndroid Build Coastguard Worker '\n' 5232*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 5233*cda5da8dSAndroid Build Coastguard Worker '\n' 5234*cda5da8dSAndroid Build Coastguard Worker 'display [expression]\n' 5235*cda5da8dSAndroid Build Coastguard Worker '\n' 5236*cda5da8dSAndroid Build Coastguard Worker ' Display the value of *expression* if it changed, each time\n' 5237*cda5da8dSAndroid Build Coastguard Worker ' execution stops in the current frame.\n' 5238*cda5da8dSAndroid Build Coastguard Worker '\n' 5239*cda5da8dSAndroid Build Coastguard Worker ' Without *expression*, list all display expressions for the ' 5240*cda5da8dSAndroid Build Coastguard Worker 'current\n' 5241*cda5da8dSAndroid Build Coastguard Worker ' frame.\n' 5242*cda5da8dSAndroid Build Coastguard Worker '\n' 5243*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 5244*cda5da8dSAndroid Build Coastguard Worker '\n' 5245*cda5da8dSAndroid Build Coastguard Worker ' Display evaluates *expression* and compares to the result ' 5246*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 5247*cda5da8dSAndroid Build Coastguard Worker ' previous evaluation of *expression*, so when the result is\n' 5248*cda5da8dSAndroid Build Coastguard Worker ' mutable, display may not be able to pick up the changes.\n' 5249*cda5da8dSAndroid Build Coastguard Worker '\n' 5250*cda5da8dSAndroid Build Coastguard Worker ' Example:\n' 5251*cda5da8dSAndroid Build Coastguard Worker '\n' 5252*cda5da8dSAndroid Build Coastguard Worker ' lst = []\n' 5253*cda5da8dSAndroid Build Coastguard Worker ' breakpoint()\n' 5254*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 5255*cda5da8dSAndroid Build Coastguard Worker ' lst.append(1)\n' 5256*cda5da8dSAndroid Build Coastguard Worker ' print(lst)\n' 5257*cda5da8dSAndroid Build Coastguard Worker '\n' 5258*cda5da8dSAndroid Build Coastguard Worker ' Display won’t realize "lst" has been changed because the ' 5259*cda5da8dSAndroid Build Coastguard Worker 'result of\n' 5260*cda5da8dSAndroid Build Coastguard Worker ' evaluation is modified in place by "lst.append(1)" before ' 5261*cda5da8dSAndroid Build Coastguard Worker 'being\n' 5262*cda5da8dSAndroid Build Coastguard Worker ' compared:\n' 5263*cda5da8dSAndroid Build Coastguard Worker '\n' 5264*cda5da8dSAndroid Build Coastguard Worker ' > example.py(3)<module>()\n' 5265*cda5da8dSAndroid Build Coastguard Worker ' -> pass\n' 5266*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) display lst\n' 5267*cda5da8dSAndroid Build Coastguard Worker ' display lst: []\n' 5268*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) n\n' 5269*cda5da8dSAndroid Build Coastguard Worker ' > example.py(4)<module>()\n' 5270*cda5da8dSAndroid Build Coastguard Worker ' -> lst.append(1)\n' 5271*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) n\n' 5272*cda5da8dSAndroid Build Coastguard Worker ' > example.py(5)<module>()\n' 5273*cda5da8dSAndroid Build Coastguard Worker ' -> print(lst)\n' 5274*cda5da8dSAndroid Build Coastguard Worker ' (Pdb)\n' 5275*cda5da8dSAndroid Build Coastguard Worker '\n' 5276*cda5da8dSAndroid Build Coastguard Worker ' You can do some tricks with copy mechanism to make it work:\n' 5277*cda5da8dSAndroid Build Coastguard Worker '\n' 5278*cda5da8dSAndroid Build Coastguard Worker ' > example.py(3)<module>()\n' 5279*cda5da8dSAndroid Build Coastguard Worker ' -> pass\n' 5280*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) display lst[:]\n' 5281*cda5da8dSAndroid Build Coastguard Worker ' display lst[:]: []\n' 5282*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) n\n' 5283*cda5da8dSAndroid Build Coastguard Worker ' > example.py(4)<module>()\n' 5284*cda5da8dSAndroid Build Coastguard Worker ' -> lst.append(1)\n' 5285*cda5da8dSAndroid Build Coastguard Worker ' (Pdb) n\n' 5286*cda5da8dSAndroid Build Coastguard Worker ' > example.py(5)<module>()\n' 5287*cda5da8dSAndroid Build Coastguard Worker ' -> print(lst)\n' 5288*cda5da8dSAndroid Build Coastguard Worker ' display lst[:]: [1] [old: []]\n' 5289*cda5da8dSAndroid Build Coastguard Worker ' (Pdb)\n' 5290*cda5da8dSAndroid Build Coastguard Worker '\n' 5291*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 5292*cda5da8dSAndroid Build Coastguard Worker '\n' 5293*cda5da8dSAndroid Build Coastguard Worker 'undisplay [expression]\n' 5294*cda5da8dSAndroid Build Coastguard Worker '\n' 5295*cda5da8dSAndroid Build Coastguard Worker ' Do not display *expression* anymore in the current frame. ' 5296*cda5da8dSAndroid Build Coastguard Worker 'Without\n' 5297*cda5da8dSAndroid Build Coastguard Worker ' *expression*, clear all display expressions for the current ' 5298*cda5da8dSAndroid Build Coastguard Worker 'frame.\n' 5299*cda5da8dSAndroid Build Coastguard Worker '\n' 5300*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 5301*cda5da8dSAndroid Build Coastguard Worker '\n' 5302*cda5da8dSAndroid Build Coastguard Worker 'interact\n' 5303*cda5da8dSAndroid Build Coastguard Worker '\n' 5304*cda5da8dSAndroid Build Coastguard Worker ' Start an interactive interpreter (using the "code" module) ' 5305*cda5da8dSAndroid Build Coastguard Worker 'whose\n' 5306*cda5da8dSAndroid Build Coastguard Worker ' global namespace contains all the (global and local) names ' 5307*cda5da8dSAndroid Build Coastguard Worker 'found in\n' 5308*cda5da8dSAndroid Build Coastguard Worker ' the current scope.\n' 5309*cda5da8dSAndroid Build Coastguard Worker '\n' 5310*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 5311*cda5da8dSAndroid Build Coastguard Worker '\n' 5312*cda5da8dSAndroid Build Coastguard Worker 'alias [name [command]]\n' 5313*cda5da8dSAndroid Build Coastguard Worker '\n' 5314*cda5da8dSAndroid Build Coastguard Worker ' Create an alias called *name* that executes *command*. The\n' 5315*cda5da8dSAndroid Build Coastguard Worker ' *command* must *not* be enclosed in quotes. Replaceable ' 5316*cda5da8dSAndroid Build Coastguard Worker 'parameters\n' 5317*cda5da8dSAndroid Build Coastguard Worker ' can be indicated by "%1", "%2", and so on, while "%*" is ' 5318*cda5da8dSAndroid Build Coastguard Worker 'replaced\n' 5319*cda5da8dSAndroid Build Coastguard Worker ' by all the parameters. If *command* is omitted, the current ' 5320*cda5da8dSAndroid Build Coastguard Worker 'alias\n' 5321*cda5da8dSAndroid Build Coastguard Worker ' for *name* is shown. If no arguments are given, all aliases ' 5322*cda5da8dSAndroid Build Coastguard Worker 'are\n' 5323*cda5da8dSAndroid Build Coastguard Worker ' listed.\n' 5324*cda5da8dSAndroid Build Coastguard Worker '\n' 5325*cda5da8dSAndroid Build Coastguard Worker ' Aliases may be nested and can contain anything that can be ' 5326*cda5da8dSAndroid Build Coastguard Worker 'legally\n' 5327*cda5da8dSAndroid Build Coastguard Worker ' typed at the pdb prompt. Note that internal pdb commands ' 5328*cda5da8dSAndroid Build Coastguard Worker '*can* be\n' 5329*cda5da8dSAndroid Build Coastguard Worker ' overridden by aliases. Such a command is then hidden until ' 5330*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5331*cda5da8dSAndroid Build Coastguard Worker ' alias is removed. Aliasing is recursively applied to the ' 5332*cda5da8dSAndroid Build Coastguard Worker 'first\n' 5333*cda5da8dSAndroid Build Coastguard Worker ' word of the command line; all other words in the line are ' 5334*cda5da8dSAndroid Build Coastguard Worker 'left\n' 5335*cda5da8dSAndroid Build Coastguard Worker ' alone.\n' 5336*cda5da8dSAndroid Build Coastguard Worker '\n' 5337*cda5da8dSAndroid Build Coastguard Worker ' As an example, here are two useful aliases (especially when ' 5338*cda5da8dSAndroid Build Coastguard Worker 'placed\n' 5339*cda5da8dSAndroid Build Coastguard Worker ' in the ".pdbrc" file):\n' 5340*cda5da8dSAndroid Build Coastguard Worker '\n' 5341*cda5da8dSAndroid Build Coastguard Worker ' # Print instance variables (usage "pi classInst")\n' 5342*cda5da8dSAndroid Build Coastguard Worker ' alias pi for k in %1.__dict__.keys(): print(f"%1.{k} = ' 5343*cda5da8dSAndroid Build Coastguard Worker '{%1.__dict__[k]}")\n' 5344*cda5da8dSAndroid Build Coastguard Worker ' # Print instance variables in self\n' 5345*cda5da8dSAndroid Build Coastguard Worker ' alias ps pi self\n' 5346*cda5da8dSAndroid Build Coastguard Worker '\n' 5347*cda5da8dSAndroid Build Coastguard Worker 'unalias name\n' 5348*cda5da8dSAndroid Build Coastguard Worker '\n' 5349*cda5da8dSAndroid Build Coastguard Worker ' Delete the specified alias *name*.\n' 5350*cda5da8dSAndroid Build Coastguard Worker '\n' 5351*cda5da8dSAndroid Build Coastguard Worker '! statement\n' 5352*cda5da8dSAndroid Build Coastguard Worker '\n' 5353*cda5da8dSAndroid Build Coastguard Worker ' Execute the (one-line) *statement* in the context of the ' 5354*cda5da8dSAndroid Build Coastguard Worker 'current\n' 5355*cda5da8dSAndroid Build Coastguard Worker ' stack frame. The exclamation point can be omitted unless the ' 5356*cda5da8dSAndroid Build Coastguard Worker 'first\n' 5357*cda5da8dSAndroid Build Coastguard Worker ' word of the statement resembles a debugger command. To set ' 5358*cda5da8dSAndroid Build Coastguard Worker 'a\n' 5359*cda5da8dSAndroid Build Coastguard Worker ' global variable, you can prefix the assignment command with ' 5360*cda5da8dSAndroid Build Coastguard Worker 'a\n' 5361*cda5da8dSAndroid Build Coastguard Worker ' "global" statement on the same line, e.g.:\n' 5362*cda5da8dSAndroid Build Coastguard Worker '\n' 5363*cda5da8dSAndroid Build Coastguard Worker " (Pdb) global list_options; list_options = ['-l']\n" 5364*cda5da8dSAndroid Build Coastguard Worker ' (Pdb)\n' 5365*cda5da8dSAndroid Build Coastguard Worker '\n' 5366*cda5da8dSAndroid Build Coastguard Worker 'run [args ...]\n' 5367*cda5da8dSAndroid Build Coastguard Worker 'restart [args ...]\n' 5368*cda5da8dSAndroid Build Coastguard Worker '\n' 5369*cda5da8dSAndroid Build Coastguard Worker ' Restart the debugged Python program. If *args* is supplied, ' 5370*cda5da8dSAndroid Build Coastguard Worker 'it is\n' 5371*cda5da8dSAndroid Build Coastguard Worker ' split with "shlex" and the result is used as the new ' 5372*cda5da8dSAndroid Build Coastguard Worker '"sys.argv".\n' 5373*cda5da8dSAndroid Build Coastguard Worker ' History, breakpoints, actions and debugger options are ' 5374*cda5da8dSAndroid Build Coastguard Worker 'preserved.\n' 5375*cda5da8dSAndroid Build Coastguard Worker ' "restart" is an alias for "run".\n' 5376*cda5da8dSAndroid Build Coastguard Worker '\n' 5377*cda5da8dSAndroid Build Coastguard Worker 'q(uit)\n' 5378*cda5da8dSAndroid Build Coastguard Worker '\n' 5379*cda5da8dSAndroid Build Coastguard Worker ' Quit from the debugger. The program being executed is ' 5380*cda5da8dSAndroid Build Coastguard Worker 'aborted.\n' 5381*cda5da8dSAndroid Build Coastguard Worker '\n' 5382*cda5da8dSAndroid Build Coastguard Worker 'debug code\n' 5383*cda5da8dSAndroid Build Coastguard Worker '\n' 5384*cda5da8dSAndroid Build Coastguard Worker ' Enter a recursive debugger that steps through *code* (which ' 5385*cda5da8dSAndroid Build Coastguard Worker 'is an\n' 5386*cda5da8dSAndroid Build Coastguard Worker ' arbitrary expression or statement to be executed in the ' 5387*cda5da8dSAndroid Build Coastguard Worker 'current\n' 5388*cda5da8dSAndroid Build Coastguard Worker ' environment).\n' 5389*cda5da8dSAndroid Build Coastguard Worker '\n' 5390*cda5da8dSAndroid Build Coastguard Worker 'retval\n' 5391*cda5da8dSAndroid Build Coastguard Worker '\n' 5392*cda5da8dSAndroid Build Coastguard Worker ' Print the return value for the last return of the current ' 5393*cda5da8dSAndroid Build Coastguard Worker 'function.\n' 5394*cda5da8dSAndroid Build Coastguard Worker '\n' 5395*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 5396*cda5da8dSAndroid Build Coastguard Worker '\n' 5397*cda5da8dSAndroid Build Coastguard Worker '[1] Whether a frame is considered to originate in a certain ' 5398*cda5da8dSAndroid Build Coastguard Worker 'module is\n' 5399*cda5da8dSAndroid Build Coastguard Worker ' determined by the "__name__" in the frame globals.\n', 5400*cda5da8dSAndroid Build Coastguard Worker 'del': 'The "del" statement\n' 5401*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 5402*cda5da8dSAndroid Build Coastguard Worker '\n' 5403*cda5da8dSAndroid Build Coastguard Worker ' del_stmt ::= "del" target_list\n' 5404*cda5da8dSAndroid Build Coastguard Worker '\n' 5405*cda5da8dSAndroid Build Coastguard Worker 'Deletion is recursively defined very similar to the way assignment ' 5406*cda5da8dSAndroid Build Coastguard Worker 'is\n' 5407*cda5da8dSAndroid Build Coastguard Worker 'defined. Rather than spelling it out in full details, here are some\n' 5408*cda5da8dSAndroid Build Coastguard Worker 'hints.\n' 5409*cda5da8dSAndroid Build Coastguard Worker '\n' 5410*cda5da8dSAndroid Build Coastguard Worker 'Deletion of a target list recursively deletes each target, from left\n' 5411*cda5da8dSAndroid Build Coastguard Worker 'to right.\n' 5412*cda5da8dSAndroid Build Coastguard Worker '\n' 5413*cda5da8dSAndroid Build Coastguard Worker 'Deletion of a name removes the binding of that name from the local ' 5414*cda5da8dSAndroid Build Coastguard Worker 'or\n' 5415*cda5da8dSAndroid Build Coastguard Worker 'global namespace, depending on whether the name occurs in a "global"\n' 5416*cda5da8dSAndroid Build Coastguard Worker 'statement in the same code block. If the name is unbound, a\n' 5417*cda5da8dSAndroid Build Coastguard Worker '"NameError" exception will be raised.\n' 5418*cda5da8dSAndroid Build Coastguard Worker '\n' 5419*cda5da8dSAndroid Build Coastguard Worker 'Deletion of attribute references, subscriptions and slicings is ' 5420*cda5da8dSAndroid Build Coastguard Worker 'passed\n' 5421*cda5da8dSAndroid Build Coastguard Worker 'to the primary object involved; deletion of a slicing is in general\n' 5422*cda5da8dSAndroid Build Coastguard Worker 'equivalent to assignment of an empty slice of the right type (but ' 5423*cda5da8dSAndroid Build Coastguard Worker 'even\n' 5424*cda5da8dSAndroid Build Coastguard Worker 'this is determined by the sliced object).\n' 5425*cda5da8dSAndroid Build Coastguard Worker '\n' 5426*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.2: Previously it was illegal to delete a name\n' 5427*cda5da8dSAndroid Build Coastguard Worker 'from the local namespace if it occurs as a free variable in a nested\n' 5428*cda5da8dSAndroid Build Coastguard Worker 'block.\n', 5429*cda5da8dSAndroid Build Coastguard Worker 'dict': 'Dictionary displays\n' 5430*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 5431*cda5da8dSAndroid Build Coastguard Worker '\n' 5432*cda5da8dSAndroid Build Coastguard Worker 'A dictionary display is a possibly empty series of key/datum pairs\n' 5433*cda5da8dSAndroid Build Coastguard Worker 'enclosed in curly braces:\n' 5434*cda5da8dSAndroid Build Coastguard Worker '\n' 5435*cda5da8dSAndroid Build Coastguard Worker ' dict_display ::= "{" [key_datum_list | dict_comprehension] ' 5436*cda5da8dSAndroid Build Coastguard Worker '"}"\n' 5437*cda5da8dSAndroid Build Coastguard Worker ' key_datum_list ::= key_datum ("," key_datum)* [","]\n' 5438*cda5da8dSAndroid Build Coastguard Worker ' key_datum ::= expression ":" expression | "**" or_expr\n' 5439*cda5da8dSAndroid Build Coastguard Worker ' dict_comprehension ::= expression ":" expression comp_for\n' 5440*cda5da8dSAndroid Build Coastguard Worker '\n' 5441*cda5da8dSAndroid Build Coastguard Worker 'A dictionary display yields a new dictionary object.\n' 5442*cda5da8dSAndroid Build Coastguard Worker '\n' 5443*cda5da8dSAndroid Build Coastguard Worker 'If a comma-separated sequence of key/datum pairs is given, they are\n' 5444*cda5da8dSAndroid Build Coastguard Worker 'evaluated from left to right to define the entries of the ' 5445*cda5da8dSAndroid Build Coastguard Worker 'dictionary:\n' 5446*cda5da8dSAndroid Build Coastguard Worker 'each key object is used as a key into the dictionary to store the\n' 5447*cda5da8dSAndroid Build Coastguard Worker 'corresponding datum. This means that you can specify the same key\n' 5448*cda5da8dSAndroid Build Coastguard Worker 'multiple times in the key/datum list, and the final dictionary’s ' 5449*cda5da8dSAndroid Build Coastguard Worker 'value\n' 5450*cda5da8dSAndroid Build Coastguard Worker 'for that key will be the last one given.\n' 5451*cda5da8dSAndroid Build Coastguard Worker '\n' 5452*cda5da8dSAndroid Build Coastguard Worker 'A double asterisk "**" denotes *dictionary unpacking*. Its operand\n' 5453*cda5da8dSAndroid Build Coastguard Worker 'must be a *mapping*. Each mapping item is added to the new\n' 5454*cda5da8dSAndroid Build Coastguard Worker 'dictionary. Later values replace values already set by earlier\n' 5455*cda5da8dSAndroid Build Coastguard Worker 'key/datum pairs and earlier dictionary unpackings.\n' 5456*cda5da8dSAndroid Build Coastguard Worker '\n' 5457*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5: Unpacking into dictionary displays, originally\n' 5458*cda5da8dSAndroid Build Coastguard Worker 'proposed by **PEP 448**.\n' 5459*cda5da8dSAndroid Build Coastguard Worker '\n' 5460*cda5da8dSAndroid Build Coastguard Worker 'A dict comprehension, in contrast to list and set comprehensions,\n' 5461*cda5da8dSAndroid Build Coastguard Worker 'needs two expressions separated with a colon followed by the usual\n' 5462*cda5da8dSAndroid Build Coastguard Worker '“for” and “if” clauses. When the comprehension is run, the ' 5463*cda5da8dSAndroid Build Coastguard Worker 'resulting\n' 5464*cda5da8dSAndroid Build Coastguard Worker 'key and value elements are inserted in the new dictionary in the ' 5465*cda5da8dSAndroid Build Coastguard Worker 'order\n' 5466*cda5da8dSAndroid Build Coastguard Worker 'they are produced.\n' 5467*cda5da8dSAndroid Build Coastguard Worker '\n' 5468*cda5da8dSAndroid Build Coastguard Worker 'Restrictions on the types of the key values are listed earlier in\n' 5469*cda5da8dSAndroid Build Coastguard Worker 'section The standard type hierarchy. (To summarize, the key type\n' 5470*cda5da8dSAndroid Build Coastguard Worker 'should be *hashable*, which excludes all mutable objects.) Clashes\n' 5471*cda5da8dSAndroid Build Coastguard Worker 'between duplicate keys are not detected; the last datum (textually\n' 5472*cda5da8dSAndroid Build Coastguard Worker 'rightmost in the display) stored for a given key value prevails.\n' 5473*cda5da8dSAndroid Build Coastguard Worker '\n' 5474*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: Prior to Python 3.8, in dict ' 5475*cda5da8dSAndroid Build Coastguard Worker 'comprehensions,\n' 5476*cda5da8dSAndroid Build Coastguard Worker 'the evaluation order of key and value was not well-defined. In\n' 5477*cda5da8dSAndroid Build Coastguard Worker 'CPython, the value was evaluated before the key. Starting with ' 5478*cda5da8dSAndroid Build Coastguard Worker '3.8,\n' 5479*cda5da8dSAndroid Build Coastguard Worker 'the key is evaluated before the value, as proposed by **PEP 572**.\n', 5480*cda5da8dSAndroid Build Coastguard Worker 'dynamic-features': 'Interaction with dynamic features\n' 5481*cda5da8dSAndroid Build Coastguard Worker '*********************************\n' 5482*cda5da8dSAndroid Build Coastguard Worker '\n' 5483*cda5da8dSAndroid Build Coastguard Worker 'Name resolution of free variables occurs at runtime, not ' 5484*cda5da8dSAndroid Build Coastguard Worker 'at compile\n' 5485*cda5da8dSAndroid Build Coastguard Worker 'time. This means that the following code will print 42:\n' 5486*cda5da8dSAndroid Build Coastguard Worker '\n' 5487*cda5da8dSAndroid Build Coastguard Worker ' i = 10\n' 5488*cda5da8dSAndroid Build Coastguard Worker ' def f():\n' 5489*cda5da8dSAndroid Build Coastguard Worker ' print(i)\n' 5490*cda5da8dSAndroid Build Coastguard Worker ' i = 42\n' 5491*cda5da8dSAndroid Build Coastguard Worker ' f()\n' 5492*cda5da8dSAndroid Build Coastguard Worker '\n' 5493*cda5da8dSAndroid Build Coastguard Worker 'The "eval()" and "exec()" functions do not have access ' 5494*cda5da8dSAndroid Build Coastguard Worker 'to the full\n' 5495*cda5da8dSAndroid Build Coastguard Worker 'environment for resolving names. Names may be resolved ' 5496*cda5da8dSAndroid Build Coastguard Worker 'in the local\n' 5497*cda5da8dSAndroid Build Coastguard Worker 'and global namespaces of the caller. Free variables are ' 5498*cda5da8dSAndroid Build Coastguard Worker 'not resolved\n' 5499*cda5da8dSAndroid Build Coastguard Worker 'in the nearest enclosing namespace, but in the global ' 5500*cda5da8dSAndroid Build Coastguard Worker 'namespace. [1]\n' 5501*cda5da8dSAndroid Build Coastguard Worker 'The "exec()" and "eval()" functions have optional ' 5502*cda5da8dSAndroid Build Coastguard Worker 'arguments to\n' 5503*cda5da8dSAndroid Build Coastguard Worker 'override the global and local namespace. If only one ' 5504*cda5da8dSAndroid Build Coastguard Worker 'namespace is\n' 5505*cda5da8dSAndroid Build Coastguard Worker 'specified, it is used for both.\n', 5506*cda5da8dSAndroid Build Coastguard Worker 'else': 'The "if" statement\n' 5507*cda5da8dSAndroid Build Coastguard Worker '******************\n' 5508*cda5da8dSAndroid Build Coastguard Worker '\n' 5509*cda5da8dSAndroid Build Coastguard Worker 'The "if" statement is used for conditional execution:\n' 5510*cda5da8dSAndroid Build Coastguard Worker '\n' 5511*cda5da8dSAndroid Build Coastguard Worker ' if_stmt ::= "if" assignment_expression ":" suite\n' 5512*cda5da8dSAndroid Build Coastguard Worker ' ("elif" assignment_expression ":" suite)*\n' 5513*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 5514*cda5da8dSAndroid Build Coastguard Worker '\n' 5515*cda5da8dSAndroid Build Coastguard Worker 'It selects exactly one of the suites by evaluating the expressions ' 5516*cda5da8dSAndroid Build Coastguard Worker 'one\n' 5517*cda5da8dSAndroid Build Coastguard Worker 'by one until one is found to be true (see section Boolean ' 5518*cda5da8dSAndroid Build Coastguard Worker 'operations\n' 5519*cda5da8dSAndroid Build Coastguard Worker 'for the definition of true and false); then that suite is executed\n' 5520*cda5da8dSAndroid Build Coastguard Worker '(and no other part of the "if" statement is executed or evaluated).\n' 5521*cda5da8dSAndroid Build Coastguard Worker 'If all expressions are false, the suite of the "else" clause, if\n' 5522*cda5da8dSAndroid Build Coastguard Worker 'present, is executed.\n', 5523*cda5da8dSAndroid Build Coastguard Worker 'exceptions': 'Exceptions\n' 5524*cda5da8dSAndroid Build Coastguard Worker '**********\n' 5525*cda5da8dSAndroid Build Coastguard Worker '\n' 5526*cda5da8dSAndroid Build Coastguard Worker 'Exceptions are a means of breaking out of the normal flow of ' 5527*cda5da8dSAndroid Build Coastguard Worker 'control\n' 5528*cda5da8dSAndroid Build Coastguard Worker 'of a code block in order to handle errors or other ' 5529*cda5da8dSAndroid Build Coastguard Worker 'exceptional\n' 5530*cda5da8dSAndroid Build Coastguard Worker 'conditions. An exception is *raised* at the point where the ' 5531*cda5da8dSAndroid Build Coastguard Worker 'error is\n' 5532*cda5da8dSAndroid Build Coastguard Worker 'detected; it may be *handled* by the surrounding code block or ' 5533*cda5da8dSAndroid Build Coastguard Worker 'by any\n' 5534*cda5da8dSAndroid Build Coastguard Worker 'code block that directly or indirectly invoked the code block ' 5535*cda5da8dSAndroid Build Coastguard Worker 'where\n' 5536*cda5da8dSAndroid Build Coastguard Worker 'the error occurred.\n' 5537*cda5da8dSAndroid Build Coastguard Worker '\n' 5538*cda5da8dSAndroid Build Coastguard Worker 'The Python interpreter raises an exception when it detects a ' 5539*cda5da8dSAndroid Build Coastguard Worker 'run-time\n' 5540*cda5da8dSAndroid Build Coastguard Worker 'error (such as division by zero). A Python program can also\n' 5541*cda5da8dSAndroid Build Coastguard Worker 'explicitly raise an exception with the "raise" statement. ' 5542*cda5da8dSAndroid Build Coastguard Worker 'Exception\n' 5543*cda5da8dSAndroid Build Coastguard Worker 'handlers are specified with the "try" … "except" statement. ' 5544*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5545*cda5da8dSAndroid Build Coastguard Worker '"finally" clause of such a statement can be used to specify ' 5546*cda5da8dSAndroid Build Coastguard Worker 'cleanup\n' 5547*cda5da8dSAndroid Build Coastguard Worker 'code which does not handle the exception, but is executed ' 5548*cda5da8dSAndroid Build Coastguard Worker 'whether an\n' 5549*cda5da8dSAndroid Build Coastguard Worker 'exception occurred or not in the preceding code.\n' 5550*cda5da8dSAndroid Build Coastguard Worker '\n' 5551*cda5da8dSAndroid Build Coastguard Worker 'Python uses the “termination” model of error handling: an ' 5552*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 5553*cda5da8dSAndroid Build Coastguard Worker 'handler can find out what happened and continue execution at ' 5554*cda5da8dSAndroid Build Coastguard Worker 'an outer\n' 5555*cda5da8dSAndroid Build Coastguard Worker 'level, but it cannot repair the cause of the error and retry ' 5556*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5557*cda5da8dSAndroid Build Coastguard Worker 'failing operation (except by re-entering the offending piece ' 5558*cda5da8dSAndroid Build Coastguard Worker 'of code\n' 5559*cda5da8dSAndroid Build Coastguard Worker 'from the top).\n' 5560*cda5da8dSAndroid Build Coastguard Worker '\n' 5561*cda5da8dSAndroid Build Coastguard Worker 'When an exception is not handled at all, the interpreter ' 5562*cda5da8dSAndroid Build Coastguard Worker 'terminates\n' 5563*cda5da8dSAndroid Build Coastguard Worker 'execution of the program, or returns to its interactive main ' 5564*cda5da8dSAndroid Build Coastguard Worker 'loop. In\n' 5565*cda5da8dSAndroid Build Coastguard Worker 'either case, it prints a stack traceback, except when the ' 5566*cda5da8dSAndroid Build Coastguard Worker 'exception is\n' 5567*cda5da8dSAndroid Build Coastguard Worker '"SystemExit".\n' 5568*cda5da8dSAndroid Build Coastguard Worker '\n' 5569*cda5da8dSAndroid Build Coastguard Worker 'Exceptions are identified by class instances. The "except" ' 5570*cda5da8dSAndroid Build Coastguard Worker 'clause is\n' 5571*cda5da8dSAndroid Build Coastguard Worker 'selected depending on the class of the instance: it must ' 5572*cda5da8dSAndroid Build Coastguard Worker 'reference the\n' 5573*cda5da8dSAndroid Build Coastguard Worker 'class of the instance or a *non-virtual base class* thereof. ' 5574*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5575*cda5da8dSAndroid Build Coastguard Worker 'instance can be received by the handler and can carry ' 5576*cda5da8dSAndroid Build Coastguard Worker 'additional\n' 5577*cda5da8dSAndroid Build Coastguard Worker 'information about the exceptional condition.\n' 5578*cda5da8dSAndroid Build Coastguard Worker '\n' 5579*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 5580*cda5da8dSAndroid Build Coastguard Worker '\n' 5581*cda5da8dSAndroid Build Coastguard Worker ' Exception messages are not part of the Python API. Their ' 5582*cda5da8dSAndroid Build Coastguard Worker 'contents\n' 5583*cda5da8dSAndroid Build Coastguard Worker ' may change from one version of Python to the next without ' 5584*cda5da8dSAndroid Build Coastguard Worker 'warning\n' 5585*cda5da8dSAndroid Build Coastguard Worker ' and should not be relied on by code which will run under ' 5586*cda5da8dSAndroid Build Coastguard Worker 'multiple\n' 5587*cda5da8dSAndroid Build Coastguard Worker ' versions of the interpreter.\n' 5588*cda5da8dSAndroid Build Coastguard Worker '\n' 5589*cda5da8dSAndroid Build Coastguard Worker 'See also the description of the "try" statement in section The ' 5590*cda5da8dSAndroid Build Coastguard Worker 'try\n' 5591*cda5da8dSAndroid Build Coastguard Worker 'statement and "raise" statement in section The raise ' 5592*cda5da8dSAndroid Build Coastguard Worker 'statement.\n' 5593*cda5da8dSAndroid Build Coastguard Worker '\n' 5594*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 5595*cda5da8dSAndroid Build Coastguard Worker '\n' 5596*cda5da8dSAndroid Build Coastguard Worker '[1] This limitation occurs because the code that is executed ' 5597*cda5da8dSAndroid Build Coastguard Worker 'by these\n' 5598*cda5da8dSAndroid Build Coastguard Worker ' operations is not available at the time the module is ' 5599*cda5da8dSAndroid Build Coastguard Worker 'compiled.\n', 5600*cda5da8dSAndroid Build Coastguard Worker 'execmodel': 'Execution model\n' 5601*cda5da8dSAndroid Build Coastguard Worker '***************\n' 5602*cda5da8dSAndroid Build Coastguard Worker '\n' 5603*cda5da8dSAndroid Build Coastguard Worker '\n' 5604*cda5da8dSAndroid Build Coastguard Worker 'Structure of a program\n' 5605*cda5da8dSAndroid Build Coastguard Worker '======================\n' 5606*cda5da8dSAndroid Build Coastguard Worker '\n' 5607*cda5da8dSAndroid Build Coastguard Worker 'A Python program is constructed from code blocks. A *block* is ' 5608*cda5da8dSAndroid Build Coastguard Worker 'a piece\n' 5609*cda5da8dSAndroid Build Coastguard Worker 'of Python program text that is executed as a unit. The ' 5610*cda5da8dSAndroid Build Coastguard Worker 'following are\n' 5611*cda5da8dSAndroid Build Coastguard Worker 'blocks: a module, a function body, and a class definition. ' 5612*cda5da8dSAndroid Build Coastguard Worker 'Each\n' 5613*cda5da8dSAndroid Build Coastguard Worker 'command typed interactively is a block. A script file (a file ' 5614*cda5da8dSAndroid Build Coastguard Worker 'given\n' 5615*cda5da8dSAndroid Build Coastguard Worker 'as standard input to the interpreter or specified as a command ' 5616*cda5da8dSAndroid Build Coastguard Worker 'line\n' 5617*cda5da8dSAndroid Build Coastguard Worker 'argument to the interpreter) is a code block. A script command ' 5618*cda5da8dSAndroid Build Coastguard Worker '(a\n' 5619*cda5da8dSAndroid Build Coastguard Worker 'command specified on the interpreter command line with the ' 5620*cda5da8dSAndroid Build Coastguard Worker '"-c"\n' 5621*cda5da8dSAndroid Build Coastguard Worker 'option) is a code block. A module run as a top level script (as ' 5622*cda5da8dSAndroid Build Coastguard Worker 'module\n' 5623*cda5da8dSAndroid Build Coastguard Worker '"__main__") from the command line using a "-m" argument is also ' 5624*cda5da8dSAndroid Build Coastguard Worker 'a code\n' 5625*cda5da8dSAndroid Build Coastguard Worker 'block. The string argument passed to the built-in functions ' 5626*cda5da8dSAndroid Build Coastguard Worker '"eval()"\n' 5627*cda5da8dSAndroid Build Coastguard Worker 'and "exec()" is a code block.\n' 5628*cda5da8dSAndroid Build Coastguard Worker '\n' 5629*cda5da8dSAndroid Build Coastguard Worker 'A code block is executed in an *execution frame*. A frame ' 5630*cda5da8dSAndroid Build Coastguard Worker 'contains\n' 5631*cda5da8dSAndroid Build Coastguard Worker 'some administrative information (used for debugging) and ' 5632*cda5da8dSAndroid Build Coastguard Worker 'determines\n' 5633*cda5da8dSAndroid Build Coastguard Worker 'where and how execution continues after the code block’s ' 5634*cda5da8dSAndroid Build Coastguard Worker 'execution has\n' 5635*cda5da8dSAndroid Build Coastguard Worker 'completed.\n' 5636*cda5da8dSAndroid Build Coastguard Worker '\n' 5637*cda5da8dSAndroid Build Coastguard Worker '\n' 5638*cda5da8dSAndroid Build Coastguard Worker 'Naming and binding\n' 5639*cda5da8dSAndroid Build Coastguard Worker '==================\n' 5640*cda5da8dSAndroid Build Coastguard Worker '\n' 5641*cda5da8dSAndroid Build Coastguard Worker '\n' 5642*cda5da8dSAndroid Build Coastguard Worker 'Binding of names\n' 5643*cda5da8dSAndroid Build Coastguard Worker '----------------\n' 5644*cda5da8dSAndroid Build Coastguard Worker '\n' 5645*cda5da8dSAndroid Build Coastguard Worker '*Names* refer to objects. Names are introduced by name ' 5646*cda5da8dSAndroid Build Coastguard Worker 'binding\n' 5647*cda5da8dSAndroid Build Coastguard Worker 'operations.\n' 5648*cda5da8dSAndroid Build Coastguard Worker '\n' 5649*cda5da8dSAndroid Build Coastguard Worker 'The following constructs bind names:\n' 5650*cda5da8dSAndroid Build Coastguard Worker '\n' 5651*cda5da8dSAndroid Build Coastguard Worker '* formal parameters to functions,\n' 5652*cda5da8dSAndroid Build Coastguard Worker '\n' 5653*cda5da8dSAndroid Build Coastguard Worker '* class definitions,\n' 5654*cda5da8dSAndroid Build Coastguard Worker '\n' 5655*cda5da8dSAndroid Build Coastguard Worker '* function definitions,\n' 5656*cda5da8dSAndroid Build Coastguard Worker '\n' 5657*cda5da8dSAndroid Build Coastguard Worker '* assignment expressions,\n' 5658*cda5da8dSAndroid Build Coastguard Worker '\n' 5659*cda5da8dSAndroid Build Coastguard Worker '* targets that are identifiers if occurring in an assignment:\n' 5660*cda5da8dSAndroid Build Coastguard Worker '\n' 5661*cda5da8dSAndroid Build Coastguard Worker ' * "for" loop header,\n' 5662*cda5da8dSAndroid Build Coastguard Worker '\n' 5663*cda5da8dSAndroid Build Coastguard Worker ' * after "as" in a "with" statement, "except" clause, ' 5664*cda5da8dSAndroid Build Coastguard Worker '"except*"\n' 5665*cda5da8dSAndroid Build Coastguard Worker ' clause, or in the as-pattern in structural pattern ' 5666*cda5da8dSAndroid Build Coastguard Worker 'matching,\n' 5667*cda5da8dSAndroid Build Coastguard Worker '\n' 5668*cda5da8dSAndroid Build Coastguard Worker ' * in a capture pattern in structural pattern matching\n' 5669*cda5da8dSAndroid Build Coastguard Worker '\n' 5670*cda5da8dSAndroid Build Coastguard Worker '* "import" statements.\n' 5671*cda5da8dSAndroid Build Coastguard Worker '\n' 5672*cda5da8dSAndroid Build Coastguard Worker 'The "import" statement of the form "from ... import *" binds ' 5673*cda5da8dSAndroid Build Coastguard Worker 'all names\n' 5674*cda5da8dSAndroid Build Coastguard Worker 'defined in the imported module, except those beginning with an\n' 5675*cda5da8dSAndroid Build Coastguard Worker 'underscore. This form may only be used at the module level.\n' 5676*cda5da8dSAndroid Build Coastguard Worker '\n' 5677*cda5da8dSAndroid Build Coastguard Worker 'A target occurring in a "del" statement is also considered ' 5678*cda5da8dSAndroid Build Coastguard Worker 'bound for\n' 5679*cda5da8dSAndroid Build Coastguard Worker 'this purpose (though the actual semantics are to unbind the ' 5680*cda5da8dSAndroid Build Coastguard Worker 'name).\n' 5681*cda5da8dSAndroid Build Coastguard Worker '\n' 5682*cda5da8dSAndroid Build Coastguard Worker 'Each assignment or import statement occurs within a block ' 5683*cda5da8dSAndroid Build Coastguard Worker 'defined by a\n' 5684*cda5da8dSAndroid Build Coastguard Worker 'class or function definition or at the module level (the ' 5685*cda5da8dSAndroid Build Coastguard Worker 'top-level\n' 5686*cda5da8dSAndroid Build Coastguard Worker 'code block).\n' 5687*cda5da8dSAndroid Build Coastguard Worker '\n' 5688*cda5da8dSAndroid Build Coastguard Worker 'If a name is bound in a block, it is a local variable of that ' 5689*cda5da8dSAndroid Build Coastguard Worker 'block,\n' 5690*cda5da8dSAndroid Build Coastguard Worker 'unless declared as "nonlocal" or "global". If a name is bound ' 5691*cda5da8dSAndroid Build Coastguard Worker 'at the\n' 5692*cda5da8dSAndroid Build Coastguard Worker 'module level, it is a global variable. (The variables of the ' 5693*cda5da8dSAndroid Build Coastguard Worker 'module\n' 5694*cda5da8dSAndroid Build Coastguard Worker 'code block are local and global.) If a variable is used in a ' 5695*cda5da8dSAndroid Build Coastguard Worker 'code\n' 5696*cda5da8dSAndroid Build Coastguard Worker 'block but not defined there, it is a *free variable*.\n' 5697*cda5da8dSAndroid Build Coastguard Worker '\n' 5698*cda5da8dSAndroid Build Coastguard Worker 'Each occurrence of a name in the program text refers to the ' 5699*cda5da8dSAndroid Build Coastguard Worker '*binding*\n' 5700*cda5da8dSAndroid Build Coastguard Worker 'of that name established by the following name resolution ' 5701*cda5da8dSAndroid Build Coastguard Worker 'rules.\n' 5702*cda5da8dSAndroid Build Coastguard Worker '\n' 5703*cda5da8dSAndroid Build Coastguard Worker '\n' 5704*cda5da8dSAndroid Build Coastguard Worker 'Resolution of names\n' 5705*cda5da8dSAndroid Build Coastguard Worker '-------------------\n' 5706*cda5da8dSAndroid Build Coastguard Worker '\n' 5707*cda5da8dSAndroid Build Coastguard Worker 'A *scope* defines the visibility of a name within a block. If ' 5708*cda5da8dSAndroid Build Coastguard Worker 'a local\n' 5709*cda5da8dSAndroid Build Coastguard Worker 'variable is defined in a block, its scope includes that block. ' 5710*cda5da8dSAndroid Build Coastguard Worker 'If the\n' 5711*cda5da8dSAndroid Build Coastguard Worker 'definition occurs in a function block, the scope extends to any ' 5712*cda5da8dSAndroid Build Coastguard Worker 'blocks\n' 5713*cda5da8dSAndroid Build Coastguard Worker 'contained within the defining one, unless a contained block ' 5714*cda5da8dSAndroid Build Coastguard Worker 'introduces\n' 5715*cda5da8dSAndroid Build Coastguard Worker 'a different binding for the name.\n' 5716*cda5da8dSAndroid Build Coastguard Worker '\n' 5717*cda5da8dSAndroid Build Coastguard Worker 'When a name is used in a code block, it is resolved using the ' 5718*cda5da8dSAndroid Build Coastguard Worker 'nearest\n' 5719*cda5da8dSAndroid Build Coastguard Worker 'enclosing scope. The set of all such scopes visible to a code ' 5720*cda5da8dSAndroid Build Coastguard Worker 'block\n' 5721*cda5da8dSAndroid Build Coastguard Worker 'is called the block’s *environment*.\n' 5722*cda5da8dSAndroid Build Coastguard Worker '\n' 5723*cda5da8dSAndroid Build Coastguard Worker 'When a name is not found at all, a "NameError" exception is ' 5724*cda5da8dSAndroid Build Coastguard Worker 'raised. If\n' 5725*cda5da8dSAndroid Build Coastguard Worker 'the current scope is a function scope, and the name refers to a ' 5726*cda5da8dSAndroid Build Coastguard Worker 'local\n' 5727*cda5da8dSAndroid Build Coastguard Worker 'variable that has not yet been bound to a value at the point ' 5728*cda5da8dSAndroid Build Coastguard Worker 'where the\n' 5729*cda5da8dSAndroid Build Coastguard Worker 'name is used, an "UnboundLocalError" exception is raised.\n' 5730*cda5da8dSAndroid Build Coastguard Worker '"UnboundLocalError" is a subclass of "NameError".\n' 5731*cda5da8dSAndroid Build Coastguard Worker '\n' 5732*cda5da8dSAndroid Build Coastguard Worker 'If a name binding operation occurs anywhere within a code ' 5733*cda5da8dSAndroid Build Coastguard Worker 'block, all\n' 5734*cda5da8dSAndroid Build Coastguard Worker 'uses of the name within the block are treated as references to ' 5735*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5736*cda5da8dSAndroid Build Coastguard Worker 'current block. This can lead to errors when a name is used ' 5737*cda5da8dSAndroid Build Coastguard Worker 'within a\n' 5738*cda5da8dSAndroid Build Coastguard Worker 'block before it is bound. This rule is subtle. Python lacks\n' 5739*cda5da8dSAndroid Build Coastguard Worker 'declarations and allows name binding operations to occur ' 5740*cda5da8dSAndroid Build Coastguard Worker 'anywhere\n' 5741*cda5da8dSAndroid Build Coastguard Worker 'within a code block. The local variables of a code block can ' 5742*cda5da8dSAndroid Build Coastguard Worker 'be\n' 5743*cda5da8dSAndroid Build Coastguard Worker 'determined by scanning the entire text of the block for name ' 5744*cda5da8dSAndroid Build Coastguard Worker 'binding\n' 5745*cda5da8dSAndroid Build Coastguard Worker 'operations. See the FAQ entry on UnboundLocalError for ' 5746*cda5da8dSAndroid Build Coastguard Worker 'examples.\n' 5747*cda5da8dSAndroid Build Coastguard Worker '\n' 5748*cda5da8dSAndroid Build Coastguard Worker 'If the "global" statement occurs within a block, all uses of ' 5749*cda5da8dSAndroid Build Coastguard Worker 'the names\n' 5750*cda5da8dSAndroid Build Coastguard Worker 'specified in the statement refer to the bindings of those names ' 5751*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 5752*cda5da8dSAndroid Build Coastguard Worker 'top-level namespace. Names are resolved in the top-level ' 5753*cda5da8dSAndroid Build Coastguard Worker 'namespace by\n' 5754*cda5da8dSAndroid Build Coastguard Worker 'searching the global namespace, i.e. the namespace of the ' 5755*cda5da8dSAndroid Build Coastguard Worker 'module\n' 5756*cda5da8dSAndroid Build Coastguard Worker 'containing the code block, and the builtins namespace, the ' 5757*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 5758*cda5da8dSAndroid Build Coastguard Worker 'of the module "builtins". The global namespace is searched ' 5759*cda5da8dSAndroid Build Coastguard Worker 'first. If\n' 5760*cda5da8dSAndroid Build Coastguard Worker 'the names are not found there, the builtins namespace is ' 5761*cda5da8dSAndroid Build Coastguard Worker 'searched.\n' 5762*cda5da8dSAndroid Build Coastguard Worker 'The "global" statement must precede all uses of the listed ' 5763*cda5da8dSAndroid Build Coastguard Worker 'names.\n' 5764*cda5da8dSAndroid Build Coastguard Worker '\n' 5765*cda5da8dSAndroid Build Coastguard Worker 'The "global" statement has the same scope as a name binding ' 5766*cda5da8dSAndroid Build Coastguard Worker 'operation\n' 5767*cda5da8dSAndroid Build Coastguard Worker 'in the same block. If the nearest enclosing scope for a free ' 5768*cda5da8dSAndroid Build Coastguard Worker 'variable\n' 5769*cda5da8dSAndroid Build Coastguard Worker 'contains a global statement, the free variable is treated as a ' 5770*cda5da8dSAndroid Build Coastguard Worker 'global.\n' 5771*cda5da8dSAndroid Build Coastguard Worker '\n' 5772*cda5da8dSAndroid Build Coastguard Worker 'The "nonlocal" statement causes corresponding names to refer ' 5773*cda5da8dSAndroid Build Coastguard Worker 'to\n' 5774*cda5da8dSAndroid Build Coastguard Worker 'previously bound variables in the nearest enclosing function ' 5775*cda5da8dSAndroid Build Coastguard Worker 'scope.\n' 5776*cda5da8dSAndroid Build Coastguard Worker '"SyntaxError" is raised at compile time if the given name does ' 5777*cda5da8dSAndroid Build Coastguard Worker 'not\n' 5778*cda5da8dSAndroid Build Coastguard Worker 'exist in any enclosing function scope.\n' 5779*cda5da8dSAndroid Build Coastguard Worker '\n' 5780*cda5da8dSAndroid Build Coastguard Worker 'The namespace for a module is automatically created the first ' 5781*cda5da8dSAndroid Build Coastguard Worker 'time a\n' 5782*cda5da8dSAndroid Build Coastguard Worker 'module is imported. The main module for a script is always ' 5783*cda5da8dSAndroid Build Coastguard Worker 'called\n' 5784*cda5da8dSAndroid Build Coastguard Worker '"__main__".\n' 5785*cda5da8dSAndroid Build Coastguard Worker '\n' 5786*cda5da8dSAndroid Build Coastguard Worker 'Class definition blocks and arguments to "exec()" and "eval()" ' 5787*cda5da8dSAndroid Build Coastguard Worker 'are\n' 5788*cda5da8dSAndroid Build Coastguard Worker 'special in the context of name resolution. A class definition ' 5789*cda5da8dSAndroid Build Coastguard Worker 'is an\n' 5790*cda5da8dSAndroid Build Coastguard Worker 'executable statement that may use and define names. These ' 5791*cda5da8dSAndroid Build Coastguard Worker 'references\n' 5792*cda5da8dSAndroid Build Coastguard Worker 'follow the normal rules for name resolution with an exception ' 5793*cda5da8dSAndroid Build Coastguard Worker 'that\n' 5794*cda5da8dSAndroid Build Coastguard Worker 'unbound local variables are looked up in the global namespace. ' 5795*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5796*cda5da8dSAndroid Build Coastguard Worker 'namespace of the class definition becomes the attribute ' 5797*cda5da8dSAndroid Build Coastguard Worker 'dictionary of\n' 5798*cda5da8dSAndroid Build Coastguard Worker 'the class. The scope of names defined in a class block is ' 5799*cda5da8dSAndroid Build Coastguard Worker 'limited to\n' 5800*cda5da8dSAndroid Build Coastguard Worker 'the class block; it does not extend to the code blocks of ' 5801*cda5da8dSAndroid Build Coastguard Worker 'methods –\n' 5802*cda5da8dSAndroid Build Coastguard Worker 'this includes comprehensions and generator expressions since ' 5803*cda5da8dSAndroid Build Coastguard Worker 'they are\n' 5804*cda5da8dSAndroid Build Coastguard Worker 'implemented using a function scope. This means that the ' 5805*cda5da8dSAndroid Build Coastguard Worker 'following\n' 5806*cda5da8dSAndroid Build Coastguard Worker 'will fail:\n' 5807*cda5da8dSAndroid Build Coastguard Worker '\n' 5808*cda5da8dSAndroid Build Coastguard Worker ' class A:\n' 5809*cda5da8dSAndroid Build Coastguard Worker ' a = 42\n' 5810*cda5da8dSAndroid Build Coastguard Worker ' b = list(a + i for i in range(10))\n' 5811*cda5da8dSAndroid Build Coastguard Worker '\n' 5812*cda5da8dSAndroid Build Coastguard Worker '\n' 5813*cda5da8dSAndroid Build Coastguard Worker 'Builtins and restricted execution\n' 5814*cda5da8dSAndroid Build Coastguard Worker '---------------------------------\n' 5815*cda5da8dSAndroid Build Coastguard Worker '\n' 5816*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** Users should not touch\n' 5817*cda5da8dSAndroid Build Coastguard Worker '"__builtins__"; it is strictly an implementation detail. ' 5818*cda5da8dSAndroid Build Coastguard Worker 'Users\n' 5819*cda5da8dSAndroid Build Coastguard Worker 'wanting to override values in the builtins namespace should ' 5820*cda5da8dSAndroid Build Coastguard Worker '"import"\n' 5821*cda5da8dSAndroid Build Coastguard Worker 'the "builtins" module and modify its attributes appropriately.\n' 5822*cda5da8dSAndroid Build Coastguard Worker '\n' 5823*cda5da8dSAndroid Build Coastguard Worker 'The builtins namespace associated with the execution of a code ' 5824*cda5da8dSAndroid Build Coastguard Worker 'block\n' 5825*cda5da8dSAndroid Build Coastguard Worker 'is actually found by looking up the name "__builtins__" in its ' 5826*cda5da8dSAndroid Build Coastguard Worker 'global\n' 5827*cda5da8dSAndroid Build Coastguard Worker 'namespace; this should be a dictionary or a module (in the ' 5828*cda5da8dSAndroid Build Coastguard Worker 'latter case\n' 5829*cda5da8dSAndroid Build Coastguard Worker 'the module’s dictionary is used). By default, when in the ' 5830*cda5da8dSAndroid Build Coastguard Worker '"__main__"\n' 5831*cda5da8dSAndroid Build Coastguard Worker 'module, "__builtins__" is the built-in module "builtins"; when ' 5832*cda5da8dSAndroid Build Coastguard Worker 'in any\n' 5833*cda5da8dSAndroid Build Coastguard Worker 'other module, "__builtins__" is an alias for the dictionary of ' 5834*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5835*cda5da8dSAndroid Build Coastguard Worker '"builtins" module itself.\n' 5836*cda5da8dSAndroid Build Coastguard Worker '\n' 5837*cda5da8dSAndroid Build Coastguard Worker '\n' 5838*cda5da8dSAndroid Build Coastguard Worker 'Interaction with dynamic features\n' 5839*cda5da8dSAndroid Build Coastguard Worker '---------------------------------\n' 5840*cda5da8dSAndroid Build Coastguard Worker '\n' 5841*cda5da8dSAndroid Build Coastguard Worker 'Name resolution of free variables occurs at runtime, not at ' 5842*cda5da8dSAndroid Build Coastguard Worker 'compile\n' 5843*cda5da8dSAndroid Build Coastguard Worker 'time. This means that the following code will print 42:\n' 5844*cda5da8dSAndroid Build Coastguard Worker '\n' 5845*cda5da8dSAndroid Build Coastguard Worker ' i = 10\n' 5846*cda5da8dSAndroid Build Coastguard Worker ' def f():\n' 5847*cda5da8dSAndroid Build Coastguard Worker ' print(i)\n' 5848*cda5da8dSAndroid Build Coastguard Worker ' i = 42\n' 5849*cda5da8dSAndroid Build Coastguard Worker ' f()\n' 5850*cda5da8dSAndroid Build Coastguard Worker '\n' 5851*cda5da8dSAndroid Build Coastguard Worker 'The "eval()" and "exec()" functions do not have access to the ' 5852*cda5da8dSAndroid Build Coastguard Worker 'full\n' 5853*cda5da8dSAndroid Build Coastguard Worker 'environment for resolving names. Names may be resolved in the ' 5854*cda5da8dSAndroid Build Coastguard Worker 'local\n' 5855*cda5da8dSAndroid Build Coastguard Worker 'and global namespaces of the caller. Free variables are not ' 5856*cda5da8dSAndroid Build Coastguard Worker 'resolved\n' 5857*cda5da8dSAndroid Build Coastguard Worker 'in the nearest enclosing namespace, but in the global ' 5858*cda5da8dSAndroid Build Coastguard Worker 'namespace. [1]\n' 5859*cda5da8dSAndroid Build Coastguard Worker 'The "exec()" and "eval()" functions have optional arguments to\n' 5860*cda5da8dSAndroid Build Coastguard Worker 'override the global and local namespace. If only one namespace ' 5861*cda5da8dSAndroid Build Coastguard Worker 'is\n' 5862*cda5da8dSAndroid Build Coastguard Worker 'specified, it is used for both.\n' 5863*cda5da8dSAndroid Build Coastguard Worker '\n' 5864*cda5da8dSAndroid Build Coastguard Worker '\n' 5865*cda5da8dSAndroid Build Coastguard Worker 'Exceptions\n' 5866*cda5da8dSAndroid Build Coastguard Worker '==========\n' 5867*cda5da8dSAndroid Build Coastguard Worker '\n' 5868*cda5da8dSAndroid Build Coastguard Worker 'Exceptions are a means of breaking out of the normal flow of ' 5869*cda5da8dSAndroid Build Coastguard Worker 'control\n' 5870*cda5da8dSAndroid Build Coastguard Worker 'of a code block in order to handle errors or other exceptional\n' 5871*cda5da8dSAndroid Build Coastguard Worker 'conditions. An exception is *raised* at the point where the ' 5872*cda5da8dSAndroid Build Coastguard Worker 'error is\n' 5873*cda5da8dSAndroid Build Coastguard Worker 'detected; it may be *handled* by the surrounding code block or ' 5874*cda5da8dSAndroid Build Coastguard Worker 'by any\n' 5875*cda5da8dSAndroid Build Coastguard Worker 'code block that directly or indirectly invoked the code block ' 5876*cda5da8dSAndroid Build Coastguard Worker 'where\n' 5877*cda5da8dSAndroid Build Coastguard Worker 'the error occurred.\n' 5878*cda5da8dSAndroid Build Coastguard Worker '\n' 5879*cda5da8dSAndroid Build Coastguard Worker 'The Python interpreter raises an exception when it detects a ' 5880*cda5da8dSAndroid Build Coastguard Worker 'run-time\n' 5881*cda5da8dSAndroid Build Coastguard Worker 'error (such as division by zero). A Python program can also\n' 5882*cda5da8dSAndroid Build Coastguard Worker 'explicitly raise an exception with the "raise" statement. ' 5883*cda5da8dSAndroid Build Coastguard Worker 'Exception\n' 5884*cda5da8dSAndroid Build Coastguard Worker 'handlers are specified with the "try" … "except" statement. ' 5885*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5886*cda5da8dSAndroid Build Coastguard Worker '"finally" clause of such a statement can be used to specify ' 5887*cda5da8dSAndroid Build Coastguard Worker 'cleanup\n' 5888*cda5da8dSAndroid Build Coastguard Worker 'code which does not handle the exception, but is executed ' 5889*cda5da8dSAndroid Build Coastguard Worker 'whether an\n' 5890*cda5da8dSAndroid Build Coastguard Worker 'exception occurred or not in the preceding code.\n' 5891*cda5da8dSAndroid Build Coastguard Worker '\n' 5892*cda5da8dSAndroid Build Coastguard Worker 'Python uses the “termination” model of error handling: an ' 5893*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 5894*cda5da8dSAndroid Build Coastguard Worker 'handler can find out what happened and continue execution at an ' 5895*cda5da8dSAndroid Build Coastguard Worker 'outer\n' 5896*cda5da8dSAndroid Build Coastguard Worker 'level, but it cannot repair the cause of the error and retry ' 5897*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5898*cda5da8dSAndroid Build Coastguard Worker 'failing operation (except by re-entering the offending piece of ' 5899*cda5da8dSAndroid Build Coastguard Worker 'code\n' 5900*cda5da8dSAndroid Build Coastguard Worker 'from the top).\n' 5901*cda5da8dSAndroid Build Coastguard Worker '\n' 5902*cda5da8dSAndroid Build Coastguard Worker 'When an exception is not handled at all, the interpreter ' 5903*cda5da8dSAndroid Build Coastguard Worker 'terminates\n' 5904*cda5da8dSAndroid Build Coastguard Worker 'execution of the program, or returns to its interactive main ' 5905*cda5da8dSAndroid Build Coastguard Worker 'loop. In\n' 5906*cda5da8dSAndroid Build Coastguard Worker 'either case, it prints a stack traceback, except when the ' 5907*cda5da8dSAndroid Build Coastguard Worker 'exception is\n' 5908*cda5da8dSAndroid Build Coastguard Worker '"SystemExit".\n' 5909*cda5da8dSAndroid Build Coastguard Worker '\n' 5910*cda5da8dSAndroid Build Coastguard Worker 'Exceptions are identified by class instances. The "except" ' 5911*cda5da8dSAndroid Build Coastguard Worker 'clause is\n' 5912*cda5da8dSAndroid Build Coastguard Worker 'selected depending on the class of the instance: it must ' 5913*cda5da8dSAndroid Build Coastguard Worker 'reference the\n' 5914*cda5da8dSAndroid Build Coastguard Worker 'class of the instance or a *non-virtual base class* thereof. ' 5915*cda5da8dSAndroid Build Coastguard Worker 'The\n' 5916*cda5da8dSAndroid Build Coastguard Worker 'instance can be received by the handler and can carry ' 5917*cda5da8dSAndroid Build Coastguard Worker 'additional\n' 5918*cda5da8dSAndroid Build Coastguard Worker 'information about the exceptional condition.\n' 5919*cda5da8dSAndroid Build Coastguard Worker '\n' 5920*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 5921*cda5da8dSAndroid Build Coastguard Worker '\n' 5922*cda5da8dSAndroid Build Coastguard Worker ' Exception messages are not part of the Python API. Their ' 5923*cda5da8dSAndroid Build Coastguard Worker 'contents\n' 5924*cda5da8dSAndroid Build Coastguard Worker ' may change from one version of Python to the next without ' 5925*cda5da8dSAndroid Build Coastguard Worker 'warning\n' 5926*cda5da8dSAndroid Build Coastguard Worker ' and should not be relied on by code which will run under ' 5927*cda5da8dSAndroid Build Coastguard Worker 'multiple\n' 5928*cda5da8dSAndroid Build Coastguard Worker ' versions of the interpreter.\n' 5929*cda5da8dSAndroid Build Coastguard Worker '\n' 5930*cda5da8dSAndroid Build Coastguard Worker 'See also the description of the "try" statement in section The ' 5931*cda5da8dSAndroid Build Coastguard Worker 'try\n' 5932*cda5da8dSAndroid Build Coastguard Worker 'statement and "raise" statement in section The raise ' 5933*cda5da8dSAndroid Build Coastguard Worker 'statement.\n' 5934*cda5da8dSAndroid Build Coastguard Worker '\n' 5935*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 5936*cda5da8dSAndroid Build Coastguard Worker '\n' 5937*cda5da8dSAndroid Build Coastguard Worker '[1] This limitation occurs because the code that is executed by ' 5938*cda5da8dSAndroid Build Coastguard Worker 'these\n' 5939*cda5da8dSAndroid Build Coastguard Worker ' operations is not available at the time the module is ' 5940*cda5da8dSAndroid Build Coastguard Worker 'compiled.\n', 5941*cda5da8dSAndroid Build Coastguard Worker 'exprlists': 'Expression lists\n' 5942*cda5da8dSAndroid Build Coastguard Worker '****************\n' 5943*cda5da8dSAndroid Build Coastguard Worker '\n' 5944*cda5da8dSAndroid Build Coastguard Worker ' expression_list ::= expression ("," expression)* [","]\n' 5945*cda5da8dSAndroid Build Coastguard Worker ' starred_list ::= starred_item ("," starred_item)* ' 5946*cda5da8dSAndroid Build Coastguard Worker '[","]\n' 5947*cda5da8dSAndroid Build Coastguard Worker ' starred_expression ::= expression | (starred_item ",")* ' 5948*cda5da8dSAndroid Build Coastguard Worker '[starred_item]\n' 5949*cda5da8dSAndroid Build Coastguard Worker ' starred_item ::= assignment_expression | "*" or_expr\n' 5950*cda5da8dSAndroid Build Coastguard Worker '\n' 5951*cda5da8dSAndroid Build Coastguard Worker 'Except when part of a list or set display, an expression list\n' 5952*cda5da8dSAndroid Build Coastguard Worker 'containing at least one comma yields a tuple. The length of ' 5953*cda5da8dSAndroid Build Coastguard Worker 'the tuple\n' 5954*cda5da8dSAndroid Build Coastguard Worker 'is the number of expressions in the list. The expressions are\n' 5955*cda5da8dSAndroid Build Coastguard Worker 'evaluated from left to right.\n' 5956*cda5da8dSAndroid Build Coastguard Worker '\n' 5957*cda5da8dSAndroid Build Coastguard Worker 'An asterisk "*" denotes *iterable unpacking*. Its operand must ' 5958*cda5da8dSAndroid Build Coastguard Worker 'be an\n' 5959*cda5da8dSAndroid Build Coastguard Worker '*iterable*. The iterable is expanded into a sequence of items, ' 5960*cda5da8dSAndroid Build Coastguard Worker 'which\n' 5961*cda5da8dSAndroid Build Coastguard Worker 'are included in the new tuple, list, or set, at the site of ' 5962*cda5da8dSAndroid Build Coastguard Worker 'the\n' 5963*cda5da8dSAndroid Build Coastguard Worker 'unpacking.\n' 5964*cda5da8dSAndroid Build Coastguard Worker '\n' 5965*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.5: Iterable unpacking in expression lists, ' 5966*cda5da8dSAndroid Build Coastguard Worker 'originally\n' 5967*cda5da8dSAndroid Build Coastguard Worker 'proposed by **PEP 448**.\n' 5968*cda5da8dSAndroid Build Coastguard Worker '\n' 5969*cda5da8dSAndroid Build Coastguard Worker 'The trailing comma is required only to create a single tuple ' 5970*cda5da8dSAndroid Build Coastguard Worker '(a.k.a. a\n' 5971*cda5da8dSAndroid Build Coastguard Worker '*singleton*); it is optional in all other cases. A single ' 5972*cda5da8dSAndroid Build Coastguard Worker 'expression\n' 5973*cda5da8dSAndroid Build Coastguard Worker 'without a trailing comma doesn’t create a tuple, but rather ' 5974*cda5da8dSAndroid Build Coastguard Worker 'yields the\n' 5975*cda5da8dSAndroid Build Coastguard Worker 'value of that expression. (To create an empty tuple, use an ' 5976*cda5da8dSAndroid Build Coastguard Worker 'empty pair\n' 5977*cda5da8dSAndroid Build Coastguard Worker 'of parentheses: "()".)\n', 5978*cda5da8dSAndroid Build Coastguard Worker 'floating': 'Floating point literals\n' 5979*cda5da8dSAndroid Build Coastguard Worker '***********************\n' 5980*cda5da8dSAndroid Build Coastguard Worker '\n' 5981*cda5da8dSAndroid Build Coastguard Worker 'Floating point literals are described by the following lexical\n' 5982*cda5da8dSAndroid Build Coastguard Worker 'definitions:\n' 5983*cda5da8dSAndroid Build Coastguard Worker '\n' 5984*cda5da8dSAndroid Build Coastguard Worker ' floatnumber ::= pointfloat | exponentfloat\n' 5985*cda5da8dSAndroid Build Coastguard Worker ' pointfloat ::= [digitpart] fraction | digitpart "."\n' 5986*cda5da8dSAndroid Build Coastguard Worker ' exponentfloat ::= (digitpart | pointfloat) exponent\n' 5987*cda5da8dSAndroid Build Coastguard Worker ' digitpart ::= digit (["_"] digit)*\n' 5988*cda5da8dSAndroid Build Coastguard Worker ' fraction ::= "." digitpart\n' 5989*cda5da8dSAndroid Build Coastguard Worker ' exponent ::= ("e" | "E") ["+" | "-"] digitpart\n' 5990*cda5da8dSAndroid Build Coastguard Worker '\n' 5991*cda5da8dSAndroid Build Coastguard Worker 'Note that the integer and exponent parts are always interpreted ' 5992*cda5da8dSAndroid Build Coastguard Worker 'using\n' 5993*cda5da8dSAndroid Build Coastguard Worker 'radix 10. For example, "077e010" is legal, and denotes the same ' 5994*cda5da8dSAndroid Build Coastguard Worker 'number\n' 5995*cda5da8dSAndroid Build Coastguard Worker 'as "77e10". The allowed range of floating point literals is\n' 5996*cda5da8dSAndroid Build Coastguard Worker 'implementation-dependent. As in integer literals, underscores ' 5997*cda5da8dSAndroid Build Coastguard Worker 'are\n' 5998*cda5da8dSAndroid Build Coastguard Worker 'supported for digit grouping.\n' 5999*cda5da8dSAndroid Build Coastguard Worker '\n' 6000*cda5da8dSAndroid Build Coastguard Worker 'Some examples of floating point literals:\n' 6001*cda5da8dSAndroid Build Coastguard Worker '\n' 6002*cda5da8dSAndroid Build Coastguard Worker ' 3.14 10. .001 1e100 3.14e-10 0e0 ' 6003*cda5da8dSAndroid Build Coastguard Worker '3.14_15_93\n' 6004*cda5da8dSAndroid Build Coastguard Worker '\n' 6005*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.6: Underscores are now allowed for ' 6006*cda5da8dSAndroid Build Coastguard Worker 'grouping\n' 6007*cda5da8dSAndroid Build Coastguard Worker 'purposes in literals.\n', 6008*cda5da8dSAndroid Build Coastguard Worker 'for': 'The "for" statement\n' 6009*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 6010*cda5da8dSAndroid Build Coastguard Worker '\n' 6011*cda5da8dSAndroid Build Coastguard Worker 'The "for" statement is used to iterate over the elements of a ' 6012*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 6013*cda5da8dSAndroid Build Coastguard Worker '(such as a string, tuple or list) or other iterable object:\n' 6014*cda5da8dSAndroid Build Coastguard Worker '\n' 6015*cda5da8dSAndroid Build Coastguard Worker ' for_stmt ::= "for" target_list "in" starred_list ":" suite\n' 6016*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 6017*cda5da8dSAndroid Build Coastguard Worker '\n' 6018*cda5da8dSAndroid Build Coastguard Worker 'The "starred_list" expression is evaluated once; it should yield an\n' 6019*cda5da8dSAndroid Build Coastguard Worker '*iterable* object. An *iterator* is created for that iterable. The\n' 6020*cda5da8dSAndroid Build Coastguard Worker 'first item provided by the iterator is then assigned to the target\n' 6021*cda5da8dSAndroid Build Coastguard Worker 'list using the standard rules for assignments (see Assignment\n' 6022*cda5da8dSAndroid Build Coastguard Worker 'statements), and the suite is executed. This repeats for each item\n' 6023*cda5da8dSAndroid Build Coastguard Worker 'provided by the iterator. When the iterator is exhausted, the suite\n' 6024*cda5da8dSAndroid Build Coastguard Worker 'in the "else" clause, if present, is executed, and the loop\n' 6025*cda5da8dSAndroid Build Coastguard Worker 'terminates.\n' 6026*cda5da8dSAndroid Build Coastguard Worker '\n' 6027*cda5da8dSAndroid Build Coastguard Worker 'A "break" statement executed in the first suite terminates the loop\n' 6028*cda5da8dSAndroid Build Coastguard Worker 'without executing the "else" clause’s suite. A "continue" statement\n' 6029*cda5da8dSAndroid Build Coastguard Worker 'executed in the first suite skips the rest of the suite and ' 6030*cda5da8dSAndroid Build Coastguard Worker 'continues\n' 6031*cda5da8dSAndroid Build Coastguard Worker 'with the next item, or with the "else" clause if there is no next\n' 6032*cda5da8dSAndroid Build Coastguard Worker 'item.\n' 6033*cda5da8dSAndroid Build Coastguard Worker '\n' 6034*cda5da8dSAndroid Build Coastguard Worker 'The for-loop makes assignments to the variables in the target list.\n' 6035*cda5da8dSAndroid Build Coastguard Worker 'This overwrites all previous assignments to those variables ' 6036*cda5da8dSAndroid Build Coastguard Worker 'including\n' 6037*cda5da8dSAndroid Build Coastguard Worker 'those made in the suite of the for-loop:\n' 6038*cda5da8dSAndroid Build Coastguard Worker '\n' 6039*cda5da8dSAndroid Build Coastguard Worker ' for i in range(10):\n' 6040*cda5da8dSAndroid Build Coastguard Worker ' print(i)\n' 6041*cda5da8dSAndroid Build Coastguard Worker ' i = 5 # this will not affect the for-loop\n' 6042*cda5da8dSAndroid Build Coastguard Worker ' # because i will be overwritten with the ' 6043*cda5da8dSAndroid Build Coastguard Worker 'next\n' 6044*cda5da8dSAndroid Build Coastguard Worker ' # index in the range\n' 6045*cda5da8dSAndroid Build Coastguard Worker '\n' 6046*cda5da8dSAndroid Build Coastguard Worker 'Names in the target list are not deleted when the loop is finished,\n' 6047*cda5da8dSAndroid Build Coastguard Worker 'but if the sequence is empty, they will not have been assigned to at\n' 6048*cda5da8dSAndroid Build Coastguard Worker 'all by the loop. Hint: the built-in type "range()" represents\n' 6049*cda5da8dSAndroid Build Coastguard Worker 'immutable arithmetic sequences of integers. For instance, iterating\n' 6050*cda5da8dSAndroid Build Coastguard Worker '"range(3)" successively yields 0, 1, and then 2.\n' 6051*cda5da8dSAndroid Build Coastguard Worker '\n' 6052*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.11: Starred elements are now allowed in the\n' 6053*cda5da8dSAndroid Build Coastguard Worker 'expression list.\n', 6054*cda5da8dSAndroid Build Coastguard Worker 'formatstrings': 'Format String Syntax\n' 6055*cda5da8dSAndroid Build Coastguard Worker '********************\n' 6056*cda5da8dSAndroid Build Coastguard Worker '\n' 6057*cda5da8dSAndroid Build Coastguard Worker 'The "str.format()" method and the "Formatter" class share ' 6058*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 6059*cda5da8dSAndroid Build Coastguard Worker 'syntax for format strings (although in the case of ' 6060*cda5da8dSAndroid Build Coastguard Worker '"Formatter",\n' 6061*cda5da8dSAndroid Build Coastguard Worker 'subclasses can define their own format string syntax). The ' 6062*cda5da8dSAndroid Build Coastguard Worker 'syntax is\n' 6063*cda5da8dSAndroid Build Coastguard Worker 'related to that of formatted string literals, but it is ' 6064*cda5da8dSAndroid Build Coastguard Worker 'less\n' 6065*cda5da8dSAndroid Build Coastguard Worker 'sophisticated and, in particular, does not support ' 6066*cda5da8dSAndroid Build Coastguard Worker 'arbitrary\n' 6067*cda5da8dSAndroid Build Coastguard Worker 'expressions.\n' 6068*cda5da8dSAndroid Build Coastguard Worker '\n' 6069*cda5da8dSAndroid Build Coastguard Worker 'Format strings contain “replacement fields” surrounded by ' 6070*cda5da8dSAndroid Build Coastguard Worker 'curly braces\n' 6071*cda5da8dSAndroid Build Coastguard Worker '"{}". Anything that is not contained in braces is ' 6072*cda5da8dSAndroid Build Coastguard Worker 'considered literal\n' 6073*cda5da8dSAndroid Build Coastguard Worker 'text, which is copied unchanged to the output. If you need ' 6074*cda5da8dSAndroid Build Coastguard Worker 'to include\n' 6075*cda5da8dSAndroid Build Coastguard Worker 'a brace character in the literal text, it can be escaped by ' 6076*cda5da8dSAndroid Build Coastguard Worker 'doubling:\n' 6077*cda5da8dSAndroid Build Coastguard Worker '"{{" and "}}".\n' 6078*cda5da8dSAndroid Build Coastguard Worker '\n' 6079*cda5da8dSAndroid Build Coastguard Worker 'The grammar for a replacement field is as follows:\n' 6080*cda5da8dSAndroid Build Coastguard Worker '\n' 6081*cda5da8dSAndroid Build Coastguard Worker ' replacement_field ::= "{" [field_name] ["!" ' 6082*cda5da8dSAndroid Build Coastguard Worker 'conversion] [":" format_spec] "}"\n' 6083*cda5da8dSAndroid Build Coastguard Worker ' field_name ::= arg_name ("." attribute_name | ' 6084*cda5da8dSAndroid Build Coastguard Worker '"[" element_index "]")*\n' 6085*cda5da8dSAndroid Build Coastguard Worker ' arg_name ::= [identifier | digit+]\n' 6086*cda5da8dSAndroid Build Coastguard Worker ' attribute_name ::= identifier\n' 6087*cda5da8dSAndroid Build Coastguard Worker ' element_index ::= digit+ | index_string\n' 6088*cda5da8dSAndroid Build Coastguard Worker ' index_string ::= <any source character except ' 6089*cda5da8dSAndroid Build Coastguard Worker '"]"> +\n' 6090*cda5da8dSAndroid Build Coastguard Worker ' conversion ::= "r" | "s" | "a"\n' 6091*cda5da8dSAndroid Build Coastguard Worker ' format_spec ::= <described in the next ' 6092*cda5da8dSAndroid Build Coastguard Worker 'section>\n' 6093*cda5da8dSAndroid Build Coastguard Worker '\n' 6094*cda5da8dSAndroid Build Coastguard Worker 'In less formal terms, the replacement field can start with ' 6095*cda5da8dSAndroid Build Coastguard Worker 'a\n' 6096*cda5da8dSAndroid Build Coastguard Worker '*field_name* that specifies the object whose value is to be ' 6097*cda5da8dSAndroid Build Coastguard Worker 'formatted\n' 6098*cda5da8dSAndroid Build Coastguard Worker 'and inserted into the output instead of the replacement ' 6099*cda5da8dSAndroid Build Coastguard Worker 'field. The\n' 6100*cda5da8dSAndroid Build Coastguard Worker '*field_name* is optionally followed by a *conversion* ' 6101*cda5da8dSAndroid Build Coastguard Worker 'field, which is\n' 6102*cda5da8dSAndroid Build Coastguard Worker 'preceded by an exclamation point "\'!\'", and a ' 6103*cda5da8dSAndroid Build Coastguard Worker '*format_spec*, which is\n' 6104*cda5da8dSAndroid Build Coastguard Worker 'preceded by a colon "\':\'". These specify a non-default ' 6105*cda5da8dSAndroid Build Coastguard Worker 'format for the\n' 6106*cda5da8dSAndroid Build Coastguard Worker 'replacement value.\n' 6107*cda5da8dSAndroid Build Coastguard Worker '\n' 6108*cda5da8dSAndroid Build Coastguard Worker 'See also the Format Specification Mini-Language section.\n' 6109*cda5da8dSAndroid Build Coastguard Worker '\n' 6110*cda5da8dSAndroid Build Coastguard Worker 'The *field_name* itself begins with an *arg_name* that is ' 6111*cda5da8dSAndroid Build Coastguard Worker 'either a\n' 6112*cda5da8dSAndroid Build Coastguard Worker 'number or a keyword. If it’s a number, it refers to a ' 6113*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 6114*cda5da8dSAndroid Build Coastguard Worker 'argument, and if it’s a keyword, it refers to a named ' 6115*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 6116*cda5da8dSAndroid Build Coastguard Worker 'argument. If the numerical arg_names in a format string ' 6117*cda5da8dSAndroid Build Coastguard Worker 'are 0, 1, 2,\n' 6118*cda5da8dSAndroid Build Coastguard Worker '… in sequence, they can all be omitted (not just some) and ' 6119*cda5da8dSAndroid Build Coastguard Worker 'the numbers\n' 6120*cda5da8dSAndroid Build Coastguard Worker '0, 1, 2, … will be automatically inserted in that order. ' 6121*cda5da8dSAndroid Build Coastguard Worker 'Because\n' 6122*cda5da8dSAndroid Build Coastguard Worker '*arg_name* is not quote-delimited, it is not possible to ' 6123*cda5da8dSAndroid Build Coastguard Worker 'specify\n' 6124*cda5da8dSAndroid Build Coastguard Worker 'arbitrary dictionary keys (e.g., the strings "\'10\'" or ' 6125*cda5da8dSAndroid Build Coastguard Worker '"\':-]\'") within\n' 6126*cda5da8dSAndroid Build Coastguard Worker 'a format string. The *arg_name* can be followed by any ' 6127*cda5da8dSAndroid Build Coastguard Worker 'number of index\n' 6128*cda5da8dSAndroid Build Coastguard Worker 'or attribute expressions. An expression of the form ' 6129*cda5da8dSAndroid Build Coastguard Worker '"\'.name\'" selects\n' 6130*cda5da8dSAndroid Build Coastguard Worker 'the named attribute using "getattr()", while an expression ' 6131*cda5da8dSAndroid Build Coastguard Worker 'of the form\n' 6132*cda5da8dSAndroid Build Coastguard Worker '"\'[index]\'" does an index lookup using "__getitem__()".\n' 6133*cda5da8dSAndroid Build Coastguard Worker '\n' 6134*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.1: The positional argument specifiers ' 6135*cda5da8dSAndroid Build Coastguard Worker 'can be\n' 6136*cda5da8dSAndroid Build Coastguard Worker 'omitted for "str.format()", so "\'{} {}\'.format(a, b)" is ' 6137*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 6138*cda5da8dSAndroid Build Coastguard Worker '"\'{0} {1}\'.format(a, b)".\n' 6139*cda5da8dSAndroid Build Coastguard Worker '\n' 6140*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.4: The positional argument specifiers ' 6141*cda5da8dSAndroid Build Coastguard Worker 'can be\n' 6142*cda5da8dSAndroid Build Coastguard Worker 'omitted for "Formatter".\n' 6143*cda5da8dSAndroid Build Coastguard Worker '\n' 6144*cda5da8dSAndroid Build Coastguard Worker 'Some simple format string examples:\n' 6145*cda5da8dSAndroid Build Coastguard Worker '\n' 6146*cda5da8dSAndroid Build Coastguard Worker ' "First, thou shalt count to {0}" # References first ' 6147*cda5da8dSAndroid Build Coastguard Worker 'positional argument\n' 6148*cda5da8dSAndroid Build Coastguard Worker ' "Bring me a {}" # Implicitly ' 6149*cda5da8dSAndroid Build Coastguard Worker 'references the first positional argument\n' 6150*cda5da8dSAndroid Build Coastguard Worker ' "From {} to {}" # Same as "From {0} to ' 6151*cda5da8dSAndroid Build Coastguard Worker '{1}"\n' 6152*cda5da8dSAndroid Build Coastguard Worker ' "My quest is {name}" # References keyword ' 6153*cda5da8dSAndroid Build Coastguard Worker "argument 'name'\n" 6154*cda5da8dSAndroid Build Coastguard Worker ' "Weight in tons {0.weight}" # \'weight\' attribute ' 6155*cda5da8dSAndroid Build Coastguard Worker 'of first positional arg\n' 6156*cda5da8dSAndroid Build Coastguard Worker ' "Units destroyed: {players[0]}" # First element of ' 6157*cda5da8dSAndroid Build Coastguard Worker "keyword argument 'players'.\n" 6158*cda5da8dSAndroid Build Coastguard Worker '\n' 6159*cda5da8dSAndroid Build Coastguard Worker 'The *conversion* field causes a type coercion before ' 6160*cda5da8dSAndroid Build Coastguard Worker 'formatting.\n' 6161*cda5da8dSAndroid Build Coastguard Worker 'Normally, the job of formatting a value is done by the ' 6162*cda5da8dSAndroid Build Coastguard Worker '"__format__()"\n' 6163*cda5da8dSAndroid Build Coastguard Worker 'method of the value itself. However, in some cases it is ' 6164*cda5da8dSAndroid Build Coastguard Worker 'desirable to\n' 6165*cda5da8dSAndroid Build Coastguard Worker 'force a type to be formatted as a string, overriding its ' 6166*cda5da8dSAndroid Build Coastguard Worker 'own\n' 6167*cda5da8dSAndroid Build Coastguard Worker 'definition of formatting. By converting the value to a ' 6168*cda5da8dSAndroid Build Coastguard Worker 'string before\n' 6169*cda5da8dSAndroid Build Coastguard Worker 'calling "__format__()", the normal formatting logic is ' 6170*cda5da8dSAndroid Build Coastguard Worker 'bypassed.\n' 6171*cda5da8dSAndroid Build Coastguard Worker '\n' 6172*cda5da8dSAndroid Build Coastguard Worker 'Three conversion flags are currently supported: "\'!s\'" ' 6173*cda5da8dSAndroid Build Coastguard Worker 'which calls\n' 6174*cda5da8dSAndroid Build Coastguard Worker '"str()" on the value, "\'!r\'" which calls "repr()" and ' 6175*cda5da8dSAndroid Build Coastguard Worker '"\'!a\'" which\n' 6176*cda5da8dSAndroid Build Coastguard Worker 'calls "ascii()".\n' 6177*cda5da8dSAndroid Build Coastguard Worker '\n' 6178*cda5da8dSAndroid Build Coastguard Worker 'Some examples:\n' 6179*cda5da8dSAndroid Build Coastguard Worker '\n' 6180*cda5da8dSAndroid Build Coastguard Worker ' "Harold\'s a clever {0!s}" # Calls str() on the ' 6181*cda5da8dSAndroid Build Coastguard Worker 'argument first\n' 6182*cda5da8dSAndroid Build Coastguard Worker ' "Bring out the holy {name!r}" # Calls repr() on the ' 6183*cda5da8dSAndroid Build Coastguard Worker 'argument first\n' 6184*cda5da8dSAndroid Build Coastguard Worker ' "More {!a}" # Calls ascii() on the ' 6185*cda5da8dSAndroid Build Coastguard Worker 'argument first\n' 6186*cda5da8dSAndroid Build Coastguard Worker '\n' 6187*cda5da8dSAndroid Build Coastguard Worker 'The *format_spec* field contains a specification of how the ' 6188*cda5da8dSAndroid Build Coastguard Worker 'value\n' 6189*cda5da8dSAndroid Build Coastguard Worker 'should be presented, including such details as field width, ' 6190*cda5da8dSAndroid Build Coastguard Worker 'alignment,\n' 6191*cda5da8dSAndroid Build Coastguard Worker 'padding, decimal precision and so on. Each value type can ' 6192*cda5da8dSAndroid Build Coastguard Worker 'define its\n' 6193*cda5da8dSAndroid Build Coastguard Worker 'own “formatting mini-language” or interpretation of the ' 6194*cda5da8dSAndroid Build Coastguard Worker '*format_spec*.\n' 6195*cda5da8dSAndroid Build Coastguard Worker '\n' 6196*cda5da8dSAndroid Build Coastguard Worker 'Most built-in types support a common formatting ' 6197*cda5da8dSAndroid Build Coastguard Worker 'mini-language, which\n' 6198*cda5da8dSAndroid Build Coastguard Worker 'is described in the next section.\n' 6199*cda5da8dSAndroid Build Coastguard Worker '\n' 6200*cda5da8dSAndroid Build Coastguard Worker 'A *format_spec* field can also include nested replacement ' 6201*cda5da8dSAndroid Build Coastguard Worker 'fields\n' 6202*cda5da8dSAndroid Build Coastguard Worker 'within it. These nested replacement fields may contain a ' 6203*cda5da8dSAndroid Build Coastguard Worker 'field name,\n' 6204*cda5da8dSAndroid Build Coastguard Worker 'conversion flag and format specification, but deeper ' 6205*cda5da8dSAndroid Build Coastguard Worker 'nesting is not\n' 6206*cda5da8dSAndroid Build Coastguard Worker 'allowed. The replacement fields within the format_spec ' 6207*cda5da8dSAndroid Build Coastguard Worker 'are\n' 6208*cda5da8dSAndroid Build Coastguard Worker 'substituted before the *format_spec* string is interpreted. ' 6209*cda5da8dSAndroid Build Coastguard Worker 'This\n' 6210*cda5da8dSAndroid Build Coastguard Worker 'allows the formatting of a value to be dynamically ' 6211*cda5da8dSAndroid Build Coastguard Worker 'specified.\n' 6212*cda5da8dSAndroid Build Coastguard Worker '\n' 6213*cda5da8dSAndroid Build Coastguard Worker 'See the Format examples section for some examples.\n' 6214*cda5da8dSAndroid Build Coastguard Worker '\n' 6215*cda5da8dSAndroid Build Coastguard Worker '\n' 6216*cda5da8dSAndroid Build Coastguard Worker 'Format Specification Mini-Language\n' 6217*cda5da8dSAndroid Build Coastguard Worker '==================================\n' 6218*cda5da8dSAndroid Build Coastguard Worker '\n' 6219*cda5da8dSAndroid Build Coastguard Worker '“Format specifications” are used within replacement fields ' 6220*cda5da8dSAndroid Build Coastguard Worker 'contained\n' 6221*cda5da8dSAndroid Build Coastguard Worker 'within a format string to define how individual values are ' 6222*cda5da8dSAndroid Build Coastguard Worker 'presented\n' 6223*cda5da8dSAndroid Build Coastguard Worker '(see Format String Syntax and Formatted string literals). ' 6224*cda5da8dSAndroid Build Coastguard Worker 'They can\n' 6225*cda5da8dSAndroid Build Coastguard Worker 'also be passed directly to the built-in "format()" ' 6226*cda5da8dSAndroid Build Coastguard Worker 'function. Each\n' 6227*cda5da8dSAndroid Build Coastguard Worker 'formattable type may define how the format specification is ' 6228*cda5da8dSAndroid Build Coastguard Worker 'to be\n' 6229*cda5da8dSAndroid Build Coastguard Worker 'interpreted.\n' 6230*cda5da8dSAndroid Build Coastguard Worker '\n' 6231*cda5da8dSAndroid Build Coastguard Worker 'Most built-in types implement the following options for ' 6232*cda5da8dSAndroid Build Coastguard Worker 'format\n' 6233*cda5da8dSAndroid Build Coastguard Worker 'specifications, although some of the formatting options are ' 6234*cda5da8dSAndroid Build Coastguard Worker 'only\n' 6235*cda5da8dSAndroid Build Coastguard Worker 'supported by the numeric types.\n' 6236*cda5da8dSAndroid Build Coastguard Worker '\n' 6237*cda5da8dSAndroid Build Coastguard Worker 'A general convention is that an empty format specification ' 6238*cda5da8dSAndroid Build Coastguard Worker 'produces\n' 6239*cda5da8dSAndroid Build Coastguard Worker 'the same result as if you had called "str()" on the value. ' 6240*cda5da8dSAndroid Build Coastguard Worker 'A non-empty\n' 6241*cda5da8dSAndroid Build Coastguard Worker 'format specification typically modifies the result.\n' 6242*cda5da8dSAndroid Build Coastguard Worker '\n' 6243*cda5da8dSAndroid Build Coastguard Worker 'The general form of a *standard format specifier* is:\n' 6244*cda5da8dSAndroid Build Coastguard Worker '\n' 6245*cda5da8dSAndroid Build Coastguard Worker ' format_spec ::= ' 6246*cda5da8dSAndroid Build Coastguard Worker '[[fill]align][sign]["z"]["#"]["0"][width][grouping_option]["." ' 6247*cda5da8dSAndroid Build Coastguard Worker 'precision][type]\n' 6248*cda5da8dSAndroid Build Coastguard Worker ' fill ::= <any character>\n' 6249*cda5da8dSAndroid Build Coastguard Worker ' align ::= "<" | ">" | "=" | "^"\n' 6250*cda5da8dSAndroid Build Coastguard Worker ' sign ::= "+" | "-" | " "\n' 6251*cda5da8dSAndroid Build Coastguard Worker ' width ::= digit+\n' 6252*cda5da8dSAndroid Build Coastguard Worker ' grouping_option ::= "_" | ","\n' 6253*cda5da8dSAndroid Build Coastguard Worker ' precision ::= digit+\n' 6254*cda5da8dSAndroid Build Coastguard Worker ' type ::= "b" | "c" | "d" | "e" | "E" | "f" | ' 6255*cda5da8dSAndroid Build Coastguard Worker '"F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"\n' 6256*cda5da8dSAndroid Build Coastguard Worker '\n' 6257*cda5da8dSAndroid Build Coastguard Worker 'If a valid *align* value is specified, it can be preceded ' 6258*cda5da8dSAndroid Build Coastguard Worker 'by a *fill*\n' 6259*cda5da8dSAndroid Build Coastguard Worker 'character that can be any character and defaults to a space ' 6260*cda5da8dSAndroid Build Coastguard Worker 'if\n' 6261*cda5da8dSAndroid Build Coastguard Worker 'omitted. It is not possible to use a literal curly brace ' 6262*cda5da8dSAndroid Build Coastguard Worker '(”"{"” or\n' 6263*cda5da8dSAndroid Build Coastguard Worker '“"}"”) as the *fill* character in a formatted string ' 6264*cda5da8dSAndroid Build Coastguard Worker 'literal or when\n' 6265*cda5da8dSAndroid Build Coastguard Worker 'using the "str.format()" method. However, it is possible ' 6266*cda5da8dSAndroid Build Coastguard Worker 'to insert a\n' 6267*cda5da8dSAndroid Build Coastguard Worker 'curly brace with a nested replacement field. This ' 6268*cda5da8dSAndroid Build Coastguard Worker 'limitation doesn’t\n' 6269*cda5da8dSAndroid Build Coastguard Worker 'affect the "format()" function.\n' 6270*cda5da8dSAndroid Build Coastguard Worker '\n' 6271*cda5da8dSAndroid Build Coastguard Worker 'The meaning of the various alignment options is as ' 6272*cda5da8dSAndroid Build Coastguard Worker 'follows:\n' 6273*cda5da8dSAndroid Build Coastguard Worker '\n' 6274*cda5da8dSAndroid Build Coastguard Worker ' ' 6275*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6276*cda5da8dSAndroid Build Coastguard Worker ' | Option | ' 6277*cda5da8dSAndroid Build Coastguard Worker 'Meaning ' 6278*cda5da8dSAndroid Build Coastguard Worker '|\n' 6279*cda5da8dSAndroid Build Coastguard Worker ' ' 6280*cda5da8dSAndroid Build Coastguard Worker '|===========|============================================================|\n' 6281*cda5da8dSAndroid Build Coastguard Worker ' | "\'<\'" | Forces the field to be left-aligned ' 6282*cda5da8dSAndroid Build Coastguard Worker 'within the available |\n' 6283*cda5da8dSAndroid Build Coastguard Worker ' | | space (this is the default for most ' 6284*cda5da8dSAndroid Build Coastguard Worker 'objects). |\n' 6285*cda5da8dSAndroid Build Coastguard Worker ' ' 6286*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6287*cda5da8dSAndroid Build Coastguard Worker ' | "\'>\'" | Forces the field to be right-aligned ' 6288*cda5da8dSAndroid Build Coastguard Worker 'within the available |\n' 6289*cda5da8dSAndroid Build Coastguard Worker ' | | space (this is the default for ' 6290*cda5da8dSAndroid Build Coastguard Worker 'numbers). |\n' 6291*cda5da8dSAndroid Build Coastguard Worker ' ' 6292*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6293*cda5da8dSAndroid Build Coastguard Worker ' | "\'=\'" | Forces the padding to be placed after ' 6294*cda5da8dSAndroid Build Coastguard Worker 'the sign (if any) |\n' 6295*cda5da8dSAndroid Build Coastguard Worker ' | | but before the digits. This is used for ' 6296*cda5da8dSAndroid Build Coastguard Worker 'printing fields |\n' 6297*cda5da8dSAndroid Build Coastguard Worker ' | | in the form ‘+000000120’. This alignment ' 6298*cda5da8dSAndroid Build Coastguard Worker 'option is only |\n' 6299*cda5da8dSAndroid Build Coastguard Worker ' | | valid for numeric types. It becomes the ' 6300*cda5da8dSAndroid Build Coastguard Worker 'default for |\n' 6301*cda5da8dSAndroid Build Coastguard Worker ' | | numbers when ‘0’ immediately precedes the ' 6302*cda5da8dSAndroid Build Coastguard Worker 'field width. |\n' 6303*cda5da8dSAndroid Build Coastguard Worker ' ' 6304*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6305*cda5da8dSAndroid Build Coastguard Worker ' | "\'^\'" | Forces the field to be centered within ' 6306*cda5da8dSAndroid Build Coastguard Worker 'the available |\n' 6307*cda5da8dSAndroid Build Coastguard Worker ' | | ' 6308*cda5da8dSAndroid Build Coastguard Worker 'space. ' 6309*cda5da8dSAndroid Build Coastguard Worker '|\n' 6310*cda5da8dSAndroid Build Coastguard Worker ' ' 6311*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6312*cda5da8dSAndroid Build Coastguard Worker '\n' 6313*cda5da8dSAndroid Build Coastguard Worker 'Note that unless a minimum field width is defined, the ' 6314*cda5da8dSAndroid Build Coastguard Worker 'field width\n' 6315*cda5da8dSAndroid Build Coastguard Worker 'will always be the same size as the data to fill it, so ' 6316*cda5da8dSAndroid Build Coastguard Worker 'that the\n' 6317*cda5da8dSAndroid Build Coastguard Worker 'alignment option has no meaning in this case.\n' 6318*cda5da8dSAndroid Build Coastguard Worker '\n' 6319*cda5da8dSAndroid Build Coastguard Worker 'The *sign* option is only valid for number types, and can ' 6320*cda5da8dSAndroid Build Coastguard Worker 'be one of\n' 6321*cda5da8dSAndroid Build Coastguard Worker 'the following:\n' 6322*cda5da8dSAndroid Build Coastguard Worker '\n' 6323*cda5da8dSAndroid Build Coastguard Worker ' ' 6324*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6325*cda5da8dSAndroid Build Coastguard Worker ' | Option | ' 6326*cda5da8dSAndroid Build Coastguard Worker 'Meaning ' 6327*cda5da8dSAndroid Build Coastguard Worker '|\n' 6328*cda5da8dSAndroid Build Coastguard Worker ' ' 6329*cda5da8dSAndroid Build Coastguard Worker '|===========|============================================================|\n' 6330*cda5da8dSAndroid Build Coastguard Worker ' | "\'+\'" | indicates that a sign should be used for ' 6331*cda5da8dSAndroid Build Coastguard Worker 'both positive as |\n' 6332*cda5da8dSAndroid Build Coastguard Worker ' | | well as negative ' 6333*cda5da8dSAndroid Build Coastguard Worker 'numbers. |\n' 6334*cda5da8dSAndroid Build Coastguard Worker ' ' 6335*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6336*cda5da8dSAndroid Build Coastguard Worker ' | "\'-\'" | indicates that a sign should be used ' 6337*cda5da8dSAndroid Build Coastguard Worker 'only for negative |\n' 6338*cda5da8dSAndroid Build Coastguard Worker ' | | numbers (this is the default ' 6339*cda5da8dSAndroid Build Coastguard Worker 'behavior). |\n' 6340*cda5da8dSAndroid Build Coastguard Worker ' ' 6341*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6342*cda5da8dSAndroid Build Coastguard Worker ' | space | indicates that a leading space should be ' 6343*cda5da8dSAndroid Build Coastguard Worker 'used on positive |\n' 6344*cda5da8dSAndroid Build Coastguard Worker ' | | numbers, and a minus sign on negative ' 6345*cda5da8dSAndroid Build Coastguard Worker 'numbers. |\n' 6346*cda5da8dSAndroid Build Coastguard Worker ' ' 6347*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6348*cda5da8dSAndroid Build Coastguard Worker '\n' 6349*cda5da8dSAndroid Build Coastguard Worker 'The "\'z\'" option coerces negative zero floating-point ' 6350*cda5da8dSAndroid Build Coastguard Worker 'values to\n' 6351*cda5da8dSAndroid Build Coastguard Worker 'positive zero after rounding to the format precision. This ' 6352*cda5da8dSAndroid Build Coastguard Worker 'option is\n' 6353*cda5da8dSAndroid Build Coastguard Worker 'only valid for floating-point presentation types.\n' 6354*cda5da8dSAndroid Build Coastguard Worker '\n' 6355*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.11: Added the "\'z\'" option (see also ' 6356*cda5da8dSAndroid Build Coastguard Worker '**PEP\n' 6357*cda5da8dSAndroid Build Coastguard Worker '682**).\n' 6358*cda5da8dSAndroid Build Coastguard Worker '\n' 6359*cda5da8dSAndroid Build Coastguard Worker 'The "\'#\'" option causes the “alternate form” to be used ' 6360*cda5da8dSAndroid Build Coastguard Worker 'for the\n' 6361*cda5da8dSAndroid Build Coastguard Worker 'conversion. The alternate form is defined differently for ' 6362*cda5da8dSAndroid Build Coastguard Worker 'different\n' 6363*cda5da8dSAndroid Build Coastguard Worker 'types. This option is only valid for integer, float and ' 6364*cda5da8dSAndroid Build Coastguard Worker 'complex\n' 6365*cda5da8dSAndroid Build Coastguard Worker 'types. For integers, when binary, octal, or hexadecimal ' 6366*cda5da8dSAndroid Build Coastguard Worker 'output is\n' 6367*cda5da8dSAndroid Build Coastguard Worker 'used, this option adds the respective prefix "\'0b\'", ' 6368*cda5da8dSAndroid Build Coastguard Worker '"\'0o\'", "\'0x\'",\n' 6369*cda5da8dSAndroid Build Coastguard Worker 'or "\'0X\'" to the output value. For float and complex the ' 6370*cda5da8dSAndroid Build Coastguard Worker 'alternate\n' 6371*cda5da8dSAndroid Build Coastguard Worker 'form causes the result of the conversion to always contain ' 6372*cda5da8dSAndroid Build Coastguard Worker 'a decimal-\n' 6373*cda5da8dSAndroid Build Coastguard Worker 'point character, even if no digits follow it. Normally, a ' 6374*cda5da8dSAndroid Build Coastguard Worker 'decimal-\n' 6375*cda5da8dSAndroid Build Coastguard Worker 'point character appears in the result of these conversions ' 6376*cda5da8dSAndroid Build Coastguard Worker 'only if a\n' 6377*cda5da8dSAndroid Build Coastguard Worker 'digit follows it. In addition, for "\'g\'" and "\'G\'" ' 6378*cda5da8dSAndroid Build Coastguard Worker 'conversions,\n' 6379*cda5da8dSAndroid Build Coastguard Worker 'trailing zeros are not removed from the result.\n' 6380*cda5da8dSAndroid Build Coastguard Worker '\n' 6381*cda5da8dSAndroid Build Coastguard Worker 'The "\',\'" option signals the use of a comma for a ' 6382*cda5da8dSAndroid Build Coastguard Worker 'thousands separator.\n' 6383*cda5da8dSAndroid Build Coastguard Worker 'For a locale aware separator, use the "\'n\'" integer ' 6384*cda5da8dSAndroid Build Coastguard Worker 'presentation type\n' 6385*cda5da8dSAndroid Build Coastguard Worker 'instead.\n' 6386*cda5da8dSAndroid Build Coastguard Worker '\n' 6387*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.1: Added the "\',\'" option (see also ' 6388*cda5da8dSAndroid Build Coastguard Worker '**PEP 378**).\n' 6389*cda5da8dSAndroid Build Coastguard Worker '\n' 6390*cda5da8dSAndroid Build Coastguard Worker 'The "\'_\'" option signals the use of an underscore for a ' 6391*cda5da8dSAndroid Build Coastguard Worker 'thousands\n' 6392*cda5da8dSAndroid Build Coastguard Worker 'separator for floating point presentation types and for ' 6393*cda5da8dSAndroid Build Coastguard Worker 'integer\n' 6394*cda5da8dSAndroid Build Coastguard Worker 'presentation type "\'d\'". For integer presentation types ' 6395*cda5da8dSAndroid Build Coastguard Worker '"\'b\'", "\'o\'",\n' 6396*cda5da8dSAndroid Build Coastguard Worker '"\'x\'", and "\'X\'", underscores will be inserted every 4 ' 6397*cda5da8dSAndroid Build Coastguard Worker 'digits. For\n' 6398*cda5da8dSAndroid Build Coastguard Worker 'other presentation types, specifying this option is an ' 6399*cda5da8dSAndroid Build Coastguard Worker 'error.\n' 6400*cda5da8dSAndroid Build Coastguard Worker '\n' 6401*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.6: Added the "\'_\'" option (see also ' 6402*cda5da8dSAndroid Build Coastguard Worker '**PEP 515**).\n' 6403*cda5da8dSAndroid Build Coastguard Worker '\n' 6404*cda5da8dSAndroid Build Coastguard Worker '*width* is a decimal integer defining the minimum total ' 6405*cda5da8dSAndroid Build Coastguard Worker 'field width,\n' 6406*cda5da8dSAndroid Build Coastguard Worker 'including any prefixes, separators, and other formatting ' 6407*cda5da8dSAndroid Build Coastguard Worker 'characters.\n' 6408*cda5da8dSAndroid Build Coastguard Worker 'If not specified, then the field width will be determined ' 6409*cda5da8dSAndroid Build Coastguard Worker 'by the\n' 6410*cda5da8dSAndroid Build Coastguard Worker 'content.\n' 6411*cda5da8dSAndroid Build Coastguard Worker '\n' 6412*cda5da8dSAndroid Build Coastguard Worker 'When no explicit alignment is given, preceding the *width* ' 6413*cda5da8dSAndroid Build Coastguard Worker 'field by a\n' 6414*cda5da8dSAndroid Build Coastguard Worker 'zero ("\'0\'") character enables sign-aware zero-padding ' 6415*cda5da8dSAndroid Build Coastguard Worker 'for numeric\n' 6416*cda5da8dSAndroid Build Coastguard Worker 'types. This is equivalent to a *fill* character of "\'0\'" ' 6417*cda5da8dSAndroid Build Coastguard Worker 'with an\n' 6418*cda5da8dSAndroid Build Coastguard Worker '*alignment* type of "\'=\'".\n' 6419*cda5da8dSAndroid Build Coastguard Worker '\n' 6420*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.10: Preceding the *width* field by ' 6421*cda5da8dSAndroid Build Coastguard Worker '"\'0\'" no\n' 6422*cda5da8dSAndroid Build Coastguard Worker 'longer affects the default alignment for strings.\n' 6423*cda5da8dSAndroid Build Coastguard Worker '\n' 6424*cda5da8dSAndroid Build Coastguard Worker 'The *precision* is a decimal integer indicating how many ' 6425*cda5da8dSAndroid Build Coastguard Worker 'digits should\n' 6426*cda5da8dSAndroid Build Coastguard Worker 'be displayed after the decimal point for presentation types ' 6427*cda5da8dSAndroid Build Coastguard Worker '"\'f\'" and\n' 6428*cda5da8dSAndroid Build Coastguard Worker '"\'F\'", or before and after the decimal point for ' 6429*cda5da8dSAndroid Build Coastguard Worker 'presentation types\n' 6430*cda5da8dSAndroid Build Coastguard Worker '"\'g\'" or "\'G\'". For string presentation types the ' 6431*cda5da8dSAndroid Build Coastguard Worker 'field indicates the\n' 6432*cda5da8dSAndroid Build Coastguard Worker 'maximum field size - in other words, how many characters ' 6433*cda5da8dSAndroid Build Coastguard Worker 'will be used\n' 6434*cda5da8dSAndroid Build Coastguard Worker 'from the field content. The *precision* is not allowed for ' 6435*cda5da8dSAndroid Build Coastguard Worker 'integer\n' 6436*cda5da8dSAndroid Build Coastguard Worker 'presentation types.\n' 6437*cda5da8dSAndroid Build Coastguard Worker '\n' 6438*cda5da8dSAndroid Build Coastguard Worker 'Finally, the *type* determines how the data should be ' 6439*cda5da8dSAndroid Build Coastguard Worker 'presented.\n' 6440*cda5da8dSAndroid Build Coastguard Worker '\n' 6441*cda5da8dSAndroid Build Coastguard Worker 'The available string presentation types are:\n' 6442*cda5da8dSAndroid Build Coastguard Worker '\n' 6443*cda5da8dSAndroid Build Coastguard Worker ' ' 6444*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6445*cda5da8dSAndroid Build Coastguard Worker ' | Type | ' 6446*cda5da8dSAndroid Build Coastguard Worker 'Meaning ' 6447*cda5da8dSAndroid Build Coastguard Worker '|\n' 6448*cda5da8dSAndroid Build Coastguard Worker ' ' 6449*cda5da8dSAndroid Build Coastguard Worker '|===========|============================================================|\n' 6450*cda5da8dSAndroid Build Coastguard Worker ' | "\'s\'" | String format. This is the default type ' 6451*cda5da8dSAndroid Build Coastguard Worker 'for strings and |\n' 6452*cda5da8dSAndroid Build Coastguard Worker ' | | may be ' 6453*cda5da8dSAndroid Build Coastguard Worker 'omitted. |\n' 6454*cda5da8dSAndroid Build Coastguard Worker ' ' 6455*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6456*cda5da8dSAndroid Build Coastguard Worker ' | None | The same as ' 6457*cda5da8dSAndroid Build Coastguard Worker '"\'s\'". |\n' 6458*cda5da8dSAndroid Build Coastguard Worker ' ' 6459*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6460*cda5da8dSAndroid Build Coastguard Worker '\n' 6461*cda5da8dSAndroid Build Coastguard Worker 'The available integer presentation types are:\n' 6462*cda5da8dSAndroid Build Coastguard Worker '\n' 6463*cda5da8dSAndroid Build Coastguard Worker ' ' 6464*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6465*cda5da8dSAndroid Build Coastguard Worker ' | Type | ' 6466*cda5da8dSAndroid Build Coastguard Worker 'Meaning ' 6467*cda5da8dSAndroid Build Coastguard Worker '|\n' 6468*cda5da8dSAndroid Build Coastguard Worker ' ' 6469*cda5da8dSAndroid Build Coastguard Worker '|===========|============================================================|\n' 6470*cda5da8dSAndroid Build Coastguard Worker ' | "\'b\'" | Binary format. Outputs the number in ' 6471*cda5da8dSAndroid Build Coastguard Worker 'base 2. |\n' 6472*cda5da8dSAndroid Build Coastguard Worker ' ' 6473*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6474*cda5da8dSAndroid Build Coastguard Worker ' | "\'c\'" | Character. Converts the integer to the ' 6475*cda5da8dSAndroid Build Coastguard Worker 'corresponding |\n' 6476*cda5da8dSAndroid Build Coastguard Worker ' | | unicode character before ' 6477*cda5da8dSAndroid Build Coastguard Worker 'printing. |\n' 6478*cda5da8dSAndroid Build Coastguard Worker ' ' 6479*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6480*cda5da8dSAndroid Build Coastguard Worker ' | "\'d\'" | Decimal Integer. Outputs the number in ' 6481*cda5da8dSAndroid Build Coastguard Worker 'base 10. |\n' 6482*cda5da8dSAndroid Build Coastguard Worker ' ' 6483*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6484*cda5da8dSAndroid Build Coastguard Worker ' | "\'o\'" | Octal format. Outputs the number in base ' 6485*cda5da8dSAndroid Build Coastguard Worker '8. |\n' 6486*cda5da8dSAndroid Build Coastguard Worker ' ' 6487*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6488*cda5da8dSAndroid Build Coastguard Worker ' | "\'x\'" | Hex format. Outputs the number in base ' 6489*cda5da8dSAndroid Build Coastguard Worker '16, using lower- |\n' 6490*cda5da8dSAndroid Build Coastguard Worker ' | | case letters for the digits above ' 6491*cda5da8dSAndroid Build Coastguard Worker '9. |\n' 6492*cda5da8dSAndroid Build Coastguard Worker ' ' 6493*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6494*cda5da8dSAndroid Build Coastguard Worker ' | "\'X\'" | Hex format. Outputs the number in base ' 6495*cda5da8dSAndroid Build Coastguard Worker '16, using upper- |\n' 6496*cda5da8dSAndroid Build Coastguard Worker ' | | case letters for the digits above 9. In ' 6497*cda5da8dSAndroid Build Coastguard Worker 'case "\'#\'" is |\n' 6498*cda5da8dSAndroid Build Coastguard Worker ' | | specified, the prefix "\'0x\'" will be ' 6499*cda5da8dSAndroid Build Coastguard Worker 'upper-cased to "\'0X\'" |\n' 6500*cda5da8dSAndroid Build Coastguard Worker ' | | as ' 6501*cda5da8dSAndroid Build Coastguard Worker 'well. |\n' 6502*cda5da8dSAndroid Build Coastguard Worker ' ' 6503*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6504*cda5da8dSAndroid Build Coastguard Worker ' | "\'n\'" | Number. This is the same as "\'d\'", ' 6505*cda5da8dSAndroid Build Coastguard Worker 'except that it uses the |\n' 6506*cda5da8dSAndroid Build Coastguard Worker ' | | current locale setting to insert the ' 6507*cda5da8dSAndroid Build Coastguard Worker 'appropriate number |\n' 6508*cda5da8dSAndroid Build Coastguard Worker ' | | separator ' 6509*cda5da8dSAndroid Build Coastguard Worker 'characters. |\n' 6510*cda5da8dSAndroid Build Coastguard Worker ' ' 6511*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6512*cda5da8dSAndroid Build Coastguard Worker ' | None | The same as ' 6513*cda5da8dSAndroid Build Coastguard Worker '"\'d\'". |\n' 6514*cda5da8dSAndroid Build Coastguard Worker ' ' 6515*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6516*cda5da8dSAndroid Build Coastguard Worker '\n' 6517*cda5da8dSAndroid Build Coastguard Worker 'In addition to the above presentation types, integers can ' 6518*cda5da8dSAndroid Build Coastguard Worker 'be formatted\n' 6519*cda5da8dSAndroid Build Coastguard Worker 'with the floating point presentation types listed below ' 6520*cda5da8dSAndroid Build Coastguard Worker '(except "\'n\'"\n' 6521*cda5da8dSAndroid Build Coastguard Worker 'and "None"). When doing so, "float()" is used to convert ' 6522*cda5da8dSAndroid Build Coastguard Worker 'the integer\n' 6523*cda5da8dSAndroid Build Coastguard Worker 'to a floating point number before formatting.\n' 6524*cda5da8dSAndroid Build Coastguard Worker '\n' 6525*cda5da8dSAndroid Build Coastguard Worker 'The available presentation types for "float" and "Decimal" ' 6526*cda5da8dSAndroid Build Coastguard Worker 'values are:\n' 6527*cda5da8dSAndroid Build Coastguard Worker '\n' 6528*cda5da8dSAndroid Build Coastguard Worker ' ' 6529*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6530*cda5da8dSAndroid Build Coastguard Worker ' | Type | ' 6531*cda5da8dSAndroid Build Coastguard Worker 'Meaning ' 6532*cda5da8dSAndroid Build Coastguard Worker '|\n' 6533*cda5da8dSAndroid Build Coastguard Worker ' ' 6534*cda5da8dSAndroid Build Coastguard Worker '|===========|============================================================|\n' 6535*cda5da8dSAndroid Build Coastguard Worker ' | "\'e\'" | Scientific notation. For a given ' 6536*cda5da8dSAndroid Build Coastguard Worker 'precision "p", formats |\n' 6537*cda5da8dSAndroid Build Coastguard Worker ' | | the number in scientific notation with the ' 6538*cda5da8dSAndroid Build Coastguard Worker 'letter ‘e’ |\n' 6539*cda5da8dSAndroid Build Coastguard Worker ' | | separating the coefficient from the ' 6540*cda5da8dSAndroid Build Coastguard Worker 'exponent. The |\n' 6541*cda5da8dSAndroid Build Coastguard Worker ' | | coefficient has one digit before and "p" ' 6542*cda5da8dSAndroid Build Coastguard Worker 'digits after the |\n' 6543*cda5da8dSAndroid Build Coastguard Worker ' | | decimal point, for a total of "p + 1" ' 6544*cda5da8dSAndroid Build Coastguard Worker 'significant digits. |\n' 6545*cda5da8dSAndroid Build Coastguard Worker ' | | With no precision given, uses a precision ' 6546*cda5da8dSAndroid Build Coastguard Worker 'of "6" digits |\n' 6547*cda5da8dSAndroid Build Coastguard Worker ' | | after the decimal point for "float", and ' 6548*cda5da8dSAndroid Build Coastguard Worker 'shows all |\n' 6549*cda5da8dSAndroid Build Coastguard Worker ' | | coefficient digits for "Decimal". If no ' 6550*cda5da8dSAndroid Build Coastguard Worker 'digits follow the |\n' 6551*cda5da8dSAndroid Build Coastguard Worker ' | | decimal point, the decimal point is also ' 6552*cda5da8dSAndroid Build Coastguard Worker 'removed unless |\n' 6553*cda5da8dSAndroid Build Coastguard Worker ' | | the "#" option is ' 6554*cda5da8dSAndroid Build Coastguard Worker 'used. |\n' 6555*cda5da8dSAndroid Build Coastguard Worker ' ' 6556*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6557*cda5da8dSAndroid Build Coastguard Worker ' | "\'E\'" | Scientific notation. Same as "\'e\'" ' 6558*cda5da8dSAndroid Build Coastguard Worker 'except it uses an upper |\n' 6559*cda5da8dSAndroid Build Coastguard Worker ' | | case ‘E’ as the separator ' 6560*cda5da8dSAndroid Build Coastguard Worker 'character. |\n' 6561*cda5da8dSAndroid Build Coastguard Worker ' ' 6562*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6563*cda5da8dSAndroid Build Coastguard Worker ' | "\'f\'" | Fixed-point notation. For a given ' 6564*cda5da8dSAndroid Build Coastguard Worker 'precision "p", formats |\n' 6565*cda5da8dSAndroid Build Coastguard Worker ' | | the number as a decimal number with ' 6566*cda5da8dSAndroid Build Coastguard Worker 'exactly "p" digits |\n' 6567*cda5da8dSAndroid Build Coastguard Worker ' | | following the decimal point. With no ' 6568*cda5da8dSAndroid Build Coastguard Worker 'precision given, uses |\n' 6569*cda5da8dSAndroid Build Coastguard Worker ' | | a precision of "6" digits after the ' 6570*cda5da8dSAndroid Build Coastguard Worker 'decimal point for |\n' 6571*cda5da8dSAndroid Build Coastguard Worker ' | | "float", and uses a precision large enough ' 6572*cda5da8dSAndroid Build Coastguard Worker 'to show all |\n' 6573*cda5da8dSAndroid Build Coastguard Worker ' | | coefficient digits for "Decimal". If no ' 6574*cda5da8dSAndroid Build Coastguard Worker 'digits follow the |\n' 6575*cda5da8dSAndroid Build Coastguard Worker ' | | decimal point, the decimal point is also ' 6576*cda5da8dSAndroid Build Coastguard Worker 'removed unless |\n' 6577*cda5da8dSAndroid Build Coastguard Worker ' | | the "#" option is ' 6578*cda5da8dSAndroid Build Coastguard Worker 'used. |\n' 6579*cda5da8dSAndroid Build Coastguard Worker ' ' 6580*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6581*cda5da8dSAndroid Build Coastguard Worker ' | "\'F\'" | Fixed-point notation. Same as "\'f\'", ' 6582*cda5da8dSAndroid Build Coastguard Worker 'but converts "nan" to |\n' 6583*cda5da8dSAndroid Build Coastguard Worker ' | | "NAN" and "inf" to ' 6584*cda5da8dSAndroid Build Coastguard Worker '"INF". |\n' 6585*cda5da8dSAndroid Build Coastguard Worker ' ' 6586*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6587*cda5da8dSAndroid Build Coastguard Worker ' | "\'g\'" | General format. For a given precision ' 6588*cda5da8dSAndroid Build Coastguard Worker '"p >= 1", this |\n' 6589*cda5da8dSAndroid Build Coastguard Worker ' | | rounds the number to "p" significant ' 6590*cda5da8dSAndroid Build Coastguard Worker 'digits and then |\n' 6591*cda5da8dSAndroid Build Coastguard Worker ' | | formats the result in either fixed-point ' 6592*cda5da8dSAndroid Build Coastguard Worker 'format or in |\n' 6593*cda5da8dSAndroid Build Coastguard Worker ' | | scientific notation, depending on its ' 6594*cda5da8dSAndroid Build Coastguard Worker 'magnitude. A |\n' 6595*cda5da8dSAndroid Build Coastguard Worker ' | | precision of "0" is treated as equivalent ' 6596*cda5da8dSAndroid Build Coastguard Worker 'to a precision |\n' 6597*cda5da8dSAndroid Build Coastguard Worker ' | | of "1". The precise rules are as follows: ' 6598*cda5da8dSAndroid Build Coastguard Worker 'suppose that |\n' 6599*cda5da8dSAndroid Build Coastguard Worker ' | | the result formatted with presentation ' 6600*cda5da8dSAndroid Build Coastguard Worker 'type "\'e\'" and |\n' 6601*cda5da8dSAndroid Build Coastguard Worker ' | | precision "p-1" would have exponent ' 6602*cda5da8dSAndroid Build Coastguard Worker '"exp". Then, if "m <= |\n' 6603*cda5da8dSAndroid Build Coastguard Worker ' | | exp < p", where "m" is -4 for floats and ' 6604*cda5da8dSAndroid Build Coastguard Worker '-6 for |\n' 6605*cda5da8dSAndroid Build Coastguard Worker ' | | "Decimals", the number is formatted with ' 6606*cda5da8dSAndroid Build Coastguard Worker 'presentation type |\n' 6607*cda5da8dSAndroid Build Coastguard Worker ' | | "\'f\'" and precision "p-1-exp". ' 6608*cda5da8dSAndroid Build Coastguard Worker 'Otherwise, the number is |\n' 6609*cda5da8dSAndroid Build Coastguard Worker ' | | formatted with presentation type "\'e\'" ' 6610*cda5da8dSAndroid Build Coastguard Worker 'and precision |\n' 6611*cda5da8dSAndroid Build Coastguard Worker ' | | "p-1". In both cases insignificant ' 6612*cda5da8dSAndroid Build Coastguard Worker 'trailing zeros are |\n' 6613*cda5da8dSAndroid Build Coastguard Worker ' | | removed from the significand, and the ' 6614*cda5da8dSAndroid Build Coastguard Worker 'decimal point is |\n' 6615*cda5da8dSAndroid Build Coastguard Worker ' | | also removed if there are no remaining ' 6616*cda5da8dSAndroid Build Coastguard Worker 'digits following |\n' 6617*cda5da8dSAndroid Build Coastguard Worker ' | | it, unless the "\'#\'" option is used. ' 6618*cda5da8dSAndroid Build Coastguard Worker 'With no precision |\n' 6619*cda5da8dSAndroid Build Coastguard Worker ' | | given, uses a precision of "6" significant ' 6620*cda5da8dSAndroid Build Coastguard Worker 'digits for |\n' 6621*cda5da8dSAndroid Build Coastguard Worker ' | | "float". For "Decimal", the coefficient of ' 6622*cda5da8dSAndroid Build Coastguard Worker 'the result is |\n' 6623*cda5da8dSAndroid Build Coastguard Worker ' | | formed from the coefficient digits of the ' 6624*cda5da8dSAndroid Build Coastguard Worker 'value; |\n' 6625*cda5da8dSAndroid Build Coastguard Worker ' | | scientific notation is used for values ' 6626*cda5da8dSAndroid Build Coastguard Worker 'smaller than "1e-6" |\n' 6627*cda5da8dSAndroid Build Coastguard Worker ' | | in absolute value and values where the ' 6628*cda5da8dSAndroid Build Coastguard Worker 'place value of the |\n' 6629*cda5da8dSAndroid Build Coastguard Worker ' | | least significant digit is larger than 1, ' 6630*cda5da8dSAndroid Build Coastguard Worker 'and fixed-point |\n' 6631*cda5da8dSAndroid Build Coastguard Worker ' | | notation is used otherwise. Positive and ' 6632*cda5da8dSAndroid Build Coastguard Worker 'negative |\n' 6633*cda5da8dSAndroid Build Coastguard Worker ' | | infinity, positive and negative zero, and ' 6634*cda5da8dSAndroid Build Coastguard Worker 'nans, are |\n' 6635*cda5da8dSAndroid Build Coastguard Worker ' | | formatted as "inf", "-inf", "0", "-0" and ' 6636*cda5da8dSAndroid Build Coastguard Worker '"nan" |\n' 6637*cda5da8dSAndroid Build Coastguard Worker ' | | respectively, regardless of the ' 6638*cda5da8dSAndroid Build Coastguard Worker 'precision. |\n' 6639*cda5da8dSAndroid Build Coastguard Worker ' ' 6640*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6641*cda5da8dSAndroid Build Coastguard Worker ' | "\'G\'" | General format. Same as "\'g\'" except ' 6642*cda5da8dSAndroid Build Coastguard Worker 'switches to "\'E\'" if |\n' 6643*cda5da8dSAndroid Build Coastguard Worker ' | | the number gets too large. The ' 6644*cda5da8dSAndroid Build Coastguard Worker 'representations of infinity |\n' 6645*cda5da8dSAndroid Build Coastguard Worker ' | | and NaN are uppercased, ' 6646*cda5da8dSAndroid Build Coastguard Worker 'too. |\n' 6647*cda5da8dSAndroid Build Coastguard Worker ' ' 6648*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6649*cda5da8dSAndroid Build Coastguard Worker ' | "\'n\'" | Number. This is the same as "\'g\'", ' 6650*cda5da8dSAndroid Build Coastguard Worker 'except that it uses the |\n' 6651*cda5da8dSAndroid Build Coastguard Worker ' | | current locale setting to insert the ' 6652*cda5da8dSAndroid Build Coastguard Worker 'appropriate number |\n' 6653*cda5da8dSAndroid Build Coastguard Worker ' | | separator ' 6654*cda5da8dSAndroid Build Coastguard Worker 'characters. |\n' 6655*cda5da8dSAndroid Build Coastguard Worker ' ' 6656*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6657*cda5da8dSAndroid Build Coastguard Worker ' | "\'%\'" | Percentage. Multiplies the number by 100 ' 6658*cda5da8dSAndroid Build Coastguard Worker 'and displays in |\n' 6659*cda5da8dSAndroid Build Coastguard Worker ' | | fixed ("\'f\'") format, followed by a ' 6660*cda5da8dSAndroid Build Coastguard Worker 'percent sign. |\n' 6661*cda5da8dSAndroid Build Coastguard Worker ' ' 6662*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6663*cda5da8dSAndroid Build Coastguard Worker ' | None | For "float" this is the same as "\'g\'", ' 6664*cda5da8dSAndroid Build Coastguard Worker 'except that when |\n' 6665*cda5da8dSAndroid Build Coastguard Worker ' | | fixed-point notation is used to format the ' 6666*cda5da8dSAndroid Build Coastguard Worker 'result, it |\n' 6667*cda5da8dSAndroid Build Coastguard Worker ' | | always includes at least one digit past ' 6668*cda5da8dSAndroid Build Coastguard Worker 'the decimal point. |\n' 6669*cda5da8dSAndroid Build Coastguard Worker ' | | The precision used is as large as needed ' 6670*cda5da8dSAndroid Build Coastguard Worker 'to represent the |\n' 6671*cda5da8dSAndroid Build Coastguard Worker ' | | given value faithfully. For "Decimal", ' 6672*cda5da8dSAndroid Build Coastguard Worker 'this is the same |\n' 6673*cda5da8dSAndroid Build Coastguard Worker ' | | as either "\'g\'" or "\'G\'" depending on ' 6674*cda5da8dSAndroid Build Coastguard Worker 'the value of |\n' 6675*cda5da8dSAndroid Build Coastguard Worker ' | | "context.capitals" for the current decimal ' 6676*cda5da8dSAndroid Build Coastguard Worker 'context. The |\n' 6677*cda5da8dSAndroid Build Coastguard Worker ' | | overall effect is to match the output of ' 6678*cda5da8dSAndroid Build Coastguard Worker '"str()" as |\n' 6679*cda5da8dSAndroid Build Coastguard Worker ' | | altered by the other format ' 6680*cda5da8dSAndroid Build Coastguard Worker 'modifiers. |\n' 6681*cda5da8dSAndroid Build Coastguard Worker ' ' 6682*cda5da8dSAndroid Build Coastguard Worker '+-----------+------------------------------------------------------------+\n' 6683*cda5da8dSAndroid Build Coastguard Worker '\n' 6684*cda5da8dSAndroid Build Coastguard Worker '\n' 6685*cda5da8dSAndroid Build Coastguard Worker 'Format examples\n' 6686*cda5da8dSAndroid Build Coastguard Worker '===============\n' 6687*cda5da8dSAndroid Build Coastguard Worker '\n' 6688*cda5da8dSAndroid Build Coastguard Worker 'This section contains examples of the "str.format()" syntax ' 6689*cda5da8dSAndroid Build Coastguard Worker 'and\n' 6690*cda5da8dSAndroid Build Coastguard Worker 'comparison with the old "%"-formatting.\n' 6691*cda5da8dSAndroid Build Coastguard Worker '\n' 6692*cda5da8dSAndroid Build Coastguard Worker 'In most of the cases the syntax is similar to the old ' 6693*cda5da8dSAndroid Build Coastguard Worker '"%"-formatting,\n' 6694*cda5da8dSAndroid Build Coastguard Worker 'with the addition of the "{}" and with ":" used instead of ' 6695*cda5da8dSAndroid Build Coastguard Worker '"%". For\n' 6696*cda5da8dSAndroid Build Coastguard Worker 'example, "\'%03.2f\'" can be translated to "\'{:03.2f}\'".\n' 6697*cda5da8dSAndroid Build Coastguard Worker '\n' 6698*cda5da8dSAndroid Build Coastguard Worker 'The new format syntax also supports new and different ' 6699*cda5da8dSAndroid Build Coastguard Worker 'options, shown\n' 6700*cda5da8dSAndroid Build Coastguard Worker 'in the following examples.\n' 6701*cda5da8dSAndroid Build Coastguard Worker '\n' 6702*cda5da8dSAndroid Build Coastguard Worker 'Accessing arguments by position:\n' 6703*cda5da8dSAndroid Build Coastguard Worker '\n' 6704*cda5da8dSAndroid Build Coastguard Worker " >>> '{0}, {1}, {2}'.format('a', 'b', 'c')\n" 6705*cda5da8dSAndroid Build Coastguard Worker " 'a, b, c'\n" 6706*cda5da8dSAndroid Build Coastguard Worker " >>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only\n" 6707*cda5da8dSAndroid Build Coastguard Worker " 'a, b, c'\n" 6708*cda5da8dSAndroid Build Coastguard Worker " >>> '{2}, {1}, {0}'.format('a', 'b', 'c')\n" 6709*cda5da8dSAndroid Build Coastguard Worker " 'c, b, a'\n" 6710*cda5da8dSAndroid Build Coastguard Worker " >>> '{2}, {1}, {0}'.format(*'abc') # unpacking " 6711*cda5da8dSAndroid Build Coastguard Worker 'argument sequence\n' 6712*cda5da8dSAndroid Build Coastguard Worker " 'c, b, a'\n" 6713*cda5da8dSAndroid Build Coastguard Worker " >>> '{0}{1}{0}'.format('abra', 'cad') # arguments' " 6714*cda5da8dSAndroid Build Coastguard Worker 'indices can be repeated\n' 6715*cda5da8dSAndroid Build Coastguard Worker " 'abracadabra'\n" 6716*cda5da8dSAndroid Build Coastguard Worker '\n' 6717*cda5da8dSAndroid Build Coastguard Worker 'Accessing arguments by name:\n' 6718*cda5da8dSAndroid Build Coastguard Worker '\n' 6719*cda5da8dSAndroid Build Coastguard Worker " >>> 'Coordinates: {latitude}, " 6720*cda5da8dSAndroid Build Coastguard Worker "{longitude}'.format(latitude='37.24N', " 6721*cda5da8dSAndroid Build Coastguard Worker "longitude='-115.81W')\n" 6722*cda5da8dSAndroid Build Coastguard Worker " 'Coordinates: 37.24N, -115.81W'\n" 6723*cda5da8dSAndroid Build Coastguard Worker " >>> coord = {'latitude': '37.24N', 'longitude': " 6724*cda5da8dSAndroid Build Coastguard Worker "'-115.81W'}\n" 6725*cda5da8dSAndroid Build Coastguard Worker " >>> 'Coordinates: {latitude}, " 6726*cda5da8dSAndroid Build Coastguard Worker "{longitude}'.format(**coord)\n" 6727*cda5da8dSAndroid Build Coastguard Worker " 'Coordinates: 37.24N, -115.81W'\n" 6728*cda5da8dSAndroid Build Coastguard Worker '\n' 6729*cda5da8dSAndroid Build Coastguard Worker 'Accessing arguments’ attributes:\n' 6730*cda5da8dSAndroid Build Coastguard Worker '\n' 6731*cda5da8dSAndroid Build Coastguard Worker ' >>> c = 3-5j\n' 6732*cda5da8dSAndroid Build Coastguard Worker " >>> ('The complex number {0} is formed from the real " 6733*cda5da8dSAndroid Build Coastguard Worker "part {0.real} '\n" 6734*cda5da8dSAndroid Build Coastguard Worker " ... 'and the imaginary part {0.imag}.').format(c)\n" 6735*cda5da8dSAndroid Build Coastguard Worker " 'The complex number (3-5j) is formed from the real part " 6736*cda5da8dSAndroid Build Coastguard Worker "3.0 and the imaginary part -5.0.'\n" 6737*cda5da8dSAndroid Build Coastguard Worker ' >>> class Point:\n' 6738*cda5da8dSAndroid Build Coastguard Worker ' ... def __init__(self, x, y):\n' 6739*cda5da8dSAndroid Build Coastguard Worker ' ... self.x, self.y = x, y\n' 6740*cda5da8dSAndroid Build Coastguard Worker ' ... def __str__(self):\n' 6741*cda5da8dSAndroid Build Coastguard Worker " ... return 'Point({self.x}, " 6742*cda5da8dSAndroid Build Coastguard Worker "{self.y})'.format(self=self)\n" 6743*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 6744*cda5da8dSAndroid Build Coastguard Worker ' >>> str(Point(4, 2))\n' 6745*cda5da8dSAndroid Build Coastguard Worker " 'Point(4, 2)'\n" 6746*cda5da8dSAndroid Build Coastguard Worker '\n' 6747*cda5da8dSAndroid Build Coastguard Worker 'Accessing arguments’ items:\n' 6748*cda5da8dSAndroid Build Coastguard Worker '\n' 6749*cda5da8dSAndroid Build Coastguard Worker ' >>> coord = (3, 5)\n' 6750*cda5da8dSAndroid Build Coastguard Worker " >>> 'X: {0[0]}; Y: {0[1]}'.format(coord)\n" 6751*cda5da8dSAndroid Build Coastguard Worker " 'X: 3; Y: 5'\n" 6752*cda5da8dSAndroid Build Coastguard Worker '\n' 6753*cda5da8dSAndroid Build Coastguard Worker 'Replacing "%s" and "%r":\n' 6754*cda5da8dSAndroid Build Coastguard Worker '\n' 6755*cda5da8dSAndroid Build Coastguard Worker ' >>> "repr() shows quotes: {!r}; str() doesn\'t: ' 6756*cda5da8dSAndroid Build Coastguard Worker '{!s}".format(\'test1\', \'test2\')\n' 6757*cda5da8dSAndroid Build Coastguard Worker ' "repr() shows quotes: \'test1\'; str() doesn\'t: test2"\n' 6758*cda5da8dSAndroid Build Coastguard Worker '\n' 6759*cda5da8dSAndroid Build Coastguard Worker 'Aligning the text and specifying a width:\n' 6760*cda5da8dSAndroid Build Coastguard Worker '\n' 6761*cda5da8dSAndroid Build Coastguard Worker " >>> '{:<30}'.format('left aligned')\n" 6762*cda5da8dSAndroid Build Coastguard Worker " 'left aligned '\n" 6763*cda5da8dSAndroid Build Coastguard Worker " >>> '{:>30}'.format('right aligned')\n" 6764*cda5da8dSAndroid Build Coastguard Worker " ' right aligned'\n" 6765*cda5da8dSAndroid Build Coastguard Worker " >>> '{:^30}'.format('centered')\n" 6766*cda5da8dSAndroid Build Coastguard Worker " ' centered '\n" 6767*cda5da8dSAndroid Build Coastguard Worker " >>> '{:*^30}'.format('centered') # use '*' as a fill " 6768*cda5da8dSAndroid Build Coastguard Worker 'char\n' 6769*cda5da8dSAndroid Build Coastguard Worker " '***********centered***********'\n" 6770*cda5da8dSAndroid Build Coastguard Worker '\n' 6771*cda5da8dSAndroid Build Coastguard Worker 'Replacing "%+f", "%-f", and "% f" and specifying a sign:\n' 6772*cda5da8dSAndroid Build Coastguard Worker '\n' 6773*cda5da8dSAndroid Build Coastguard Worker " >>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it " 6774*cda5da8dSAndroid Build Coastguard Worker 'always\n' 6775*cda5da8dSAndroid Build Coastguard Worker " '+3.140000; -3.140000'\n" 6776*cda5da8dSAndroid Build Coastguard Worker " >>> '{: f}; {: f}'.format(3.14, -3.14) # show a space " 6777*cda5da8dSAndroid Build Coastguard Worker 'for positive numbers\n' 6778*cda5da8dSAndroid Build Coastguard Worker " ' 3.140000; -3.140000'\n" 6779*cda5da8dSAndroid Build Coastguard Worker " >>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the " 6780*cda5da8dSAndroid Build Coastguard Worker "minus -- same as '{:f}; {:f}'\n" 6781*cda5da8dSAndroid Build Coastguard Worker " '3.140000; -3.140000'\n" 6782*cda5da8dSAndroid Build Coastguard Worker '\n' 6783*cda5da8dSAndroid Build Coastguard Worker 'Replacing "%x" and "%o" and converting the value to ' 6784*cda5da8dSAndroid Build Coastguard Worker 'different bases:\n' 6785*cda5da8dSAndroid Build Coastguard Worker '\n' 6786*cda5da8dSAndroid Build Coastguard Worker ' >>> # format also supports binary numbers\n' 6787*cda5da8dSAndroid Build Coastguard Worker ' >>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: ' 6788*cda5da8dSAndroid Build Coastguard Worker '{0:b}".format(42)\n' 6789*cda5da8dSAndroid Build Coastguard Worker " 'int: 42; hex: 2a; oct: 52; bin: 101010'\n" 6790*cda5da8dSAndroid Build Coastguard Worker ' >>> # with 0x, 0o, or 0b as prefix:\n' 6791*cda5da8dSAndroid Build Coastguard Worker ' >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: ' 6792*cda5da8dSAndroid Build Coastguard Worker '{0:#b}".format(42)\n' 6793*cda5da8dSAndroid Build Coastguard Worker " 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'\n" 6794*cda5da8dSAndroid Build Coastguard Worker '\n' 6795*cda5da8dSAndroid Build Coastguard Worker 'Using the comma as a thousands separator:\n' 6796*cda5da8dSAndroid Build Coastguard Worker '\n' 6797*cda5da8dSAndroid Build Coastguard Worker " >>> '{:,}'.format(1234567890)\n" 6798*cda5da8dSAndroid Build Coastguard Worker " '1,234,567,890'\n" 6799*cda5da8dSAndroid Build Coastguard Worker '\n' 6800*cda5da8dSAndroid Build Coastguard Worker 'Expressing a percentage:\n' 6801*cda5da8dSAndroid Build Coastguard Worker '\n' 6802*cda5da8dSAndroid Build Coastguard Worker ' >>> points = 19\n' 6803*cda5da8dSAndroid Build Coastguard Worker ' >>> total = 22\n' 6804*cda5da8dSAndroid Build Coastguard Worker " >>> 'Correct answers: {:.2%}'.format(points/total)\n" 6805*cda5da8dSAndroid Build Coastguard Worker " 'Correct answers: 86.36%'\n" 6806*cda5da8dSAndroid Build Coastguard Worker '\n' 6807*cda5da8dSAndroid Build Coastguard Worker 'Using type-specific formatting:\n' 6808*cda5da8dSAndroid Build Coastguard Worker '\n' 6809*cda5da8dSAndroid Build Coastguard Worker ' >>> import datetime\n' 6810*cda5da8dSAndroid Build Coastguard Worker ' >>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)\n' 6811*cda5da8dSAndroid Build Coastguard Worker " >>> '{:%Y-%m-%d %H:%M:%S}'.format(d)\n" 6812*cda5da8dSAndroid Build Coastguard Worker " '2010-07-04 12:15:58'\n" 6813*cda5da8dSAndroid Build Coastguard Worker '\n' 6814*cda5da8dSAndroid Build Coastguard Worker 'Nesting arguments and more complex examples:\n' 6815*cda5da8dSAndroid Build Coastguard Worker '\n' 6816*cda5da8dSAndroid Build Coastguard Worker " >>> for align, text in zip('<^>', ['left', 'center', " 6817*cda5da8dSAndroid Build Coastguard Worker "'right']):\n" 6818*cda5da8dSAndroid Build Coastguard Worker " ... '{0:{fill}{align}16}'.format(text, fill=align, " 6819*cda5da8dSAndroid Build Coastguard Worker 'align=align)\n' 6820*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 6821*cda5da8dSAndroid Build Coastguard Worker " 'left<<<<<<<<<<<<'\n" 6822*cda5da8dSAndroid Build Coastguard Worker " '^^^^^center^^^^^'\n" 6823*cda5da8dSAndroid Build Coastguard Worker " '>>>>>>>>>>>right'\n" 6824*cda5da8dSAndroid Build Coastguard Worker ' >>>\n' 6825*cda5da8dSAndroid Build Coastguard Worker ' >>> octets = [192, 168, 0, 1]\n' 6826*cda5da8dSAndroid Build Coastguard Worker " >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets)\n" 6827*cda5da8dSAndroid Build Coastguard Worker " 'C0A80001'\n" 6828*cda5da8dSAndroid Build Coastguard Worker ' >>> int(_, 16)\n' 6829*cda5da8dSAndroid Build Coastguard Worker ' 3232235521\n' 6830*cda5da8dSAndroid Build Coastguard Worker ' >>>\n' 6831*cda5da8dSAndroid Build Coastguard Worker ' >>> width = 5\n' 6832*cda5da8dSAndroid Build Coastguard Worker ' >>> for num in range(5,12): \n' 6833*cda5da8dSAndroid Build Coastguard Worker " ... for base in 'dXob':\n" 6834*cda5da8dSAndroid Build Coastguard Worker " ... print('{0:{width}{base}}'.format(num, " 6835*cda5da8dSAndroid Build Coastguard Worker "base=base, width=width), end=' ')\n" 6836*cda5da8dSAndroid Build Coastguard Worker ' ... print()\n' 6837*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 6838*cda5da8dSAndroid Build Coastguard Worker ' 5 5 5 101\n' 6839*cda5da8dSAndroid Build Coastguard Worker ' 6 6 6 110\n' 6840*cda5da8dSAndroid Build Coastguard Worker ' 7 7 7 111\n' 6841*cda5da8dSAndroid Build Coastguard Worker ' 8 8 10 1000\n' 6842*cda5da8dSAndroid Build Coastguard Worker ' 9 9 11 1001\n' 6843*cda5da8dSAndroid Build Coastguard Worker ' 10 A 12 1010\n' 6844*cda5da8dSAndroid Build Coastguard Worker ' 11 B 13 1011\n', 6845*cda5da8dSAndroid Build Coastguard Worker 'function': 'Function definitions\n' 6846*cda5da8dSAndroid Build Coastguard Worker '********************\n' 6847*cda5da8dSAndroid Build Coastguard Worker '\n' 6848*cda5da8dSAndroid Build Coastguard Worker 'A function definition defines a user-defined function object ' 6849*cda5da8dSAndroid Build Coastguard Worker '(see\n' 6850*cda5da8dSAndroid Build Coastguard Worker 'section The standard type hierarchy):\n' 6851*cda5da8dSAndroid Build Coastguard Worker '\n' 6852*cda5da8dSAndroid Build Coastguard Worker ' funcdef ::= [decorators] "def" funcname "(" ' 6853*cda5da8dSAndroid Build Coastguard Worker '[parameter_list] ")"\n' 6854*cda5da8dSAndroid Build Coastguard Worker ' ["->" expression] ":" suite\n' 6855*cda5da8dSAndroid Build Coastguard Worker ' decorators ::= decorator+\n' 6856*cda5da8dSAndroid Build Coastguard Worker ' decorator ::= "@" assignment_expression ' 6857*cda5da8dSAndroid Build Coastguard Worker 'NEWLINE\n' 6858*cda5da8dSAndroid Build Coastguard Worker ' parameter_list ::= defparameter ("," ' 6859*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* "," "/" ["," [parameter_list_no_posonly]]\n' 6860*cda5da8dSAndroid Build Coastguard Worker ' | parameter_list_no_posonly\n' 6861*cda5da8dSAndroid Build Coastguard Worker ' parameter_list_no_posonly ::= defparameter ("," ' 6862*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* ["," [parameter_list_starargs]]\n' 6863*cda5da8dSAndroid Build Coastguard Worker ' | parameter_list_starargs\n' 6864*cda5da8dSAndroid Build Coastguard Worker ' parameter_list_starargs ::= "*" [parameter] ("," ' 6865*cda5da8dSAndroid Build Coastguard Worker 'defparameter)* ["," ["**" parameter [","]]]\n' 6866*cda5da8dSAndroid Build Coastguard Worker ' | "**" parameter [","]\n' 6867*cda5da8dSAndroid Build Coastguard Worker ' parameter ::= identifier [":" expression]\n' 6868*cda5da8dSAndroid Build Coastguard Worker ' defparameter ::= parameter ["=" expression]\n' 6869*cda5da8dSAndroid Build Coastguard Worker ' funcname ::= identifier\n' 6870*cda5da8dSAndroid Build Coastguard Worker '\n' 6871*cda5da8dSAndroid Build Coastguard Worker 'A function definition is an executable statement. Its execution ' 6872*cda5da8dSAndroid Build Coastguard Worker 'binds\n' 6873*cda5da8dSAndroid Build Coastguard Worker 'the function name in the current local namespace to a function ' 6874*cda5da8dSAndroid Build Coastguard Worker 'object\n' 6875*cda5da8dSAndroid Build Coastguard Worker '(a wrapper around the executable code for the function). This\n' 6876*cda5da8dSAndroid Build Coastguard Worker 'function object contains a reference to the current global ' 6877*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 6878*cda5da8dSAndroid Build Coastguard Worker 'as the global namespace to be used when the function is called.\n' 6879*cda5da8dSAndroid Build Coastguard Worker '\n' 6880*cda5da8dSAndroid Build Coastguard Worker 'The function definition does not execute the function body; this ' 6881*cda5da8dSAndroid Build Coastguard Worker 'gets\n' 6882*cda5da8dSAndroid Build Coastguard Worker 'executed only when the function is called. [4]\n' 6883*cda5da8dSAndroid Build Coastguard Worker '\n' 6884*cda5da8dSAndroid Build Coastguard Worker 'A function definition may be wrapped by one or more *decorator*\n' 6885*cda5da8dSAndroid Build Coastguard Worker 'expressions. Decorator expressions are evaluated when the ' 6886*cda5da8dSAndroid Build Coastguard Worker 'function is\n' 6887*cda5da8dSAndroid Build Coastguard Worker 'defined, in the scope that contains the function definition. ' 6888*cda5da8dSAndroid Build Coastguard Worker 'The\n' 6889*cda5da8dSAndroid Build Coastguard Worker 'result must be a callable, which is invoked with the function ' 6890*cda5da8dSAndroid Build Coastguard Worker 'object\n' 6891*cda5da8dSAndroid Build Coastguard Worker 'as the only argument. The returned value is bound to the ' 6892*cda5da8dSAndroid Build Coastguard Worker 'function name\n' 6893*cda5da8dSAndroid Build Coastguard Worker 'instead of the function object. Multiple decorators are applied ' 6894*cda5da8dSAndroid Build Coastguard Worker 'in\n' 6895*cda5da8dSAndroid Build Coastguard Worker 'nested fashion. For example, the following code\n' 6896*cda5da8dSAndroid Build Coastguard Worker '\n' 6897*cda5da8dSAndroid Build Coastguard Worker ' @f1(arg)\n' 6898*cda5da8dSAndroid Build Coastguard Worker ' @f2\n' 6899*cda5da8dSAndroid Build Coastguard Worker ' def func(): pass\n' 6900*cda5da8dSAndroid Build Coastguard Worker '\n' 6901*cda5da8dSAndroid Build Coastguard Worker 'is roughly equivalent to\n' 6902*cda5da8dSAndroid Build Coastguard Worker '\n' 6903*cda5da8dSAndroid Build Coastguard Worker ' def func(): pass\n' 6904*cda5da8dSAndroid Build Coastguard Worker ' func = f1(arg)(f2(func))\n' 6905*cda5da8dSAndroid Build Coastguard Worker '\n' 6906*cda5da8dSAndroid Build Coastguard Worker 'except that the original function is not temporarily bound to ' 6907*cda5da8dSAndroid Build Coastguard Worker 'the name\n' 6908*cda5da8dSAndroid Build Coastguard Worker '"func".\n' 6909*cda5da8dSAndroid Build Coastguard Worker '\n' 6910*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.9: Functions may be decorated with any ' 6911*cda5da8dSAndroid Build Coastguard Worker 'valid\n' 6912*cda5da8dSAndroid Build Coastguard Worker '"assignment_expression". Previously, the grammar was much more\n' 6913*cda5da8dSAndroid Build Coastguard Worker 'restrictive; see **PEP 614** for details.\n' 6914*cda5da8dSAndroid Build Coastguard Worker '\n' 6915*cda5da8dSAndroid Build Coastguard Worker 'When one or more *parameters* have the form *parameter* "="\n' 6916*cda5da8dSAndroid Build Coastguard Worker '*expression*, the function is said to have “default parameter ' 6917*cda5da8dSAndroid Build Coastguard Worker 'values.”\n' 6918*cda5da8dSAndroid Build Coastguard Worker 'For a parameter with a default value, the corresponding ' 6919*cda5da8dSAndroid Build Coastguard Worker '*argument* may\n' 6920*cda5da8dSAndroid Build Coastguard Worker 'be omitted from a call, in which case the parameter’s default ' 6921*cda5da8dSAndroid Build Coastguard Worker 'value is\n' 6922*cda5da8dSAndroid Build Coastguard Worker 'substituted. If a parameter has a default value, all following\n' 6923*cda5da8dSAndroid Build Coastguard Worker 'parameters up until the “"*"” must also have a default value — ' 6924*cda5da8dSAndroid Build Coastguard Worker 'this is\n' 6925*cda5da8dSAndroid Build Coastguard Worker 'a syntactic restriction that is not expressed by the grammar.\n' 6926*cda5da8dSAndroid Build Coastguard Worker '\n' 6927*cda5da8dSAndroid Build Coastguard Worker '**Default parameter values are evaluated from left to right when ' 6928*cda5da8dSAndroid Build Coastguard Worker 'the\n' 6929*cda5da8dSAndroid Build Coastguard Worker 'function definition is executed.** This means that the ' 6930*cda5da8dSAndroid Build Coastguard Worker 'expression is\n' 6931*cda5da8dSAndroid Build Coastguard Worker 'evaluated once, when the function is defined, and that the same ' 6932*cda5da8dSAndroid Build Coastguard Worker '“pre-\n' 6933*cda5da8dSAndroid Build Coastguard Worker 'computed” value is used for each call. This is especially ' 6934*cda5da8dSAndroid Build Coastguard Worker 'important\n' 6935*cda5da8dSAndroid Build Coastguard Worker 'to understand when a default parameter value is a mutable ' 6936*cda5da8dSAndroid Build Coastguard Worker 'object, such\n' 6937*cda5da8dSAndroid Build Coastguard Worker 'as a list or a dictionary: if the function modifies the object ' 6938*cda5da8dSAndroid Build Coastguard Worker '(e.g.\n' 6939*cda5da8dSAndroid Build Coastguard Worker 'by appending an item to a list), the default parameter value is ' 6940*cda5da8dSAndroid Build Coastguard Worker 'in\n' 6941*cda5da8dSAndroid Build Coastguard Worker 'effect modified. This is generally not what was intended. A ' 6942*cda5da8dSAndroid Build Coastguard Worker 'way\n' 6943*cda5da8dSAndroid Build Coastguard Worker 'around this is to use "None" as the default, and explicitly test ' 6944*cda5da8dSAndroid Build Coastguard Worker 'for\n' 6945*cda5da8dSAndroid Build Coastguard Worker 'it in the body of the function, e.g.:\n' 6946*cda5da8dSAndroid Build Coastguard Worker '\n' 6947*cda5da8dSAndroid Build Coastguard Worker ' def whats_on_the_telly(penguin=None):\n' 6948*cda5da8dSAndroid Build Coastguard Worker ' if penguin is None:\n' 6949*cda5da8dSAndroid Build Coastguard Worker ' penguin = []\n' 6950*cda5da8dSAndroid Build Coastguard Worker ' penguin.append("property of the zoo")\n' 6951*cda5da8dSAndroid Build Coastguard Worker ' return penguin\n' 6952*cda5da8dSAndroid Build Coastguard Worker '\n' 6953*cda5da8dSAndroid Build Coastguard Worker 'Function call semantics are described in more detail in section ' 6954*cda5da8dSAndroid Build Coastguard Worker 'Calls.\n' 6955*cda5da8dSAndroid Build Coastguard Worker 'A function call always assigns values to all parameters ' 6956*cda5da8dSAndroid Build Coastguard Worker 'mentioned in\n' 6957*cda5da8dSAndroid Build Coastguard Worker 'the parameter list, either from positional arguments, from ' 6958*cda5da8dSAndroid Build Coastguard Worker 'keyword\n' 6959*cda5da8dSAndroid Build Coastguard Worker 'arguments, or from default values. If the form “"*identifier"” ' 6960*cda5da8dSAndroid Build Coastguard Worker 'is\n' 6961*cda5da8dSAndroid Build Coastguard Worker 'present, it is initialized to a tuple receiving any excess ' 6962*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 6963*cda5da8dSAndroid Build Coastguard Worker 'parameters, defaulting to the empty tuple. If the form\n' 6964*cda5da8dSAndroid Build Coastguard Worker '“"**identifier"” is present, it is initialized to a new ordered\n' 6965*cda5da8dSAndroid Build Coastguard Worker 'mapping receiving any excess keyword arguments, defaulting to a ' 6966*cda5da8dSAndroid Build Coastguard Worker 'new\n' 6967*cda5da8dSAndroid Build Coastguard Worker 'empty mapping of the same type. Parameters after “"*"” or\n' 6968*cda5da8dSAndroid Build Coastguard Worker '“"*identifier"” are keyword-only parameters and may only be ' 6969*cda5da8dSAndroid Build Coastguard Worker 'passed by\n' 6970*cda5da8dSAndroid Build Coastguard Worker 'keyword arguments. Parameters before “"/"” are positional-only\n' 6971*cda5da8dSAndroid Build Coastguard Worker 'parameters and may only be passed by positional arguments.\n' 6972*cda5da8dSAndroid Build Coastguard Worker '\n' 6973*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: The "/" function parameter syntax may be ' 6974*cda5da8dSAndroid Build Coastguard Worker 'used\n' 6975*cda5da8dSAndroid Build Coastguard Worker 'to indicate positional-only parameters. See **PEP 570** for ' 6976*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 6977*cda5da8dSAndroid Build Coastguard Worker '\n' 6978*cda5da8dSAndroid Build Coastguard Worker 'Parameters may have an *annotation* of the form “": ' 6979*cda5da8dSAndroid Build Coastguard Worker 'expression"”\n' 6980*cda5da8dSAndroid Build Coastguard Worker 'following the parameter name. Any parameter may have an ' 6981*cda5da8dSAndroid Build Coastguard Worker 'annotation,\n' 6982*cda5da8dSAndroid Build Coastguard Worker 'even those of the form "*identifier" or "**identifier". ' 6983*cda5da8dSAndroid Build Coastguard Worker 'Functions may\n' 6984*cda5da8dSAndroid Build Coastguard Worker 'have “return” annotation of the form “"-> expression"” after ' 6985*cda5da8dSAndroid Build Coastguard Worker 'the\n' 6986*cda5da8dSAndroid Build Coastguard Worker 'parameter list. These annotations can be any valid Python ' 6987*cda5da8dSAndroid Build Coastguard Worker 'expression.\n' 6988*cda5da8dSAndroid Build Coastguard Worker 'The presence of annotations does not change the semantics of a\n' 6989*cda5da8dSAndroid Build Coastguard Worker 'function. The annotation values are available as values of a\n' 6990*cda5da8dSAndroid Build Coastguard Worker 'dictionary keyed by the parameters’ names in the ' 6991*cda5da8dSAndroid Build Coastguard Worker '"__annotations__"\n' 6992*cda5da8dSAndroid Build Coastguard Worker 'attribute of the function object. If the "annotations" import ' 6993*cda5da8dSAndroid Build Coastguard Worker 'from\n' 6994*cda5da8dSAndroid Build Coastguard Worker '"__future__" is used, annotations are preserved as strings at ' 6995*cda5da8dSAndroid Build Coastguard Worker 'runtime\n' 6996*cda5da8dSAndroid Build Coastguard Worker 'which enables postponed evaluation. Otherwise, they are ' 6997*cda5da8dSAndroid Build Coastguard Worker 'evaluated\n' 6998*cda5da8dSAndroid Build Coastguard Worker 'when the function definition is executed. In this case ' 6999*cda5da8dSAndroid Build Coastguard Worker 'annotations\n' 7000*cda5da8dSAndroid Build Coastguard Worker 'may be evaluated in a different order than they appear in the ' 7001*cda5da8dSAndroid Build Coastguard Worker 'source\n' 7002*cda5da8dSAndroid Build Coastguard Worker 'code.\n' 7003*cda5da8dSAndroid Build Coastguard Worker '\n' 7004*cda5da8dSAndroid Build Coastguard Worker 'It is also possible to create anonymous functions (functions not ' 7005*cda5da8dSAndroid Build Coastguard Worker 'bound\n' 7006*cda5da8dSAndroid Build Coastguard Worker 'to a name), for immediate use in expressions. This uses lambda\n' 7007*cda5da8dSAndroid Build Coastguard Worker 'expressions, described in section Lambdas. Note that the ' 7008*cda5da8dSAndroid Build Coastguard Worker 'lambda\n' 7009*cda5da8dSAndroid Build Coastguard Worker 'expression is merely a shorthand for a simplified function ' 7010*cda5da8dSAndroid Build Coastguard Worker 'definition;\n' 7011*cda5da8dSAndroid Build Coastguard Worker 'a function defined in a “"def"” statement can be passed around ' 7012*cda5da8dSAndroid Build Coastguard Worker 'or\n' 7013*cda5da8dSAndroid Build Coastguard Worker 'assigned to another name just like a function defined by a ' 7014*cda5da8dSAndroid Build Coastguard Worker 'lambda\n' 7015*cda5da8dSAndroid Build Coastguard Worker 'expression. The “"def"” form is actually more powerful since ' 7016*cda5da8dSAndroid Build Coastguard Worker 'it\n' 7017*cda5da8dSAndroid Build Coastguard Worker 'allows the execution of multiple statements and annotations.\n' 7018*cda5da8dSAndroid Build Coastguard Worker '\n' 7019*cda5da8dSAndroid Build Coastguard Worker '**Programmer’s note:** Functions are first-class objects. A ' 7020*cda5da8dSAndroid Build Coastguard Worker '“"def"”\n' 7021*cda5da8dSAndroid Build Coastguard Worker 'statement executed inside a function definition defines a local\n' 7022*cda5da8dSAndroid Build Coastguard Worker 'function that can be returned or passed around. Free variables ' 7023*cda5da8dSAndroid Build Coastguard Worker 'used\n' 7024*cda5da8dSAndroid Build Coastguard Worker 'in the nested function can access the local variables of the ' 7025*cda5da8dSAndroid Build Coastguard Worker 'function\n' 7026*cda5da8dSAndroid Build Coastguard Worker 'containing the def. See section Naming and binding for ' 7027*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 7028*cda5da8dSAndroid Build Coastguard Worker '\n' 7029*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 7030*cda5da8dSAndroid Build Coastguard Worker '\n' 7031*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3107** - Function Annotations\n' 7032*cda5da8dSAndroid Build Coastguard Worker ' The original specification for function annotations.\n' 7033*cda5da8dSAndroid Build Coastguard Worker '\n' 7034*cda5da8dSAndroid Build Coastguard Worker ' **PEP 484** - Type Hints\n' 7035*cda5da8dSAndroid Build Coastguard Worker ' Definition of a standard meaning for annotations: type ' 7036*cda5da8dSAndroid Build Coastguard Worker 'hints.\n' 7037*cda5da8dSAndroid Build Coastguard Worker '\n' 7038*cda5da8dSAndroid Build Coastguard Worker ' **PEP 526** - Syntax for Variable Annotations\n' 7039*cda5da8dSAndroid Build Coastguard Worker ' Ability to type hint variable declarations, including ' 7040*cda5da8dSAndroid Build Coastguard Worker 'class\n' 7041*cda5da8dSAndroid Build Coastguard Worker ' variables and instance variables\n' 7042*cda5da8dSAndroid Build Coastguard Worker '\n' 7043*cda5da8dSAndroid Build Coastguard Worker ' **PEP 563** - Postponed Evaluation of Annotations\n' 7044*cda5da8dSAndroid Build Coastguard Worker ' Support for forward references within annotations by ' 7045*cda5da8dSAndroid Build Coastguard Worker 'preserving\n' 7046*cda5da8dSAndroid Build Coastguard Worker ' annotations in a string form at runtime instead of eager\n' 7047*cda5da8dSAndroid Build Coastguard Worker ' evaluation.\n', 7048*cda5da8dSAndroid Build Coastguard Worker 'global': 'The "global" statement\n' 7049*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 7050*cda5da8dSAndroid Build Coastguard Worker '\n' 7051*cda5da8dSAndroid Build Coastguard Worker ' global_stmt ::= "global" identifier ("," identifier)*\n' 7052*cda5da8dSAndroid Build Coastguard Worker '\n' 7053*cda5da8dSAndroid Build Coastguard Worker 'The "global" statement is a declaration which holds for the ' 7054*cda5da8dSAndroid Build Coastguard Worker 'entire\n' 7055*cda5da8dSAndroid Build Coastguard Worker 'current code block. It means that the listed identifiers are to ' 7056*cda5da8dSAndroid Build Coastguard Worker 'be\n' 7057*cda5da8dSAndroid Build Coastguard Worker 'interpreted as globals. It would be impossible to assign to a ' 7058*cda5da8dSAndroid Build Coastguard Worker 'global\n' 7059*cda5da8dSAndroid Build Coastguard Worker 'variable without "global", although free variables may refer to\n' 7060*cda5da8dSAndroid Build Coastguard Worker 'globals without being declared global.\n' 7061*cda5da8dSAndroid Build Coastguard Worker '\n' 7062*cda5da8dSAndroid Build Coastguard Worker 'Names listed in a "global" statement must not be used in the same ' 7063*cda5da8dSAndroid Build Coastguard Worker 'code\n' 7064*cda5da8dSAndroid Build Coastguard Worker 'block textually preceding that "global" statement.\n' 7065*cda5da8dSAndroid Build Coastguard Worker '\n' 7066*cda5da8dSAndroid Build Coastguard Worker 'Names listed in a "global" statement must not be defined as ' 7067*cda5da8dSAndroid Build Coastguard Worker 'formal\n' 7068*cda5da8dSAndroid Build Coastguard Worker 'parameters, or as targets in "with" statements or "except" ' 7069*cda5da8dSAndroid Build Coastguard Worker 'clauses, or\n' 7070*cda5da8dSAndroid Build Coastguard Worker 'in a "for" target list, "class" definition, function definition,\n' 7071*cda5da8dSAndroid Build Coastguard Worker '"import" statement, or variable annotation.\n' 7072*cda5da8dSAndroid Build Coastguard Worker '\n' 7073*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** The current implementation does ' 7074*cda5da8dSAndroid Build Coastguard Worker 'not\n' 7075*cda5da8dSAndroid Build Coastguard Worker 'enforce some of these restrictions, but programs should not abuse ' 7076*cda5da8dSAndroid Build Coastguard Worker 'this\n' 7077*cda5da8dSAndroid Build Coastguard Worker 'freedom, as future implementations may enforce them or silently ' 7078*cda5da8dSAndroid Build Coastguard Worker 'change\n' 7079*cda5da8dSAndroid Build Coastguard Worker 'the meaning of the program.\n' 7080*cda5da8dSAndroid Build Coastguard Worker '\n' 7081*cda5da8dSAndroid Build Coastguard Worker '**Programmer’s note:** "global" is a directive to the parser. It\n' 7082*cda5da8dSAndroid Build Coastguard Worker 'applies only to code parsed at the same time as the "global"\n' 7083*cda5da8dSAndroid Build Coastguard Worker 'statement. In particular, a "global" statement contained in a ' 7084*cda5da8dSAndroid Build Coastguard Worker 'string\n' 7085*cda5da8dSAndroid Build Coastguard Worker 'or code object supplied to the built-in "exec()" function does ' 7086*cda5da8dSAndroid Build Coastguard Worker 'not\n' 7087*cda5da8dSAndroid Build Coastguard Worker 'affect the code block *containing* the function call, and code\n' 7088*cda5da8dSAndroid Build Coastguard Worker 'contained in such a string is unaffected by "global" statements in ' 7089*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7090*cda5da8dSAndroid Build Coastguard Worker 'code containing the function call. The same applies to the ' 7091*cda5da8dSAndroid Build Coastguard Worker '"eval()"\n' 7092*cda5da8dSAndroid Build Coastguard Worker 'and "compile()" functions.\n', 7093*cda5da8dSAndroid Build Coastguard Worker 'id-classes': 'Reserved classes of identifiers\n' 7094*cda5da8dSAndroid Build Coastguard Worker '*******************************\n' 7095*cda5da8dSAndroid Build Coastguard Worker '\n' 7096*cda5da8dSAndroid Build Coastguard Worker 'Certain classes of identifiers (besides keywords) have ' 7097*cda5da8dSAndroid Build Coastguard Worker 'special\n' 7098*cda5da8dSAndroid Build Coastguard Worker 'meanings. These classes are identified by the patterns of ' 7099*cda5da8dSAndroid Build Coastguard Worker 'leading and\n' 7100*cda5da8dSAndroid Build Coastguard Worker 'trailing underscore characters:\n' 7101*cda5da8dSAndroid Build Coastguard Worker '\n' 7102*cda5da8dSAndroid Build Coastguard Worker '"_*"\n' 7103*cda5da8dSAndroid Build Coastguard Worker ' Not imported by "from module import *".\n' 7104*cda5da8dSAndroid Build Coastguard Worker '\n' 7105*cda5da8dSAndroid Build Coastguard Worker '"_"\n' 7106*cda5da8dSAndroid Build Coastguard Worker ' In a "case" pattern within a "match" statement, "_" is a ' 7107*cda5da8dSAndroid Build Coastguard Worker 'soft\n' 7108*cda5da8dSAndroid Build Coastguard Worker ' keyword that denotes a wildcard.\n' 7109*cda5da8dSAndroid Build Coastguard Worker '\n' 7110*cda5da8dSAndroid Build Coastguard Worker ' Separately, the interactive interpreter makes the result of ' 7111*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7112*cda5da8dSAndroid Build Coastguard Worker ' last evaluation available in the variable "_". (It is ' 7113*cda5da8dSAndroid Build Coastguard Worker 'stored in the\n' 7114*cda5da8dSAndroid Build Coastguard Worker ' "builtins" module, alongside built-in functions like ' 7115*cda5da8dSAndroid Build Coastguard Worker '"print".)\n' 7116*cda5da8dSAndroid Build Coastguard Worker '\n' 7117*cda5da8dSAndroid Build Coastguard Worker ' Elsewhere, "_" is a regular identifier. It is often used to ' 7118*cda5da8dSAndroid Build Coastguard Worker 'name\n' 7119*cda5da8dSAndroid Build Coastguard Worker ' “special” items, but it is not special to Python itself.\n' 7120*cda5da8dSAndroid Build Coastguard Worker '\n' 7121*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 7122*cda5da8dSAndroid Build Coastguard Worker '\n' 7123*cda5da8dSAndroid Build Coastguard Worker ' The name "_" is often used in conjunction with\n' 7124*cda5da8dSAndroid Build Coastguard Worker ' internationalization; refer to the documentation for the\n' 7125*cda5da8dSAndroid Build Coastguard Worker ' "gettext" module for more information on this ' 7126*cda5da8dSAndroid Build Coastguard Worker 'convention.It is\n' 7127*cda5da8dSAndroid Build Coastguard Worker ' also commonly used for unused variables.\n' 7128*cda5da8dSAndroid Build Coastguard Worker '\n' 7129*cda5da8dSAndroid Build Coastguard Worker '"__*__"\n' 7130*cda5da8dSAndroid Build Coastguard Worker ' System-defined names, informally known as “dunder” names. ' 7131*cda5da8dSAndroid Build Coastguard Worker 'These\n' 7132*cda5da8dSAndroid Build Coastguard Worker ' names are defined by the interpreter and its ' 7133*cda5da8dSAndroid Build Coastguard Worker 'implementation\n' 7134*cda5da8dSAndroid Build Coastguard Worker ' (including the standard library). Current system names are\n' 7135*cda5da8dSAndroid Build Coastguard Worker ' discussed in the Special method names section and ' 7136*cda5da8dSAndroid Build Coastguard Worker 'elsewhere. More\n' 7137*cda5da8dSAndroid Build Coastguard Worker ' will likely be defined in future versions of Python. *Any* ' 7138*cda5da8dSAndroid Build Coastguard Worker 'use of\n' 7139*cda5da8dSAndroid Build Coastguard Worker ' "__*__" names, in any context, that does not follow ' 7140*cda5da8dSAndroid Build Coastguard Worker 'explicitly\n' 7141*cda5da8dSAndroid Build Coastguard Worker ' documented use, is subject to breakage without warning.\n' 7142*cda5da8dSAndroid Build Coastguard Worker '\n' 7143*cda5da8dSAndroid Build Coastguard Worker '"__*"\n' 7144*cda5da8dSAndroid Build Coastguard Worker ' Class-private names. Names in this category, when used ' 7145*cda5da8dSAndroid Build Coastguard Worker 'within the\n' 7146*cda5da8dSAndroid Build Coastguard Worker ' context of a class definition, are re-written to use a ' 7147*cda5da8dSAndroid Build Coastguard Worker 'mangled form\n' 7148*cda5da8dSAndroid Build Coastguard Worker ' to help avoid name clashes between “private” attributes of ' 7149*cda5da8dSAndroid Build Coastguard Worker 'base and\n' 7150*cda5da8dSAndroid Build Coastguard Worker ' derived classes. See section Identifiers (Names).\n', 7151*cda5da8dSAndroid Build Coastguard Worker 'identifiers': 'Identifiers and keywords\n' 7152*cda5da8dSAndroid Build Coastguard Worker '************************\n' 7153*cda5da8dSAndroid Build Coastguard Worker '\n' 7154*cda5da8dSAndroid Build Coastguard Worker 'Identifiers (also referred to as *names*) are described by ' 7155*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7156*cda5da8dSAndroid Build Coastguard Worker 'following lexical definitions.\n' 7157*cda5da8dSAndroid Build Coastguard Worker '\n' 7158*cda5da8dSAndroid Build Coastguard Worker 'The syntax of identifiers in Python is based on the Unicode ' 7159*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 7160*cda5da8dSAndroid Build Coastguard Worker 'annex UAX-31, with elaboration and changes as defined below; ' 7161*cda5da8dSAndroid Build Coastguard Worker 'see also\n' 7162*cda5da8dSAndroid Build Coastguard Worker '**PEP 3131** for further details.\n' 7163*cda5da8dSAndroid Build Coastguard Worker '\n' 7164*cda5da8dSAndroid Build Coastguard Worker 'Within the ASCII range (U+0001..U+007F), the valid characters ' 7165*cda5da8dSAndroid Build Coastguard Worker 'for\n' 7166*cda5da8dSAndroid Build Coastguard Worker 'identifiers are the same as in Python 2.x: the uppercase and ' 7167*cda5da8dSAndroid Build Coastguard Worker 'lowercase\n' 7168*cda5da8dSAndroid Build Coastguard Worker 'letters "A" through "Z", the underscore "_" and, except for ' 7169*cda5da8dSAndroid Build Coastguard Worker 'the first\n' 7170*cda5da8dSAndroid Build Coastguard Worker 'character, the digits "0" through "9".\n' 7171*cda5da8dSAndroid Build Coastguard Worker '\n' 7172*cda5da8dSAndroid Build Coastguard Worker 'Python 3.0 introduces additional characters from outside the ' 7173*cda5da8dSAndroid Build Coastguard Worker 'ASCII\n' 7174*cda5da8dSAndroid Build Coastguard Worker 'range (see **PEP 3131**). For these characters, the ' 7175*cda5da8dSAndroid Build Coastguard Worker 'classification\n' 7176*cda5da8dSAndroid Build Coastguard Worker 'uses the version of the Unicode Character Database as ' 7177*cda5da8dSAndroid Build Coastguard Worker 'included in the\n' 7178*cda5da8dSAndroid Build Coastguard Worker '"unicodedata" module.\n' 7179*cda5da8dSAndroid Build Coastguard Worker '\n' 7180*cda5da8dSAndroid Build Coastguard Worker 'Identifiers are unlimited in length. Case is significant.\n' 7181*cda5da8dSAndroid Build Coastguard Worker '\n' 7182*cda5da8dSAndroid Build Coastguard Worker ' identifier ::= xid_start xid_continue*\n' 7183*cda5da8dSAndroid Build Coastguard Worker ' id_start ::= <all characters in general categories Lu, ' 7184*cda5da8dSAndroid Build Coastguard Worker 'Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the ' 7185*cda5da8dSAndroid Build Coastguard Worker 'Other_ID_Start property>\n' 7186*cda5da8dSAndroid Build Coastguard Worker ' id_continue ::= <all characters in id_start, plus ' 7187*cda5da8dSAndroid Build Coastguard Worker 'characters in the categories Mn, Mc, Nd, Pc and others with ' 7188*cda5da8dSAndroid Build Coastguard Worker 'the Other_ID_Continue property>\n' 7189*cda5da8dSAndroid Build Coastguard Worker ' xid_start ::= <all characters in id_start whose NFKC ' 7190*cda5da8dSAndroid Build Coastguard Worker 'normalization is in "id_start xid_continue*">\n' 7191*cda5da8dSAndroid Build Coastguard Worker ' xid_continue ::= <all characters in id_continue whose NFKC ' 7192*cda5da8dSAndroid Build Coastguard Worker 'normalization is in "id_continue*">\n' 7193*cda5da8dSAndroid Build Coastguard Worker '\n' 7194*cda5da8dSAndroid Build Coastguard Worker 'The Unicode category codes mentioned above stand for:\n' 7195*cda5da8dSAndroid Build Coastguard Worker '\n' 7196*cda5da8dSAndroid Build Coastguard Worker '* *Lu* - uppercase letters\n' 7197*cda5da8dSAndroid Build Coastguard Worker '\n' 7198*cda5da8dSAndroid Build Coastguard Worker '* *Ll* - lowercase letters\n' 7199*cda5da8dSAndroid Build Coastguard Worker '\n' 7200*cda5da8dSAndroid Build Coastguard Worker '* *Lt* - titlecase letters\n' 7201*cda5da8dSAndroid Build Coastguard Worker '\n' 7202*cda5da8dSAndroid Build Coastguard Worker '* *Lm* - modifier letters\n' 7203*cda5da8dSAndroid Build Coastguard Worker '\n' 7204*cda5da8dSAndroid Build Coastguard Worker '* *Lo* - other letters\n' 7205*cda5da8dSAndroid Build Coastguard Worker '\n' 7206*cda5da8dSAndroid Build Coastguard Worker '* *Nl* - letter numbers\n' 7207*cda5da8dSAndroid Build Coastguard Worker '\n' 7208*cda5da8dSAndroid Build Coastguard Worker '* *Mn* - nonspacing marks\n' 7209*cda5da8dSAndroid Build Coastguard Worker '\n' 7210*cda5da8dSAndroid Build Coastguard Worker '* *Mc* - spacing combining marks\n' 7211*cda5da8dSAndroid Build Coastguard Worker '\n' 7212*cda5da8dSAndroid Build Coastguard Worker '* *Nd* - decimal numbers\n' 7213*cda5da8dSAndroid Build Coastguard Worker '\n' 7214*cda5da8dSAndroid Build Coastguard Worker '* *Pc* - connector punctuations\n' 7215*cda5da8dSAndroid Build Coastguard Worker '\n' 7216*cda5da8dSAndroid Build Coastguard Worker '* *Other_ID_Start* - explicit list of characters in ' 7217*cda5da8dSAndroid Build Coastguard Worker 'PropList.txt to\n' 7218*cda5da8dSAndroid Build Coastguard Worker ' support backwards compatibility\n' 7219*cda5da8dSAndroid Build Coastguard Worker '\n' 7220*cda5da8dSAndroid Build Coastguard Worker '* *Other_ID_Continue* - likewise\n' 7221*cda5da8dSAndroid Build Coastguard Worker '\n' 7222*cda5da8dSAndroid Build Coastguard Worker 'All identifiers are converted into the normal form NFKC while ' 7223*cda5da8dSAndroid Build Coastguard Worker 'parsing;\n' 7224*cda5da8dSAndroid Build Coastguard Worker 'comparison of identifiers is based on NFKC.\n' 7225*cda5da8dSAndroid Build Coastguard Worker '\n' 7226*cda5da8dSAndroid Build Coastguard Worker 'A non-normative HTML file listing all valid identifier ' 7227*cda5da8dSAndroid Build Coastguard Worker 'characters for\n' 7228*cda5da8dSAndroid Build Coastguard Worker 'Unicode 14.0.0 can be found at\n' 7229*cda5da8dSAndroid Build Coastguard Worker 'https://www.unicode.org/Public/14.0.0/ucd/DerivedCoreProperties.txt\n' 7230*cda5da8dSAndroid Build Coastguard Worker '\n' 7231*cda5da8dSAndroid Build Coastguard Worker '\n' 7232*cda5da8dSAndroid Build Coastguard Worker 'Keywords\n' 7233*cda5da8dSAndroid Build Coastguard Worker '========\n' 7234*cda5da8dSAndroid Build Coastguard Worker '\n' 7235*cda5da8dSAndroid Build Coastguard Worker 'The following identifiers are used as reserved words, or ' 7236*cda5da8dSAndroid Build Coastguard Worker '*keywords* of\n' 7237*cda5da8dSAndroid Build Coastguard Worker 'the language, and cannot be used as ordinary identifiers. ' 7238*cda5da8dSAndroid Build Coastguard Worker 'They must\n' 7239*cda5da8dSAndroid Build Coastguard Worker 'be spelled exactly as written here:\n' 7240*cda5da8dSAndroid Build Coastguard Worker '\n' 7241*cda5da8dSAndroid Build Coastguard Worker ' False await else import pass\n' 7242*cda5da8dSAndroid Build Coastguard Worker ' None break except in raise\n' 7243*cda5da8dSAndroid Build Coastguard Worker ' True class finally is return\n' 7244*cda5da8dSAndroid Build Coastguard Worker ' and continue for lambda try\n' 7245*cda5da8dSAndroid Build Coastguard Worker ' as def from nonlocal while\n' 7246*cda5da8dSAndroid Build Coastguard Worker ' assert del global not with\n' 7247*cda5da8dSAndroid Build Coastguard Worker ' async elif if or yield\n' 7248*cda5da8dSAndroid Build Coastguard Worker '\n' 7249*cda5da8dSAndroid Build Coastguard Worker '\n' 7250*cda5da8dSAndroid Build Coastguard Worker 'Soft Keywords\n' 7251*cda5da8dSAndroid Build Coastguard Worker '=============\n' 7252*cda5da8dSAndroid Build Coastguard Worker '\n' 7253*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.10.\n' 7254*cda5da8dSAndroid Build Coastguard Worker '\n' 7255*cda5da8dSAndroid Build Coastguard Worker 'Some identifiers are only reserved under specific contexts. ' 7256*cda5da8dSAndroid Build Coastguard Worker 'These are\n' 7257*cda5da8dSAndroid Build Coastguard Worker 'known as *soft keywords*. The identifiers "match", "case" ' 7258*cda5da8dSAndroid Build Coastguard Worker 'and "_" can\n' 7259*cda5da8dSAndroid Build Coastguard Worker 'syntactically act as keywords in contexts related to the ' 7260*cda5da8dSAndroid Build Coastguard Worker 'pattern\n' 7261*cda5da8dSAndroid Build Coastguard Worker 'matching statement, but this distinction is done at the ' 7262*cda5da8dSAndroid Build Coastguard Worker 'parser level,\n' 7263*cda5da8dSAndroid Build Coastguard Worker 'not when tokenizing.\n' 7264*cda5da8dSAndroid Build Coastguard Worker '\n' 7265*cda5da8dSAndroid Build Coastguard Worker 'As soft keywords, their use with pattern matching is possible ' 7266*cda5da8dSAndroid Build Coastguard Worker 'while\n' 7267*cda5da8dSAndroid Build Coastguard Worker 'still preserving compatibility with existing code that uses ' 7268*cda5da8dSAndroid Build Coastguard Worker '"match",\n' 7269*cda5da8dSAndroid Build Coastguard Worker '"case" and "_" as identifier names.\n' 7270*cda5da8dSAndroid Build Coastguard Worker '\n' 7271*cda5da8dSAndroid Build Coastguard Worker '\n' 7272*cda5da8dSAndroid Build Coastguard Worker 'Reserved classes of identifiers\n' 7273*cda5da8dSAndroid Build Coastguard Worker '===============================\n' 7274*cda5da8dSAndroid Build Coastguard Worker '\n' 7275*cda5da8dSAndroid Build Coastguard Worker 'Certain classes of identifiers (besides keywords) have ' 7276*cda5da8dSAndroid Build Coastguard Worker 'special\n' 7277*cda5da8dSAndroid Build Coastguard Worker 'meanings. These classes are identified by the patterns of ' 7278*cda5da8dSAndroid Build Coastguard Worker 'leading and\n' 7279*cda5da8dSAndroid Build Coastguard Worker 'trailing underscore characters:\n' 7280*cda5da8dSAndroid Build Coastguard Worker '\n' 7281*cda5da8dSAndroid Build Coastguard Worker '"_*"\n' 7282*cda5da8dSAndroid Build Coastguard Worker ' Not imported by "from module import *".\n' 7283*cda5da8dSAndroid Build Coastguard Worker '\n' 7284*cda5da8dSAndroid Build Coastguard Worker '"_"\n' 7285*cda5da8dSAndroid Build Coastguard Worker ' In a "case" pattern within a "match" statement, "_" is a ' 7286*cda5da8dSAndroid Build Coastguard Worker 'soft\n' 7287*cda5da8dSAndroid Build Coastguard Worker ' keyword that denotes a wildcard.\n' 7288*cda5da8dSAndroid Build Coastguard Worker '\n' 7289*cda5da8dSAndroid Build Coastguard Worker ' Separately, the interactive interpreter makes the result ' 7290*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 7291*cda5da8dSAndroid Build Coastguard Worker ' last evaluation available in the variable "_". (It is ' 7292*cda5da8dSAndroid Build Coastguard Worker 'stored in the\n' 7293*cda5da8dSAndroid Build Coastguard Worker ' "builtins" module, alongside built-in functions like ' 7294*cda5da8dSAndroid Build Coastguard Worker '"print".)\n' 7295*cda5da8dSAndroid Build Coastguard Worker '\n' 7296*cda5da8dSAndroid Build Coastguard Worker ' Elsewhere, "_" is a regular identifier. It is often used ' 7297*cda5da8dSAndroid Build Coastguard Worker 'to name\n' 7298*cda5da8dSAndroid Build Coastguard Worker ' “special” items, but it is not special to Python itself.\n' 7299*cda5da8dSAndroid Build Coastguard Worker '\n' 7300*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 7301*cda5da8dSAndroid Build Coastguard Worker '\n' 7302*cda5da8dSAndroid Build Coastguard Worker ' The name "_" is often used in conjunction with\n' 7303*cda5da8dSAndroid Build Coastguard Worker ' internationalization; refer to the documentation for ' 7304*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7305*cda5da8dSAndroid Build Coastguard Worker ' "gettext" module for more information on this ' 7306*cda5da8dSAndroid Build Coastguard Worker 'convention.It is\n' 7307*cda5da8dSAndroid Build Coastguard Worker ' also commonly used for unused variables.\n' 7308*cda5da8dSAndroid Build Coastguard Worker '\n' 7309*cda5da8dSAndroid Build Coastguard Worker '"__*__"\n' 7310*cda5da8dSAndroid Build Coastguard Worker ' System-defined names, informally known as “dunder” names. ' 7311*cda5da8dSAndroid Build Coastguard Worker 'These\n' 7312*cda5da8dSAndroid Build Coastguard Worker ' names are defined by the interpreter and its ' 7313*cda5da8dSAndroid Build Coastguard Worker 'implementation\n' 7314*cda5da8dSAndroid Build Coastguard Worker ' (including the standard library). Current system names ' 7315*cda5da8dSAndroid Build Coastguard Worker 'are\n' 7316*cda5da8dSAndroid Build Coastguard Worker ' discussed in the Special method names section and ' 7317*cda5da8dSAndroid Build Coastguard Worker 'elsewhere. More\n' 7318*cda5da8dSAndroid Build Coastguard Worker ' will likely be defined in future versions of Python. ' 7319*cda5da8dSAndroid Build Coastguard Worker '*Any* use of\n' 7320*cda5da8dSAndroid Build Coastguard Worker ' "__*__" names, in any context, that does not follow ' 7321*cda5da8dSAndroid Build Coastguard Worker 'explicitly\n' 7322*cda5da8dSAndroid Build Coastguard Worker ' documented use, is subject to breakage without warning.\n' 7323*cda5da8dSAndroid Build Coastguard Worker '\n' 7324*cda5da8dSAndroid Build Coastguard Worker '"__*"\n' 7325*cda5da8dSAndroid Build Coastguard Worker ' Class-private names. Names in this category, when used ' 7326*cda5da8dSAndroid Build Coastguard Worker 'within the\n' 7327*cda5da8dSAndroid Build Coastguard Worker ' context of a class definition, are re-written to use a ' 7328*cda5da8dSAndroid Build Coastguard Worker 'mangled form\n' 7329*cda5da8dSAndroid Build Coastguard Worker ' to help avoid name clashes between “private” attributes of ' 7330*cda5da8dSAndroid Build Coastguard Worker 'base and\n' 7331*cda5da8dSAndroid Build Coastguard Worker ' derived classes. See section Identifiers (Names).\n', 7332*cda5da8dSAndroid Build Coastguard Worker 'if': 'The "if" statement\n' 7333*cda5da8dSAndroid Build Coastguard Worker '******************\n' 7334*cda5da8dSAndroid Build Coastguard Worker '\n' 7335*cda5da8dSAndroid Build Coastguard Worker 'The "if" statement is used for conditional execution:\n' 7336*cda5da8dSAndroid Build Coastguard Worker '\n' 7337*cda5da8dSAndroid Build Coastguard Worker ' if_stmt ::= "if" assignment_expression ":" suite\n' 7338*cda5da8dSAndroid Build Coastguard Worker ' ("elif" assignment_expression ":" suite)*\n' 7339*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 7340*cda5da8dSAndroid Build Coastguard Worker '\n' 7341*cda5da8dSAndroid Build Coastguard Worker 'It selects exactly one of the suites by evaluating the expressions ' 7342*cda5da8dSAndroid Build Coastguard Worker 'one\n' 7343*cda5da8dSAndroid Build Coastguard Worker 'by one until one is found to be true (see section Boolean operations\n' 7344*cda5da8dSAndroid Build Coastguard Worker 'for the definition of true and false); then that suite is executed\n' 7345*cda5da8dSAndroid Build Coastguard Worker '(and no other part of the "if" statement is executed or evaluated).\n' 7346*cda5da8dSAndroid Build Coastguard Worker 'If all expressions are false, the suite of the "else" clause, if\n' 7347*cda5da8dSAndroid Build Coastguard Worker 'present, is executed.\n', 7348*cda5da8dSAndroid Build Coastguard Worker 'imaginary': 'Imaginary literals\n' 7349*cda5da8dSAndroid Build Coastguard Worker '******************\n' 7350*cda5da8dSAndroid Build Coastguard Worker '\n' 7351*cda5da8dSAndroid Build Coastguard Worker 'Imaginary literals are described by the following lexical ' 7352*cda5da8dSAndroid Build Coastguard Worker 'definitions:\n' 7353*cda5da8dSAndroid Build Coastguard Worker '\n' 7354*cda5da8dSAndroid Build Coastguard Worker ' imagnumber ::= (floatnumber | digitpart) ("j" | "J")\n' 7355*cda5da8dSAndroid Build Coastguard Worker '\n' 7356*cda5da8dSAndroid Build Coastguard Worker 'An imaginary literal yields a complex number with a real part ' 7357*cda5da8dSAndroid Build Coastguard Worker 'of 0.0.\n' 7358*cda5da8dSAndroid Build Coastguard Worker 'Complex numbers are represented as a pair of floating point ' 7359*cda5da8dSAndroid Build Coastguard Worker 'numbers\n' 7360*cda5da8dSAndroid Build Coastguard Worker 'and have the same restrictions on their range. To create a ' 7361*cda5da8dSAndroid Build Coastguard Worker 'complex\n' 7362*cda5da8dSAndroid Build Coastguard Worker 'number with a nonzero real part, add a floating point number to ' 7363*cda5da8dSAndroid Build Coastguard Worker 'it,\n' 7364*cda5da8dSAndroid Build Coastguard Worker 'e.g., "(3+4j)". Some examples of imaginary literals:\n' 7365*cda5da8dSAndroid Build Coastguard Worker '\n' 7366*cda5da8dSAndroid Build Coastguard Worker ' 3.14j 10.j 10j .001j 1e100j 3.14e-10j ' 7367*cda5da8dSAndroid Build Coastguard Worker '3.14_15_93j\n', 7368*cda5da8dSAndroid Build Coastguard Worker 'import': 'The "import" statement\n' 7369*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 7370*cda5da8dSAndroid Build Coastguard Worker '\n' 7371*cda5da8dSAndroid Build Coastguard Worker ' import_stmt ::= "import" module ["as" identifier] ("," ' 7372*cda5da8dSAndroid Build Coastguard Worker 'module ["as" identifier])*\n' 7373*cda5da8dSAndroid Build Coastguard Worker ' | "from" relative_module "import" identifier ' 7374*cda5da8dSAndroid Build Coastguard Worker '["as" identifier]\n' 7375*cda5da8dSAndroid Build Coastguard Worker ' ("," identifier ["as" identifier])*\n' 7376*cda5da8dSAndroid Build Coastguard Worker ' | "from" relative_module "import" "(" ' 7377*cda5da8dSAndroid Build Coastguard Worker 'identifier ["as" identifier]\n' 7378*cda5da8dSAndroid Build Coastguard Worker ' ("," identifier ["as" identifier])* [","] ")"\n' 7379*cda5da8dSAndroid Build Coastguard Worker ' | "from" relative_module "import" "*"\n' 7380*cda5da8dSAndroid Build Coastguard Worker ' module ::= (identifier ".")* identifier\n' 7381*cda5da8dSAndroid Build Coastguard Worker ' relative_module ::= "."* module | "."+\n' 7382*cda5da8dSAndroid Build Coastguard Worker '\n' 7383*cda5da8dSAndroid Build Coastguard Worker 'The basic import statement (no "from" clause) is executed in two\n' 7384*cda5da8dSAndroid Build Coastguard Worker 'steps:\n' 7385*cda5da8dSAndroid Build Coastguard Worker '\n' 7386*cda5da8dSAndroid Build Coastguard Worker '1. find a module, loading and initializing it if necessary\n' 7387*cda5da8dSAndroid Build Coastguard Worker '\n' 7388*cda5da8dSAndroid Build Coastguard Worker '2. define a name or names in the local namespace for the scope ' 7389*cda5da8dSAndroid Build Coastguard Worker 'where\n' 7390*cda5da8dSAndroid Build Coastguard Worker ' the "import" statement occurs.\n' 7391*cda5da8dSAndroid Build Coastguard Worker '\n' 7392*cda5da8dSAndroid Build Coastguard Worker 'When the statement contains multiple clauses (separated by commas) ' 7393*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7394*cda5da8dSAndroid Build Coastguard Worker 'two steps are carried out separately for each clause, just as ' 7395*cda5da8dSAndroid Build Coastguard Worker 'though\n' 7396*cda5da8dSAndroid Build Coastguard Worker 'the clauses had been separated out into individual import ' 7397*cda5da8dSAndroid Build Coastguard Worker 'statements.\n' 7398*cda5da8dSAndroid Build Coastguard Worker '\n' 7399*cda5da8dSAndroid Build Coastguard Worker 'The details of the first step, finding and loading modules, are\n' 7400*cda5da8dSAndroid Build Coastguard Worker 'described in greater detail in the section on the import system, ' 7401*cda5da8dSAndroid Build Coastguard Worker 'which\n' 7402*cda5da8dSAndroid Build Coastguard Worker 'also describes the various types of packages and modules that can ' 7403*cda5da8dSAndroid Build Coastguard Worker 'be\n' 7404*cda5da8dSAndroid Build Coastguard Worker 'imported, as well as all the hooks that can be used to customize ' 7405*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7406*cda5da8dSAndroid Build Coastguard Worker 'import system. Note that failures in this step may indicate ' 7407*cda5da8dSAndroid Build Coastguard Worker 'either\n' 7408*cda5da8dSAndroid Build Coastguard Worker 'that the module could not be located, *or* that an error occurred\n' 7409*cda5da8dSAndroid Build Coastguard Worker 'while initializing the module, which includes execution of the\n' 7410*cda5da8dSAndroid Build Coastguard Worker 'module’s code.\n' 7411*cda5da8dSAndroid Build Coastguard Worker '\n' 7412*cda5da8dSAndroid Build Coastguard Worker 'If the requested module is retrieved successfully, it will be ' 7413*cda5da8dSAndroid Build Coastguard Worker 'made\n' 7414*cda5da8dSAndroid Build Coastguard Worker 'available in the local namespace in one of three ways:\n' 7415*cda5da8dSAndroid Build Coastguard Worker '\n' 7416*cda5da8dSAndroid Build Coastguard Worker '* If the module name is followed by "as", then the name following ' 7417*cda5da8dSAndroid Build Coastguard Worker '"as"\n' 7418*cda5da8dSAndroid Build Coastguard Worker ' is bound directly to the imported module.\n' 7419*cda5da8dSAndroid Build Coastguard Worker '\n' 7420*cda5da8dSAndroid Build Coastguard Worker '* If no other name is specified, and the module being imported is ' 7421*cda5da8dSAndroid Build Coastguard Worker 'a\n' 7422*cda5da8dSAndroid Build Coastguard Worker ' top level module, the module’s name is bound in the local ' 7423*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 7424*cda5da8dSAndroid Build Coastguard Worker ' as a reference to the imported module\n' 7425*cda5da8dSAndroid Build Coastguard Worker '\n' 7426*cda5da8dSAndroid Build Coastguard Worker '* If the module being imported is *not* a top level module, then ' 7427*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7428*cda5da8dSAndroid Build Coastguard Worker ' name of the top level package that contains the module is bound ' 7429*cda5da8dSAndroid Build Coastguard Worker 'in\n' 7430*cda5da8dSAndroid Build Coastguard Worker ' the local namespace as a reference to the top level package. ' 7431*cda5da8dSAndroid Build Coastguard Worker 'The\n' 7432*cda5da8dSAndroid Build Coastguard Worker ' imported module must be accessed using its full qualified name\n' 7433*cda5da8dSAndroid Build Coastguard Worker ' rather than directly\n' 7434*cda5da8dSAndroid Build Coastguard Worker '\n' 7435*cda5da8dSAndroid Build Coastguard Worker 'The "from" form uses a slightly more complex process:\n' 7436*cda5da8dSAndroid Build Coastguard Worker '\n' 7437*cda5da8dSAndroid Build Coastguard Worker '1. find the module specified in the "from" clause, loading and\n' 7438*cda5da8dSAndroid Build Coastguard Worker ' initializing it if necessary;\n' 7439*cda5da8dSAndroid Build Coastguard Worker '\n' 7440*cda5da8dSAndroid Build Coastguard Worker '2. for each of the identifiers specified in the "import" clauses:\n' 7441*cda5da8dSAndroid Build Coastguard Worker '\n' 7442*cda5da8dSAndroid Build Coastguard Worker ' 1. check if the imported module has an attribute by that name\n' 7443*cda5da8dSAndroid Build Coastguard Worker '\n' 7444*cda5da8dSAndroid Build Coastguard Worker ' 2. if not, attempt to import a submodule with that name and ' 7445*cda5da8dSAndroid Build Coastguard Worker 'then\n' 7446*cda5da8dSAndroid Build Coastguard Worker ' check the imported module again for that attribute\n' 7447*cda5da8dSAndroid Build Coastguard Worker '\n' 7448*cda5da8dSAndroid Build Coastguard Worker ' 3. if the attribute is not found, "ImportError" is raised.\n' 7449*cda5da8dSAndroid Build Coastguard Worker '\n' 7450*cda5da8dSAndroid Build Coastguard Worker ' 4. otherwise, a reference to that value is stored in the local\n' 7451*cda5da8dSAndroid Build Coastguard Worker ' namespace, using the name in the "as" clause if it is ' 7452*cda5da8dSAndroid Build Coastguard Worker 'present,\n' 7453*cda5da8dSAndroid Build Coastguard Worker ' otherwise using the attribute name\n' 7454*cda5da8dSAndroid Build Coastguard Worker '\n' 7455*cda5da8dSAndroid Build Coastguard Worker 'Examples:\n' 7456*cda5da8dSAndroid Build Coastguard Worker '\n' 7457*cda5da8dSAndroid Build Coastguard Worker ' import foo # foo imported and bound locally\n' 7458*cda5da8dSAndroid Build Coastguard Worker ' import foo.bar.baz # foo, foo.bar, and foo.bar.baz ' 7459*cda5da8dSAndroid Build Coastguard Worker 'imported, foo bound locally\n' 7460*cda5da8dSAndroid Build Coastguard Worker ' import foo.bar.baz as fbb # foo, foo.bar, and foo.bar.baz ' 7461*cda5da8dSAndroid Build Coastguard Worker 'imported, foo.bar.baz bound as fbb\n' 7462*cda5da8dSAndroid Build Coastguard Worker ' from foo.bar import baz # foo, foo.bar, and foo.bar.baz ' 7463*cda5da8dSAndroid Build Coastguard Worker 'imported, foo.bar.baz bound as baz\n' 7464*cda5da8dSAndroid Build Coastguard Worker ' from foo import attr # foo imported and foo.attr bound as ' 7465*cda5da8dSAndroid Build Coastguard Worker 'attr\n' 7466*cda5da8dSAndroid Build Coastguard Worker '\n' 7467*cda5da8dSAndroid Build Coastguard Worker 'If the list of identifiers is replaced by a star ("\'*\'"), all ' 7468*cda5da8dSAndroid Build Coastguard Worker 'public\n' 7469*cda5da8dSAndroid Build Coastguard Worker 'names defined in the module are bound in the local namespace for ' 7470*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7471*cda5da8dSAndroid Build Coastguard Worker 'scope where the "import" statement occurs.\n' 7472*cda5da8dSAndroid Build Coastguard Worker '\n' 7473*cda5da8dSAndroid Build Coastguard Worker 'The *public names* defined by a module are determined by checking ' 7474*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7475*cda5da8dSAndroid Build Coastguard Worker 'module’s namespace for a variable named "__all__"; if defined, it ' 7476*cda5da8dSAndroid Build Coastguard Worker 'must\n' 7477*cda5da8dSAndroid Build Coastguard Worker 'be a sequence of strings which are names defined or imported by ' 7478*cda5da8dSAndroid Build Coastguard Worker 'that\n' 7479*cda5da8dSAndroid Build Coastguard Worker 'module. The names given in "__all__" are all considered public ' 7480*cda5da8dSAndroid Build Coastguard Worker 'and\n' 7481*cda5da8dSAndroid Build Coastguard Worker 'are required to exist. If "__all__" is not defined, the set of ' 7482*cda5da8dSAndroid Build Coastguard Worker 'public\n' 7483*cda5da8dSAndroid Build Coastguard Worker 'names includes all names found in the module’s namespace which do ' 7484*cda5da8dSAndroid Build Coastguard Worker 'not\n' 7485*cda5da8dSAndroid Build Coastguard Worker 'begin with an underscore character ("\'_\'"). "__all__" should ' 7486*cda5da8dSAndroid Build Coastguard Worker 'contain\n' 7487*cda5da8dSAndroid Build Coastguard Worker 'the entire public API. It is intended to avoid accidentally ' 7488*cda5da8dSAndroid Build Coastguard Worker 'exporting\n' 7489*cda5da8dSAndroid Build Coastguard Worker 'items that are not part of the API (such as library modules which ' 7490*cda5da8dSAndroid Build Coastguard Worker 'were\n' 7491*cda5da8dSAndroid Build Coastguard Worker 'imported and used within the module).\n' 7492*cda5da8dSAndroid Build Coastguard Worker '\n' 7493*cda5da8dSAndroid Build Coastguard Worker 'The wild card form of import — "from module import *" — is only\n' 7494*cda5da8dSAndroid Build Coastguard Worker 'allowed at the module level. Attempting to use it in class or\n' 7495*cda5da8dSAndroid Build Coastguard Worker 'function definitions will raise a "SyntaxError".\n' 7496*cda5da8dSAndroid Build Coastguard Worker '\n' 7497*cda5da8dSAndroid Build Coastguard Worker 'When specifying what module to import you do not have to specify ' 7498*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7499*cda5da8dSAndroid Build Coastguard Worker 'absolute name of the module. When a module or package is ' 7500*cda5da8dSAndroid Build Coastguard Worker 'contained\n' 7501*cda5da8dSAndroid Build Coastguard Worker 'within another package it is possible to make a relative import ' 7502*cda5da8dSAndroid Build Coastguard Worker 'within\n' 7503*cda5da8dSAndroid Build Coastguard Worker 'the same top package without having to mention the package name. ' 7504*cda5da8dSAndroid Build Coastguard Worker 'By\n' 7505*cda5da8dSAndroid Build Coastguard Worker 'using leading dots in the specified module or package after "from" ' 7506*cda5da8dSAndroid Build Coastguard Worker 'you\n' 7507*cda5da8dSAndroid Build Coastguard Worker 'can specify how high to traverse up the current package hierarchy\n' 7508*cda5da8dSAndroid Build Coastguard Worker 'without specifying exact names. One leading dot means the current\n' 7509*cda5da8dSAndroid Build Coastguard Worker 'package where the module making the import exists. Two dots means ' 7510*cda5da8dSAndroid Build Coastguard Worker 'up\n' 7511*cda5da8dSAndroid Build Coastguard Worker 'one package level. Three dots is up two levels, etc. So if you ' 7512*cda5da8dSAndroid Build Coastguard Worker 'execute\n' 7513*cda5da8dSAndroid Build Coastguard Worker '"from . import mod" from a module in the "pkg" package then you ' 7514*cda5da8dSAndroid Build Coastguard Worker 'will\n' 7515*cda5da8dSAndroid Build Coastguard Worker 'end up importing "pkg.mod". If you execute "from ..subpkg2 import ' 7516*cda5da8dSAndroid Build Coastguard Worker 'mod"\n' 7517*cda5da8dSAndroid Build Coastguard Worker 'from within "pkg.subpkg1" you will import "pkg.subpkg2.mod". The\n' 7518*cda5da8dSAndroid Build Coastguard Worker 'specification for relative imports is contained in the Package\n' 7519*cda5da8dSAndroid Build Coastguard Worker 'Relative Imports section.\n' 7520*cda5da8dSAndroid Build Coastguard Worker '\n' 7521*cda5da8dSAndroid Build Coastguard Worker '"importlib.import_module()" is provided to support applications ' 7522*cda5da8dSAndroid Build Coastguard Worker 'that\n' 7523*cda5da8dSAndroid Build Coastguard Worker 'determine dynamically the modules to be loaded.\n' 7524*cda5da8dSAndroid Build Coastguard Worker '\n' 7525*cda5da8dSAndroid Build Coastguard Worker 'Raises an auditing event "import" with arguments "module", ' 7526*cda5da8dSAndroid Build Coastguard Worker '"filename",\n' 7527*cda5da8dSAndroid Build Coastguard Worker '"sys.path", "sys.meta_path", "sys.path_hooks".\n' 7528*cda5da8dSAndroid Build Coastguard Worker '\n' 7529*cda5da8dSAndroid Build Coastguard Worker '\n' 7530*cda5da8dSAndroid Build Coastguard Worker 'Future statements\n' 7531*cda5da8dSAndroid Build Coastguard Worker '=================\n' 7532*cda5da8dSAndroid Build Coastguard Worker '\n' 7533*cda5da8dSAndroid Build Coastguard Worker 'A *future statement* is a directive to the compiler that a ' 7534*cda5da8dSAndroid Build Coastguard Worker 'particular\n' 7535*cda5da8dSAndroid Build Coastguard Worker 'module should be compiled using syntax or semantics that will be\n' 7536*cda5da8dSAndroid Build Coastguard Worker 'available in a specified future release of Python where the ' 7537*cda5da8dSAndroid Build Coastguard Worker 'feature\n' 7538*cda5da8dSAndroid Build Coastguard Worker 'becomes standard.\n' 7539*cda5da8dSAndroid Build Coastguard Worker '\n' 7540*cda5da8dSAndroid Build Coastguard Worker 'The future statement is intended to ease migration to future ' 7541*cda5da8dSAndroid Build Coastguard Worker 'versions\n' 7542*cda5da8dSAndroid Build Coastguard Worker 'of Python that introduce incompatible changes to the language. ' 7543*cda5da8dSAndroid Build Coastguard Worker 'It\n' 7544*cda5da8dSAndroid Build Coastguard Worker 'allows use of the new features on a per-module basis before the\n' 7545*cda5da8dSAndroid Build Coastguard Worker 'release in which the feature becomes standard.\n' 7546*cda5da8dSAndroid Build Coastguard Worker '\n' 7547*cda5da8dSAndroid Build Coastguard Worker ' future_stmt ::= "from" "__future__" "import" feature ["as" ' 7548*cda5da8dSAndroid Build Coastguard Worker 'identifier]\n' 7549*cda5da8dSAndroid Build Coastguard Worker ' ("," feature ["as" identifier])*\n' 7550*cda5da8dSAndroid Build Coastguard Worker ' | "from" "__future__" "import" "(" feature ' 7551*cda5da8dSAndroid Build Coastguard Worker '["as" identifier]\n' 7552*cda5da8dSAndroid Build Coastguard Worker ' ("," feature ["as" identifier])* [","] ")"\n' 7553*cda5da8dSAndroid Build Coastguard Worker ' feature ::= identifier\n' 7554*cda5da8dSAndroid Build Coastguard Worker '\n' 7555*cda5da8dSAndroid Build Coastguard Worker 'A future statement must appear near the top of the module. The ' 7556*cda5da8dSAndroid Build Coastguard Worker 'only\n' 7557*cda5da8dSAndroid Build Coastguard Worker 'lines that can appear before a future statement are:\n' 7558*cda5da8dSAndroid Build Coastguard Worker '\n' 7559*cda5da8dSAndroid Build Coastguard Worker '* the module docstring (if any),\n' 7560*cda5da8dSAndroid Build Coastguard Worker '\n' 7561*cda5da8dSAndroid Build Coastguard Worker '* comments,\n' 7562*cda5da8dSAndroid Build Coastguard Worker '\n' 7563*cda5da8dSAndroid Build Coastguard Worker '* blank lines, and\n' 7564*cda5da8dSAndroid Build Coastguard Worker '\n' 7565*cda5da8dSAndroid Build Coastguard Worker '* other future statements.\n' 7566*cda5da8dSAndroid Build Coastguard Worker '\n' 7567*cda5da8dSAndroid Build Coastguard Worker 'The only feature that requires using the future statement is\n' 7568*cda5da8dSAndroid Build Coastguard Worker '"annotations" (see **PEP 563**).\n' 7569*cda5da8dSAndroid Build Coastguard Worker '\n' 7570*cda5da8dSAndroid Build Coastguard Worker 'All historical features enabled by the future statement are still\n' 7571*cda5da8dSAndroid Build Coastguard Worker 'recognized by Python 3. The list includes "absolute_import",\n' 7572*cda5da8dSAndroid Build Coastguard Worker '"division", "generators", "generator_stop", "unicode_literals",\n' 7573*cda5da8dSAndroid Build Coastguard Worker '"print_function", "nested_scopes" and "with_statement". They are ' 7574*cda5da8dSAndroid Build Coastguard Worker 'all\n' 7575*cda5da8dSAndroid Build Coastguard Worker 'redundant because they are always enabled, and only kept for ' 7576*cda5da8dSAndroid Build Coastguard Worker 'backwards\n' 7577*cda5da8dSAndroid Build Coastguard Worker 'compatibility.\n' 7578*cda5da8dSAndroid Build Coastguard Worker '\n' 7579*cda5da8dSAndroid Build Coastguard Worker 'A future statement is recognized and treated specially at compile\n' 7580*cda5da8dSAndroid Build Coastguard Worker 'time: Changes to the semantics of core constructs are often\n' 7581*cda5da8dSAndroid Build Coastguard Worker 'implemented by generating different code. It may even be the ' 7582*cda5da8dSAndroid Build Coastguard Worker 'case\n' 7583*cda5da8dSAndroid Build Coastguard Worker 'that a new feature introduces new incompatible syntax (such as a ' 7584*cda5da8dSAndroid Build Coastguard Worker 'new\n' 7585*cda5da8dSAndroid Build Coastguard Worker 'reserved word), in which case the compiler may need to parse the\n' 7586*cda5da8dSAndroid Build Coastguard Worker 'module differently. Such decisions cannot be pushed off until\n' 7587*cda5da8dSAndroid Build Coastguard Worker 'runtime.\n' 7588*cda5da8dSAndroid Build Coastguard Worker '\n' 7589*cda5da8dSAndroid Build Coastguard Worker 'For any given release, the compiler knows which feature names ' 7590*cda5da8dSAndroid Build Coastguard Worker 'have\n' 7591*cda5da8dSAndroid Build Coastguard Worker 'been defined, and raises a compile-time error if a future ' 7592*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 7593*cda5da8dSAndroid Build Coastguard Worker 'contains a feature not known to it.\n' 7594*cda5da8dSAndroid Build Coastguard Worker '\n' 7595*cda5da8dSAndroid Build Coastguard Worker 'The direct runtime semantics are the same as for any import ' 7596*cda5da8dSAndroid Build Coastguard Worker 'statement:\n' 7597*cda5da8dSAndroid Build Coastguard Worker 'there is a standard module "__future__", described later, and it ' 7598*cda5da8dSAndroid Build Coastguard Worker 'will\n' 7599*cda5da8dSAndroid Build Coastguard Worker 'be imported in the usual way at the time the future statement is\n' 7600*cda5da8dSAndroid Build Coastguard Worker 'executed.\n' 7601*cda5da8dSAndroid Build Coastguard Worker '\n' 7602*cda5da8dSAndroid Build Coastguard Worker 'The interesting runtime semantics depend on the specific feature\n' 7603*cda5da8dSAndroid Build Coastguard Worker 'enabled by the future statement.\n' 7604*cda5da8dSAndroid Build Coastguard Worker '\n' 7605*cda5da8dSAndroid Build Coastguard Worker 'Note that there is nothing special about the statement:\n' 7606*cda5da8dSAndroid Build Coastguard Worker '\n' 7607*cda5da8dSAndroid Build Coastguard Worker ' import __future__ [as name]\n' 7608*cda5da8dSAndroid Build Coastguard Worker '\n' 7609*cda5da8dSAndroid Build Coastguard Worker 'That is not a future statement; it’s an ordinary import statement ' 7610*cda5da8dSAndroid Build Coastguard Worker 'with\n' 7611*cda5da8dSAndroid Build Coastguard Worker 'no special semantics or syntax restrictions.\n' 7612*cda5da8dSAndroid Build Coastguard Worker '\n' 7613*cda5da8dSAndroid Build Coastguard Worker 'Code compiled by calls to the built-in functions "exec()" and\n' 7614*cda5da8dSAndroid Build Coastguard Worker '"compile()" that occur in a module "M" containing a future ' 7615*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 7616*cda5da8dSAndroid Build Coastguard Worker 'will, by default, use the new syntax or semantics associated with ' 7617*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7618*cda5da8dSAndroid Build Coastguard Worker 'future statement. This can be controlled by optional arguments ' 7619*cda5da8dSAndroid Build Coastguard Worker 'to\n' 7620*cda5da8dSAndroid Build Coastguard Worker '"compile()" — see the documentation of that function for details.\n' 7621*cda5da8dSAndroid Build Coastguard Worker '\n' 7622*cda5da8dSAndroid Build Coastguard Worker 'A future statement typed at an interactive interpreter prompt ' 7623*cda5da8dSAndroid Build Coastguard Worker 'will\n' 7624*cda5da8dSAndroid Build Coastguard Worker 'take effect for the rest of the interpreter session. If an\n' 7625*cda5da8dSAndroid Build Coastguard Worker 'interpreter is started with the "-i" option, is passed a script ' 7626*cda5da8dSAndroid Build Coastguard Worker 'name\n' 7627*cda5da8dSAndroid Build Coastguard Worker 'to execute, and the script includes a future statement, it will be ' 7628*cda5da8dSAndroid Build Coastguard Worker 'in\n' 7629*cda5da8dSAndroid Build Coastguard Worker 'effect in the interactive session started after the script is\n' 7630*cda5da8dSAndroid Build Coastguard Worker 'executed.\n' 7631*cda5da8dSAndroid Build Coastguard Worker '\n' 7632*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 7633*cda5da8dSAndroid Build Coastguard Worker '\n' 7634*cda5da8dSAndroid Build Coastguard Worker ' **PEP 236** - Back to the __future__\n' 7635*cda5da8dSAndroid Build Coastguard Worker ' The original proposal for the __future__ mechanism.\n', 7636*cda5da8dSAndroid Build Coastguard Worker 'in': 'Membership test operations\n' 7637*cda5da8dSAndroid Build Coastguard Worker '**************************\n' 7638*cda5da8dSAndroid Build Coastguard Worker '\n' 7639*cda5da8dSAndroid Build Coastguard Worker 'The operators "in" and "not in" test for membership. "x in s"\n' 7640*cda5da8dSAndroid Build Coastguard Worker 'evaluates to "True" if *x* is a member of *s*, and "False" otherwise.\n' 7641*cda5da8dSAndroid Build Coastguard Worker '"x not in s" returns the negation of "x in s". All built-in ' 7642*cda5da8dSAndroid Build Coastguard Worker 'sequences\n' 7643*cda5da8dSAndroid Build Coastguard Worker 'and set types support this as well as dictionary, for which "in" ' 7644*cda5da8dSAndroid Build Coastguard Worker 'tests\n' 7645*cda5da8dSAndroid Build Coastguard Worker 'whether the dictionary has a given key. For container types such as\n' 7646*cda5da8dSAndroid Build Coastguard Worker 'list, tuple, set, frozenset, dict, or collections.deque, the\n' 7647*cda5da8dSAndroid Build Coastguard Worker 'expression "x in y" is equivalent to "any(x is e or x == e for e in\n' 7648*cda5da8dSAndroid Build Coastguard Worker 'y)".\n' 7649*cda5da8dSAndroid Build Coastguard Worker '\n' 7650*cda5da8dSAndroid Build Coastguard Worker 'For the string and bytes types, "x in y" is "True" if and only if *x*\n' 7651*cda5da8dSAndroid Build Coastguard Worker 'is a substring of *y*. An equivalent test is "y.find(x) != -1".\n' 7652*cda5da8dSAndroid Build Coastguard Worker 'Empty strings are always considered to be a substring of any other\n' 7653*cda5da8dSAndroid Build Coastguard Worker 'string, so """ in "abc"" will return "True".\n' 7654*cda5da8dSAndroid Build Coastguard Worker '\n' 7655*cda5da8dSAndroid Build Coastguard Worker 'For user-defined classes which define the "__contains__()" method, "x\n' 7656*cda5da8dSAndroid Build Coastguard Worker 'in y" returns "True" if "y.__contains__(x)" returns a true value, and\n' 7657*cda5da8dSAndroid Build Coastguard Worker '"False" otherwise.\n' 7658*cda5da8dSAndroid Build Coastguard Worker '\n' 7659*cda5da8dSAndroid Build Coastguard Worker 'For user-defined classes which do not define "__contains__()" but do\n' 7660*cda5da8dSAndroid Build Coastguard Worker 'define "__iter__()", "x in y" is "True" if some value "z", for which\n' 7661*cda5da8dSAndroid Build Coastguard Worker 'the expression "x is z or x == z" is true, is produced while ' 7662*cda5da8dSAndroid Build Coastguard Worker 'iterating\n' 7663*cda5da8dSAndroid Build Coastguard Worker 'over "y". If an exception is raised during the iteration, it is as if\n' 7664*cda5da8dSAndroid Build Coastguard Worker '"in" raised that exception.\n' 7665*cda5da8dSAndroid Build Coastguard Worker '\n' 7666*cda5da8dSAndroid Build Coastguard Worker 'Lastly, the old-style iteration protocol is tried: if a class defines\n' 7667*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()", "x in y" is "True" if and only if there is a non-\n' 7668*cda5da8dSAndroid Build Coastguard Worker 'negative integer index *i* such that "x is y[i] or x == y[i]", and no\n' 7669*cda5da8dSAndroid Build Coastguard Worker 'lower integer index raises the "IndexError" exception. (If any other\n' 7670*cda5da8dSAndroid Build Coastguard Worker 'exception is raised, it is as if "in" raised that exception).\n' 7671*cda5da8dSAndroid Build Coastguard Worker '\n' 7672*cda5da8dSAndroid Build Coastguard Worker 'The operator "not in" is defined to have the inverse truth value of\n' 7673*cda5da8dSAndroid Build Coastguard Worker '"in".\n', 7674*cda5da8dSAndroid Build Coastguard Worker 'integers': 'Integer literals\n' 7675*cda5da8dSAndroid Build Coastguard Worker '****************\n' 7676*cda5da8dSAndroid Build Coastguard Worker '\n' 7677*cda5da8dSAndroid Build Coastguard Worker 'Integer literals are described by the following lexical ' 7678*cda5da8dSAndroid Build Coastguard Worker 'definitions:\n' 7679*cda5da8dSAndroid Build Coastguard Worker '\n' 7680*cda5da8dSAndroid Build Coastguard Worker ' integer ::= decinteger | bininteger | octinteger | ' 7681*cda5da8dSAndroid Build Coastguard Worker 'hexinteger\n' 7682*cda5da8dSAndroid Build Coastguard Worker ' decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] ' 7683*cda5da8dSAndroid Build Coastguard Worker '"0")*\n' 7684*cda5da8dSAndroid Build Coastguard Worker ' bininteger ::= "0" ("b" | "B") (["_"] bindigit)+\n' 7685*cda5da8dSAndroid Build Coastguard Worker ' octinteger ::= "0" ("o" | "O") (["_"] octdigit)+\n' 7686*cda5da8dSAndroid Build Coastguard Worker ' hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+\n' 7687*cda5da8dSAndroid Build Coastguard Worker ' nonzerodigit ::= "1"..."9"\n' 7688*cda5da8dSAndroid Build Coastguard Worker ' digit ::= "0"..."9"\n' 7689*cda5da8dSAndroid Build Coastguard Worker ' bindigit ::= "0" | "1"\n' 7690*cda5da8dSAndroid Build Coastguard Worker ' octdigit ::= "0"..."7"\n' 7691*cda5da8dSAndroid Build Coastguard Worker ' hexdigit ::= digit | "a"..."f" | "A"..."F"\n' 7692*cda5da8dSAndroid Build Coastguard Worker '\n' 7693*cda5da8dSAndroid Build Coastguard Worker 'There is no limit for the length of integer literals apart from ' 7694*cda5da8dSAndroid Build Coastguard Worker 'what\n' 7695*cda5da8dSAndroid Build Coastguard Worker 'can be stored in available memory.\n' 7696*cda5da8dSAndroid Build Coastguard Worker '\n' 7697*cda5da8dSAndroid Build Coastguard Worker 'Underscores are ignored for determining the numeric value of ' 7698*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7699*cda5da8dSAndroid Build Coastguard Worker 'literal. They can be used to group digits for enhanced ' 7700*cda5da8dSAndroid Build Coastguard Worker 'readability.\n' 7701*cda5da8dSAndroid Build Coastguard Worker 'One underscore can occur between digits, and after base ' 7702*cda5da8dSAndroid Build Coastguard Worker 'specifiers\n' 7703*cda5da8dSAndroid Build Coastguard Worker 'like "0x".\n' 7704*cda5da8dSAndroid Build Coastguard Worker '\n' 7705*cda5da8dSAndroid Build Coastguard Worker 'Note that leading zeros in a non-zero decimal number are not ' 7706*cda5da8dSAndroid Build Coastguard Worker 'allowed.\n' 7707*cda5da8dSAndroid Build Coastguard Worker 'This is for disambiguation with C-style octal literals, which ' 7708*cda5da8dSAndroid Build Coastguard Worker 'Python\n' 7709*cda5da8dSAndroid Build Coastguard Worker 'used before version 3.0.\n' 7710*cda5da8dSAndroid Build Coastguard Worker '\n' 7711*cda5da8dSAndroid Build Coastguard Worker 'Some examples of integer literals:\n' 7712*cda5da8dSAndroid Build Coastguard Worker '\n' 7713*cda5da8dSAndroid Build Coastguard Worker ' 7 2147483647 0o177 0b100110111\n' 7714*cda5da8dSAndroid Build Coastguard Worker ' 3 79228162514264337593543950336 0o377 0xdeadbeef\n' 7715*cda5da8dSAndroid Build Coastguard Worker ' 100_000_000_000 0b_1110_0101\n' 7716*cda5da8dSAndroid Build Coastguard Worker '\n' 7717*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.6: Underscores are now allowed for ' 7718*cda5da8dSAndroid Build Coastguard Worker 'grouping\n' 7719*cda5da8dSAndroid Build Coastguard Worker 'purposes in literals.\n', 7720*cda5da8dSAndroid Build Coastguard Worker 'lambda': 'Lambdas\n' 7721*cda5da8dSAndroid Build Coastguard Worker '*******\n' 7722*cda5da8dSAndroid Build Coastguard Worker '\n' 7723*cda5da8dSAndroid Build Coastguard Worker ' lambda_expr ::= "lambda" [parameter_list] ":" expression\n' 7724*cda5da8dSAndroid Build Coastguard Worker '\n' 7725*cda5da8dSAndroid Build Coastguard Worker 'Lambda expressions (sometimes called lambda forms) are used to ' 7726*cda5da8dSAndroid Build Coastguard Worker 'create\n' 7727*cda5da8dSAndroid Build Coastguard Worker 'anonymous functions. The expression "lambda parameters: ' 7728*cda5da8dSAndroid Build Coastguard Worker 'expression"\n' 7729*cda5da8dSAndroid Build Coastguard Worker 'yields a function object. The unnamed object behaves like a ' 7730*cda5da8dSAndroid Build Coastguard Worker 'function\n' 7731*cda5da8dSAndroid Build Coastguard Worker 'object defined with:\n' 7732*cda5da8dSAndroid Build Coastguard Worker '\n' 7733*cda5da8dSAndroid Build Coastguard Worker ' def <lambda>(parameters):\n' 7734*cda5da8dSAndroid Build Coastguard Worker ' return expression\n' 7735*cda5da8dSAndroid Build Coastguard Worker '\n' 7736*cda5da8dSAndroid Build Coastguard Worker 'See section Function definitions for the syntax of parameter ' 7737*cda5da8dSAndroid Build Coastguard Worker 'lists.\n' 7738*cda5da8dSAndroid Build Coastguard Worker 'Note that functions created with lambda expressions cannot ' 7739*cda5da8dSAndroid Build Coastguard Worker 'contain\n' 7740*cda5da8dSAndroid Build Coastguard Worker 'statements or annotations.\n', 7741*cda5da8dSAndroid Build Coastguard Worker 'lists': 'List displays\n' 7742*cda5da8dSAndroid Build Coastguard Worker '*************\n' 7743*cda5da8dSAndroid Build Coastguard Worker '\n' 7744*cda5da8dSAndroid Build Coastguard Worker 'A list display is a possibly empty series of expressions enclosed ' 7745*cda5da8dSAndroid Build Coastguard Worker 'in\n' 7746*cda5da8dSAndroid Build Coastguard Worker 'square brackets:\n' 7747*cda5da8dSAndroid Build Coastguard Worker '\n' 7748*cda5da8dSAndroid Build Coastguard Worker ' list_display ::= "[" [starred_list | comprehension] "]"\n' 7749*cda5da8dSAndroid Build Coastguard Worker '\n' 7750*cda5da8dSAndroid Build Coastguard Worker 'A list display yields a new list object, the contents being ' 7751*cda5da8dSAndroid Build Coastguard Worker 'specified\n' 7752*cda5da8dSAndroid Build Coastguard Worker 'by either a list of expressions or a comprehension. When a comma-\n' 7753*cda5da8dSAndroid Build Coastguard Worker 'separated list of expressions is supplied, its elements are ' 7754*cda5da8dSAndroid Build Coastguard Worker 'evaluated\n' 7755*cda5da8dSAndroid Build Coastguard Worker 'from left to right and placed into the list object in that order.\n' 7756*cda5da8dSAndroid Build Coastguard Worker 'When a comprehension is supplied, the list is constructed from the\n' 7757*cda5da8dSAndroid Build Coastguard Worker 'elements resulting from the comprehension.\n', 7758*cda5da8dSAndroid Build Coastguard Worker 'naming': 'Naming and binding\n' 7759*cda5da8dSAndroid Build Coastguard Worker '******************\n' 7760*cda5da8dSAndroid Build Coastguard Worker '\n' 7761*cda5da8dSAndroid Build Coastguard Worker '\n' 7762*cda5da8dSAndroid Build Coastguard Worker 'Binding of names\n' 7763*cda5da8dSAndroid Build Coastguard Worker '================\n' 7764*cda5da8dSAndroid Build Coastguard Worker '\n' 7765*cda5da8dSAndroid Build Coastguard Worker '*Names* refer to objects. Names are introduced by name binding\n' 7766*cda5da8dSAndroid Build Coastguard Worker 'operations.\n' 7767*cda5da8dSAndroid Build Coastguard Worker '\n' 7768*cda5da8dSAndroid Build Coastguard Worker 'The following constructs bind names:\n' 7769*cda5da8dSAndroid Build Coastguard Worker '\n' 7770*cda5da8dSAndroid Build Coastguard Worker '* formal parameters to functions,\n' 7771*cda5da8dSAndroid Build Coastguard Worker '\n' 7772*cda5da8dSAndroid Build Coastguard Worker '* class definitions,\n' 7773*cda5da8dSAndroid Build Coastguard Worker '\n' 7774*cda5da8dSAndroid Build Coastguard Worker '* function definitions,\n' 7775*cda5da8dSAndroid Build Coastguard Worker '\n' 7776*cda5da8dSAndroid Build Coastguard Worker '* assignment expressions,\n' 7777*cda5da8dSAndroid Build Coastguard Worker '\n' 7778*cda5da8dSAndroid Build Coastguard Worker '* targets that are identifiers if occurring in an assignment:\n' 7779*cda5da8dSAndroid Build Coastguard Worker '\n' 7780*cda5da8dSAndroid Build Coastguard Worker ' * "for" loop header,\n' 7781*cda5da8dSAndroid Build Coastguard Worker '\n' 7782*cda5da8dSAndroid Build Coastguard Worker ' * after "as" in a "with" statement, "except" clause, "except*"\n' 7783*cda5da8dSAndroid Build Coastguard Worker ' clause, or in the as-pattern in structural pattern matching,\n' 7784*cda5da8dSAndroid Build Coastguard Worker '\n' 7785*cda5da8dSAndroid Build Coastguard Worker ' * in a capture pattern in structural pattern matching\n' 7786*cda5da8dSAndroid Build Coastguard Worker '\n' 7787*cda5da8dSAndroid Build Coastguard Worker '* "import" statements.\n' 7788*cda5da8dSAndroid Build Coastguard Worker '\n' 7789*cda5da8dSAndroid Build Coastguard Worker 'The "import" statement of the form "from ... import *" binds all ' 7790*cda5da8dSAndroid Build Coastguard Worker 'names\n' 7791*cda5da8dSAndroid Build Coastguard Worker 'defined in the imported module, except those beginning with an\n' 7792*cda5da8dSAndroid Build Coastguard Worker 'underscore. This form may only be used at the module level.\n' 7793*cda5da8dSAndroid Build Coastguard Worker '\n' 7794*cda5da8dSAndroid Build Coastguard Worker 'A target occurring in a "del" statement is also considered bound ' 7795*cda5da8dSAndroid Build Coastguard Worker 'for\n' 7796*cda5da8dSAndroid Build Coastguard Worker 'this purpose (though the actual semantics are to unbind the ' 7797*cda5da8dSAndroid Build Coastguard Worker 'name).\n' 7798*cda5da8dSAndroid Build Coastguard Worker '\n' 7799*cda5da8dSAndroid Build Coastguard Worker 'Each assignment or import statement occurs within a block defined ' 7800*cda5da8dSAndroid Build Coastguard Worker 'by a\n' 7801*cda5da8dSAndroid Build Coastguard Worker 'class or function definition or at the module level (the ' 7802*cda5da8dSAndroid Build Coastguard Worker 'top-level\n' 7803*cda5da8dSAndroid Build Coastguard Worker 'code block).\n' 7804*cda5da8dSAndroid Build Coastguard Worker '\n' 7805*cda5da8dSAndroid Build Coastguard Worker 'If a name is bound in a block, it is a local variable of that ' 7806*cda5da8dSAndroid Build Coastguard Worker 'block,\n' 7807*cda5da8dSAndroid Build Coastguard Worker 'unless declared as "nonlocal" or "global". If a name is bound at ' 7808*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7809*cda5da8dSAndroid Build Coastguard Worker 'module level, it is a global variable. (The variables of the ' 7810*cda5da8dSAndroid Build Coastguard Worker 'module\n' 7811*cda5da8dSAndroid Build Coastguard Worker 'code block are local and global.) If a variable is used in a ' 7812*cda5da8dSAndroid Build Coastguard Worker 'code\n' 7813*cda5da8dSAndroid Build Coastguard Worker 'block but not defined there, it is a *free variable*.\n' 7814*cda5da8dSAndroid Build Coastguard Worker '\n' 7815*cda5da8dSAndroid Build Coastguard Worker 'Each occurrence of a name in the program text refers to the ' 7816*cda5da8dSAndroid Build Coastguard Worker '*binding*\n' 7817*cda5da8dSAndroid Build Coastguard Worker 'of that name established by the following name resolution rules.\n' 7818*cda5da8dSAndroid Build Coastguard Worker '\n' 7819*cda5da8dSAndroid Build Coastguard Worker '\n' 7820*cda5da8dSAndroid Build Coastguard Worker 'Resolution of names\n' 7821*cda5da8dSAndroid Build Coastguard Worker '===================\n' 7822*cda5da8dSAndroid Build Coastguard Worker '\n' 7823*cda5da8dSAndroid Build Coastguard Worker 'A *scope* defines the visibility of a name within a block. If a ' 7824*cda5da8dSAndroid Build Coastguard Worker 'local\n' 7825*cda5da8dSAndroid Build Coastguard Worker 'variable is defined in a block, its scope includes that block. If ' 7826*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7827*cda5da8dSAndroid Build Coastguard Worker 'definition occurs in a function block, the scope extends to any ' 7828*cda5da8dSAndroid Build Coastguard Worker 'blocks\n' 7829*cda5da8dSAndroid Build Coastguard Worker 'contained within the defining one, unless a contained block ' 7830*cda5da8dSAndroid Build Coastguard Worker 'introduces\n' 7831*cda5da8dSAndroid Build Coastguard Worker 'a different binding for the name.\n' 7832*cda5da8dSAndroid Build Coastguard Worker '\n' 7833*cda5da8dSAndroid Build Coastguard Worker 'When a name is used in a code block, it is resolved using the ' 7834*cda5da8dSAndroid Build Coastguard Worker 'nearest\n' 7835*cda5da8dSAndroid Build Coastguard Worker 'enclosing scope. The set of all such scopes visible to a code ' 7836*cda5da8dSAndroid Build Coastguard Worker 'block\n' 7837*cda5da8dSAndroid Build Coastguard Worker 'is called the block’s *environment*.\n' 7838*cda5da8dSAndroid Build Coastguard Worker '\n' 7839*cda5da8dSAndroid Build Coastguard Worker 'When a name is not found at all, a "NameError" exception is ' 7840*cda5da8dSAndroid Build Coastguard Worker 'raised. If\n' 7841*cda5da8dSAndroid Build Coastguard Worker 'the current scope is a function scope, and the name refers to a ' 7842*cda5da8dSAndroid Build Coastguard Worker 'local\n' 7843*cda5da8dSAndroid Build Coastguard Worker 'variable that has not yet been bound to a value at the point where ' 7844*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7845*cda5da8dSAndroid Build Coastguard Worker 'name is used, an "UnboundLocalError" exception is raised.\n' 7846*cda5da8dSAndroid Build Coastguard Worker '"UnboundLocalError" is a subclass of "NameError".\n' 7847*cda5da8dSAndroid Build Coastguard Worker '\n' 7848*cda5da8dSAndroid Build Coastguard Worker 'If a name binding operation occurs anywhere within a code block, ' 7849*cda5da8dSAndroid Build Coastguard Worker 'all\n' 7850*cda5da8dSAndroid Build Coastguard Worker 'uses of the name within the block are treated as references to ' 7851*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7852*cda5da8dSAndroid Build Coastguard Worker 'current block. This can lead to errors when a name is used within ' 7853*cda5da8dSAndroid Build Coastguard Worker 'a\n' 7854*cda5da8dSAndroid Build Coastguard Worker 'block before it is bound. This rule is subtle. Python lacks\n' 7855*cda5da8dSAndroid Build Coastguard Worker 'declarations and allows name binding operations to occur anywhere\n' 7856*cda5da8dSAndroid Build Coastguard Worker 'within a code block. The local variables of a code block can be\n' 7857*cda5da8dSAndroid Build Coastguard Worker 'determined by scanning the entire text of the block for name ' 7858*cda5da8dSAndroid Build Coastguard Worker 'binding\n' 7859*cda5da8dSAndroid Build Coastguard Worker 'operations. See the FAQ entry on UnboundLocalError for examples.\n' 7860*cda5da8dSAndroid Build Coastguard Worker '\n' 7861*cda5da8dSAndroid Build Coastguard Worker 'If the "global" statement occurs within a block, all uses of the ' 7862*cda5da8dSAndroid Build Coastguard Worker 'names\n' 7863*cda5da8dSAndroid Build Coastguard Worker 'specified in the statement refer to the bindings of those names in ' 7864*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7865*cda5da8dSAndroid Build Coastguard Worker 'top-level namespace. Names are resolved in the top-level ' 7866*cda5da8dSAndroid Build Coastguard Worker 'namespace by\n' 7867*cda5da8dSAndroid Build Coastguard Worker 'searching the global namespace, i.e. the namespace of the module\n' 7868*cda5da8dSAndroid Build Coastguard Worker 'containing the code block, and the builtins namespace, the ' 7869*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 7870*cda5da8dSAndroid Build Coastguard Worker 'of the module "builtins". The global namespace is searched ' 7871*cda5da8dSAndroid Build Coastguard Worker 'first. If\n' 7872*cda5da8dSAndroid Build Coastguard Worker 'the names are not found there, the builtins namespace is ' 7873*cda5da8dSAndroid Build Coastguard Worker 'searched.\n' 7874*cda5da8dSAndroid Build Coastguard Worker 'The "global" statement must precede all uses of the listed names.\n' 7875*cda5da8dSAndroid Build Coastguard Worker '\n' 7876*cda5da8dSAndroid Build Coastguard Worker 'The "global" statement has the same scope as a name binding ' 7877*cda5da8dSAndroid Build Coastguard Worker 'operation\n' 7878*cda5da8dSAndroid Build Coastguard Worker 'in the same block. If the nearest enclosing scope for a free ' 7879*cda5da8dSAndroid Build Coastguard Worker 'variable\n' 7880*cda5da8dSAndroid Build Coastguard Worker 'contains a global statement, the free variable is treated as a ' 7881*cda5da8dSAndroid Build Coastguard Worker 'global.\n' 7882*cda5da8dSAndroid Build Coastguard Worker '\n' 7883*cda5da8dSAndroid Build Coastguard Worker 'The "nonlocal" statement causes corresponding names to refer to\n' 7884*cda5da8dSAndroid Build Coastguard Worker 'previously bound variables in the nearest enclosing function ' 7885*cda5da8dSAndroid Build Coastguard Worker 'scope.\n' 7886*cda5da8dSAndroid Build Coastguard Worker '"SyntaxError" is raised at compile time if the given name does ' 7887*cda5da8dSAndroid Build Coastguard Worker 'not\n' 7888*cda5da8dSAndroid Build Coastguard Worker 'exist in any enclosing function scope.\n' 7889*cda5da8dSAndroid Build Coastguard Worker '\n' 7890*cda5da8dSAndroid Build Coastguard Worker 'The namespace for a module is automatically created the first time ' 7891*cda5da8dSAndroid Build Coastguard Worker 'a\n' 7892*cda5da8dSAndroid Build Coastguard Worker 'module is imported. The main module for a script is always ' 7893*cda5da8dSAndroid Build Coastguard Worker 'called\n' 7894*cda5da8dSAndroid Build Coastguard Worker '"__main__".\n' 7895*cda5da8dSAndroid Build Coastguard Worker '\n' 7896*cda5da8dSAndroid Build Coastguard Worker 'Class definition blocks and arguments to "exec()" and "eval()" ' 7897*cda5da8dSAndroid Build Coastguard Worker 'are\n' 7898*cda5da8dSAndroid Build Coastguard Worker 'special in the context of name resolution. A class definition is ' 7899*cda5da8dSAndroid Build Coastguard Worker 'an\n' 7900*cda5da8dSAndroid Build Coastguard Worker 'executable statement that may use and define names. These ' 7901*cda5da8dSAndroid Build Coastguard Worker 'references\n' 7902*cda5da8dSAndroid Build Coastguard Worker 'follow the normal rules for name resolution with an exception ' 7903*cda5da8dSAndroid Build Coastguard Worker 'that\n' 7904*cda5da8dSAndroid Build Coastguard Worker 'unbound local variables are looked up in the global namespace. ' 7905*cda5da8dSAndroid Build Coastguard Worker 'The\n' 7906*cda5da8dSAndroid Build Coastguard Worker 'namespace of the class definition becomes the attribute dictionary ' 7907*cda5da8dSAndroid Build Coastguard Worker 'of\n' 7908*cda5da8dSAndroid Build Coastguard Worker 'the class. The scope of names defined in a class block is limited ' 7909*cda5da8dSAndroid Build Coastguard Worker 'to\n' 7910*cda5da8dSAndroid Build Coastguard Worker 'the class block; it does not extend to the code blocks of methods ' 7911*cda5da8dSAndroid Build Coastguard Worker '–\n' 7912*cda5da8dSAndroid Build Coastguard Worker 'this includes comprehensions and generator expressions since they ' 7913*cda5da8dSAndroid Build Coastguard Worker 'are\n' 7914*cda5da8dSAndroid Build Coastguard Worker 'implemented using a function scope. This means that the ' 7915*cda5da8dSAndroid Build Coastguard Worker 'following\n' 7916*cda5da8dSAndroid Build Coastguard Worker 'will fail:\n' 7917*cda5da8dSAndroid Build Coastguard Worker '\n' 7918*cda5da8dSAndroid Build Coastguard Worker ' class A:\n' 7919*cda5da8dSAndroid Build Coastguard Worker ' a = 42\n' 7920*cda5da8dSAndroid Build Coastguard Worker ' b = list(a + i for i in range(10))\n' 7921*cda5da8dSAndroid Build Coastguard Worker '\n' 7922*cda5da8dSAndroid Build Coastguard Worker '\n' 7923*cda5da8dSAndroid Build Coastguard Worker 'Builtins and restricted execution\n' 7924*cda5da8dSAndroid Build Coastguard Worker '=================================\n' 7925*cda5da8dSAndroid Build Coastguard Worker '\n' 7926*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** Users should not touch\n' 7927*cda5da8dSAndroid Build Coastguard Worker '"__builtins__"; it is strictly an implementation detail. Users\n' 7928*cda5da8dSAndroid Build Coastguard Worker 'wanting to override values in the builtins namespace should ' 7929*cda5da8dSAndroid Build Coastguard Worker '"import"\n' 7930*cda5da8dSAndroid Build Coastguard Worker 'the "builtins" module and modify its attributes appropriately.\n' 7931*cda5da8dSAndroid Build Coastguard Worker '\n' 7932*cda5da8dSAndroid Build Coastguard Worker 'The builtins namespace associated with the execution of a code ' 7933*cda5da8dSAndroid Build Coastguard Worker 'block\n' 7934*cda5da8dSAndroid Build Coastguard Worker 'is actually found by looking up the name "__builtins__" in its ' 7935*cda5da8dSAndroid Build Coastguard Worker 'global\n' 7936*cda5da8dSAndroid Build Coastguard Worker 'namespace; this should be a dictionary or a module (in the latter ' 7937*cda5da8dSAndroid Build Coastguard Worker 'case\n' 7938*cda5da8dSAndroid Build Coastguard Worker 'the module’s dictionary is used). By default, when in the ' 7939*cda5da8dSAndroid Build Coastguard Worker '"__main__"\n' 7940*cda5da8dSAndroid Build Coastguard Worker 'module, "__builtins__" is the built-in module "builtins"; when in ' 7941*cda5da8dSAndroid Build Coastguard Worker 'any\n' 7942*cda5da8dSAndroid Build Coastguard Worker 'other module, "__builtins__" is an alias for the dictionary of ' 7943*cda5da8dSAndroid Build Coastguard Worker 'the\n' 7944*cda5da8dSAndroid Build Coastguard Worker '"builtins" module itself.\n' 7945*cda5da8dSAndroid Build Coastguard Worker '\n' 7946*cda5da8dSAndroid Build Coastguard Worker '\n' 7947*cda5da8dSAndroid Build Coastguard Worker 'Interaction with dynamic features\n' 7948*cda5da8dSAndroid Build Coastguard Worker '=================================\n' 7949*cda5da8dSAndroid Build Coastguard Worker '\n' 7950*cda5da8dSAndroid Build Coastguard Worker 'Name resolution of free variables occurs at runtime, not at ' 7951*cda5da8dSAndroid Build Coastguard Worker 'compile\n' 7952*cda5da8dSAndroid Build Coastguard Worker 'time. This means that the following code will print 42:\n' 7953*cda5da8dSAndroid Build Coastguard Worker '\n' 7954*cda5da8dSAndroid Build Coastguard Worker ' i = 10\n' 7955*cda5da8dSAndroid Build Coastguard Worker ' def f():\n' 7956*cda5da8dSAndroid Build Coastguard Worker ' print(i)\n' 7957*cda5da8dSAndroid Build Coastguard Worker ' i = 42\n' 7958*cda5da8dSAndroid Build Coastguard Worker ' f()\n' 7959*cda5da8dSAndroid Build Coastguard Worker '\n' 7960*cda5da8dSAndroid Build Coastguard Worker 'The "eval()" and "exec()" functions do not have access to the ' 7961*cda5da8dSAndroid Build Coastguard Worker 'full\n' 7962*cda5da8dSAndroid Build Coastguard Worker 'environment for resolving names. Names may be resolved in the ' 7963*cda5da8dSAndroid Build Coastguard Worker 'local\n' 7964*cda5da8dSAndroid Build Coastguard Worker 'and global namespaces of the caller. Free variables are not ' 7965*cda5da8dSAndroid Build Coastguard Worker 'resolved\n' 7966*cda5da8dSAndroid Build Coastguard Worker 'in the nearest enclosing namespace, but in the global namespace. ' 7967*cda5da8dSAndroid Build Coastguard Worker '[1]\n' 7968*cda5da8dSAndroid Build Coastguard Worker 'The "exec()" and "eval()" functions have optional arguments to\n' 7969*cda5da8dSAndroid Build Coastguard Worker 'override the global and local namespace. If only one namespace ' 7970*cda5da8dSAndroid Build Coastguard Worker 'is\n' 7971*cda5da8dSAndroid Build Coastguard Worker 'specified, it is used for both.\n', 7972*cda5da8dSAndroid Build Coastguard Worker 'nonlocal': 'The "nonlocal" statement\n' 7973*cda5da8dSAndroid Build Coastguard Worker '************************\n' 7974*cda5da8dSAndroid Build Coastguard Worker '\n' 7975*cda5da8dSAndroid Build Coastguard Worker ' nonlocal_stmt ::= "nonlocal" identifier ("," identifier)*\n' 7976*cda5da8dSAndroid Build Coastguard Worker '\n' 7977*cda5da8dSAndroid Build Coastguard Worker 'The "nonlocal" statement causes the listed identifiers to refer ' 7978*cda5da8dSAndroid Build Coastguard Worker 'to\n' 7979*cda5da8dSAndroid Build Coastguard Worker 'previously bound variables in the nearest enclosing scope ' 7980*cda5da8dSAndroid Build Coastguard Worker 'excluding\n' 7981*cda5da8dSAndroid Build Coastguard Worker 'globals. This is important because the default behavior for ' 7982*cda5da8dSAndroid Build Coastguard Worker 'binding is\n' 7983*cda5da8dSAndroid Build Coastguard Worker 'to search the local namespace first. The statement allows\n' 7984*cda5da8dSAndroid Build Coastguard Worker 'encapsulated code to rebind variables outside of the local ' 7985*cda5da8dSAndroid Build Coastguard Worker 'scope\n' 7986*cda5da8dSAndroid Build Coastguard Worker 'besides the global (module) scope.\n' 7987*cda5da8dSAndroid Build Coastguard Worker '\n' 7988*cda5da8dSAndroid Build Coastguard Worker 'Names listed in a "nonlocal" statement, unlike those listed in ' 7989*cda5da8dSAndroid Build Coastguard Worker 'a\n' 7990*cda5da8dSAndroid Build Coastguard Worker '"global" statement, must refer to pre-existing bindings in an\n' 7991*cda5da8dSAndroid Build Coastguard Worker 'enclosing scope (the scope in which a new binding should be ' 7992*cda5da8dSAndroid Build Coastguard Worker 'created\n' 7993*cda5da8dSAndroid Build Coastguard Worker 'cannot be determined unambiguously).\n' 7994*cda5da8dSAndroid Build Coastguard Worker '\n' 7995*cda5da8dSAndroid Build Coastguard Worker 'Names listed in a "nonlocal" statement must not collide with ' 7996*cda5da8dSAndroid Build Coastguard Worker 'pre-\n' 7997*cda5da8dSAndroid Build Coastguard Worker 'existing bindings in the local scope.\n' 7998*cda5da8dSAndroid Build Coastguard Worker '\n' 7999*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 8000*cda5da8dSAndroid Build Coastguard Worker '\n' 8001*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3104** - Access to Names in Outer Scopes\n' 8002*cda5da8dSAndroid Build Coastguard Worker ' The specification for the "nonlocal" statement.\n', 8003*cda5da8dSAndroid Build Coastguard Worker 'numbers': 'Numeric literals\n' 8004*cda5da8dSAndroid Build Coastguard Worker '****************\n' 8005*cda5da8dSAndroid Build Coastguard Worker '\n' 8006*cda5da8dSAndroid Build Coastguard Worker 'There are three types of numeric literals: integers, floating ' 8007*cda5da8dSAndroid Build Coastguard Worker 'point\n' 8008*cda5da8dSAndroid Build Coastguard Worker 'numbers, and imaginary numbers. There are no complex literals\n' 8009*cda5da8dSAndroid Build Coastguard Worker '(complex numbers can be formed by adding a real number and an\n' 8010*cda5da8dSAndroid Build Coastguard Worker 'imaginary number).\n' 8011*cda5da8dSAndroid Build Coastguard Worker '\n' 8012*cda5da8dSAndroid Build Coastguard Worker 'Note that numeric literals do not include a sign; a phrase like ' 8013*cda5da8dSAndroid Build Coastguard Worker '"-1"\n' 8014*cda5da8dSAndroid Build Coastguard Worker 'is actually an expression composed of the unary operator ‘"-"’ ' 8015*cda5da8dSAndroid Build Coastguard Worker 'and the\n' 8016*cda5da8dSAndroid Build Coastguard Worker 'literal "1".\n', 8017*cda5da8dSAndroid Build Coastguard Worker 'numeric-types': 'Emulating numeric types\n' 8018*cda5da8dSAndroid Build Coastguard Worker '***********************\n' 8019*cda5da8dSAndroid Build Coastguard Worker '\n' 8020*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to emulate numeric ' 8021*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 8022*cda5da8dSAndroid Build Coastguard Worker 'Methods corresponding to operations that are not supported ' 8023*cda5da8dSAndroid Build Coastguard Worker 'by the\n' 8024*cda5da8dSAndroid Build Coastguard Worker 'particular kind of number implemented (e.g., bitwise ' 8025*cda5da8dSAndroid Build Coastguard Worker 'operations for\n' 8026*cda5da8dSAndroid Build Coastguard Worker 'non-integral numbers) should be left undefined.\n' 8027*cda5da8dSAndroid Build Coastguard Worker '\n' 8028*cda5da8dSAndroid Build Coastguard Worker 'object.__add__(self, other)\n' 8029*cda5da8dSAndroid Build Coastguard Worker 'object.__sub__(self, other)\n' 8030*cda5da8dSAndroid Build Coastguard Worker 'object.__mul__(self, other)\n' 8031*cda5da8dSAndroid Build Coastguard Worker 'object.__matmul__(self, other)\n' 8032*cda5da8dSAndroid Build Coastguard Worker 'object.__truediv__(self, other)\n' 8033*cda5da8dSAndroid Build Coastguard Worker 'object.__floordiv__(self, other)\n' 8034*cda5da8dSAndroid Build Coastguard Worker 'object.__mod__(self, other)\n' 8035*cda5da8dSAndroid Build Coastguard Worker 'object.__divmod__(self, other)\n' 8036*cda5da8dSAndroid Build Coastguard Worker 'object.__pow__(self, other[, modulo])\n' 8037*cda5da8dSAndroid Build Coastguard Worker 'object.__lshift__(self, other)\n' 8038*cda5da8dSAndroid Build Coastguard Worker 'object.__rshift__(self, other)\n' 8039*cda5da8dSAndroid Build Coastguard Worker 'object.__and__(self, other)\n' 8040*cda5da8dSAndroid Build Coastguard Worker 'object.__xor__(self, other)\n' 8041*cda5da8dSAndroid Build Coastguard Worker 'object.__or__(self, other)\n' 8042*cda5da8dSAndroid Build Coastguard Worker '\n' 8043*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the binary ' 8044*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 8045*cda5da8dSAndroid Build Coastguard Worker ' operations ("+", "-", "*", "@", "/", "//", "%", ' 8046*cda5da8dSAndroid Build Coastguard Worker '"divmod()",\n' 8047*cda5da8dSAndroid Build Coastguard Worker ' "pow()", "**", "<<", ">>", "&", "^", "|"). For ' 8048*cda5da8dSAndroid Build Coastguard Worker 'instance, to\n' 8049*cda5da8dSAndroid Build Coastguard Worker ' evaluate the expression "x + y", where *x* is an ' 8050*cda5da8dSAndroid Build Coastguard Worker 'instance of a\n' 8051*cda5da8dSAndroid Build Coastguard Worker ' class that has an "__add__()" method, ' 8052*cda5da8dSAndroid Build Coastguard Worker '"type(x).__add__(x, y)" is\n' 8053*cda5da8dSAndroid Build Coastguard Worker ' called. The "__divmod__()" method should be the ' 8054*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 8055*cda5da8dSAndroid Build Coastguard Worker ' using "__floordiv__()" and "__mod__()"; it should not be ' 8056*cda5da8dSAndroid Build Coastguard Worker 'related to\n' 8057*cda5da8dSAndroid Build Coastguard Worker ' "__truediv__()". Note that "__pow__()" should be ' 8058*cda5da8dSAndroid Build Coastguard Worker 'defined to accept\n' 8059*cda5da8dSAndroid Build Coastguard Worker ' an optional third argument if the ternary version of the ' 8060*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 8061*cda5da8dSAndroid Build Coastguard Worker ' "pow()" function is to be supported.\n' 8062*cda5da8dSAndroid Build Coastguard Worker '\n' 8063*cda5da8dSAndroid Build Coastguard Worker ' If one of those methods does not support the operation ' 8064*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 8065*cda5da8dSAndroid Build Coastguard Worker ' supplied arguments, it should return "NotImplemented".\n' 8066*cda5da8dSAndroid Build Coastguard Worker '\n' 8067*cda5da8dSAndroid Build Coastguard Worker 'object.__radd__(self, other)\n' 8068*cda5da8dSAndroid Build Coastguard Worker 'object.__rsub__(self, other)\n' 8069*cda5da8dSAndroid Build Coastguard Worker 'object.__rmul__(self, other)\n' 8070*cda5da8dSAndroid Build Coastguard Worker 'object.__rmatmul__(self, other)\n' 8071*cda5da8dSAndroid Build Coastguard Worker 'object.__rtruediv__(self, other)\n' 8072*cda5da8dSAndroid Build Coastguard Worker 'object.__rfloordiv__(self, other)\n' 8073*cda5da8dSAndroid Build Coastguard Worker 'object.__rmod__(self, other)\n' 8074*cda5da8dSAndroid Build Coastguard Worker 'object.__rdivmod__(self, other)\n' 8075*cda5da8dSAndroid Build Coastguard Worker 'object.__rpow__(self, other[, modulo])\n' 8076*cda5da8dSAndroid Build Coastguard Worker 'object.__rlshift__(self, other)\n' 8077*cda5da8dSAndroid Build Coastguard Worker 'object.__rrshift__(self, other)\n' 8078*cda5da8dSAndroid Build Coastguard Worker 'object.__rand__(self, other)\n' 8079*cda5da8dSAndroid Build Coastguard Worker 'object.__rxor__(self, other)\n' 8080*cda5da8dSAndroid Build Coastguard Worker 'object.__ror__(self, other)\n' 8081*cda5da8dSAndroid Build Coastguard Worker '\n' 8082*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the binary ' 8083*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 8084*cda5da8dSAndroid Build Coastguard Worker ' operations ("+", "-", "*", "@", "/", "//", "%", ' 8085*cda5da8dSAndroid Build Coastguard Worker '"divmod()",\n' 8086*cda5da8dSAndroid Build Coastguard Worker ' "pow()", "**", "<<", ">>", "&", "^", "|") with reflected ' 8087*cda5da8dSAndroid Build Coastguard Worker '(swapped)\n' 8088*cda5da8dSAndroid Build Coastguard Worker ' operands. These functions are only called if the left ' 8089*cda5da8dSAndroid Build Coastguard Worker 'operand does\n' 8090*cda5da8dSAndroid Build Coastguard Worker ' not support the corresponding operation [3] and the ' 8091*cda5da8dSAndroid Build Coastguard Worker 'operands are of\n' 8092*cda5da8dSAndroid Build Coastguard Worker ' different types. [4] For instance, to evaluate the ' 8093*cda5da8dSAndroid Build Coastguard Worker 'expression "x -\n' 8094*cda5da8dSAndroid Build Coastguard Worker ' y", where *y* is an instance of a class that has an ' 8095*cda5da8dSAndroid Build Coastguard Worker '"__rsub__()"\n' 8096*cda5da8dSAndroid Build Coastguard Worker ' method, "type(y).__rsub__(y, x)" is called if ' 8097*cda5da8dSAndroid Build Coastguard Worker '"type(x).__sub__(x,\n' 8098*cda5da8dSAndroid Build Coastguard Worker ' y)" returns *NotImplemented*.\n' 8099*cda5da8dSAndroid Build Coastguard Worker '\n' 8100*cda5da8dSAndroid Build Coastguard Worker ' Note that ternary "pow()" will not try calling ' 8101*cda5da8dSAndroid Build Coastguard Worker '"__rpow__()" (the\n' 8102*cda5da8dSAndroid Build Coastguard Worker ' coercion rules would become too complicated).\n' 8103*cda5da8dSAndroid Build Coastguard Worker '\n' 8104*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 8105*cda5da8dSAndroid Build Coastguard Worker '\n' 8106*cda5da8dSAndroid Build Coastguard Worker ' If the right operand’s type is a subclass of the left ' 8107*cda5da8dSAndroid Build Coastguard Worker 'operand’s\n' 8108*cda5da8dSAndroid Build Coastguard Worker ' type and that subclass provides a different ' 8109*cda5da8dSAndroid Build Coastguard Worker 'implementation of the\n' 8110*cda5da8dSAndroid Build Coastguard Worker ' reflected method for the operation, this method will ' 8111*cda5da8dSAndroid Build Coastguard Worker 'be called\n' 8112*cda5da8dSAndroid Build Coastguard Worker ' before the left operand’s non-reflected method. This ' 8113*cda5da8dSAndroid Build Coastguard Worker 'behavior\n' 8114*cda5da8dSAndroid Build Coastguard Worker ' allows subclasses to override their ancestors’ ' 8115*cda5da8dSAndroid Build Coastguard Worker 'operations.\n' 8116*cda5da8dSAndroid Build Coastguard Worker '\n' 8117*cda5da8dSAndroid Build Coastguard Worker 'object.__iadd__(self, other)\n' 8118*cda5da8dSAndroid Build Coastguard Worker 'object.__isub__(self, other)\n' 8119*cda5da8dSAndroid Build Coastguard Worker 'object.__imul__(self, other)\n' 8120*cda5da8dSAndroid Build Coastguard Worker 'object.__imatmul__(self, other)\n' 8121*cda5da8dSAndroid Build Coastguard Worker 'object.__itruediv__(self, other)\n' 8122*cda5da8dSAndroid Build Coastguard Worker 'object.__ifloordiv__(self, other)\n' 8123*cda5da8dSAndroid Build Coastguard Worker 'object.__imod__(self, other)\n' 8124*cda5da8dSAndroid Build Coastguard Worker 'object.__ipow__(self, other[, modulo])\n' 8125*cda5da8dSAndroid Build Coastguard Worker 'object.__ilshift__(self, other)\n' 8126*cda5da8dSAndroid Build Coastguard Worker 'object.__irshift__(self, other)\n' 8127*cda5da8dSAndroid Build Coastguard Worker 'object.__iand__(self, other)\n' 8128*cda5da8dSAndroid Build Coastguard Worker 'object.__ixor__(self, other)\n' 8129*cda5da8dSAndroid Build Coastguard Worker 'object.__ior__(self, other)\n' 8130*cda5da8dSAndroid Build Coastguard Worker '\n' 8131*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the augmented ' 8132*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 8133*cda5da8dSAndroid Build Coastguard Worker ' assignments ("+=", "-=", "*=", "@=", "/=", "//=", "%=", ' 8134*cda5da8dSAndroid Build Coastguard Worker '"**=",\n' 8135*cda5da8dSAndroid Build Coastguard Worker ' "<<=", ">>=", "&=", "^=", "|="). These methods should ' 8136*cda5da8dSAndroid Build Coastguard Worker 'attempt to\n' 8137*cda5da8dSAndroid Build Coastguard Worker ' do the operation in-place (modifying *self*) and return ' 8138*cda5da8dSAndroid Build Coastguard Worker 'the result\n' 8139*cda5da8dSAndroid Build Coastguard Worker ' (which could be, but does not have to be, *self*). If a ' 8140*cda5da8dSAndroid Build Coastguard Worker 'specific\n' 8141*cda5da8dSAndroid Build Coastguard Worker ' method is not defined, the augmented assignment falls ' 8142*cda5da8dSAndroid Build Coastguard Worker 'back to the\n' 8143*cda5da8dSAndroid Build Coastguard Worker ' normal methods. For instance, if *x* is an instance of ' 8144*cda5da8dSAndroid Build Coastguard Worker 'a class\n' 8145*cda5da8dSAndroid Build Coastguard Worker ' with an "__iadd__()" method, "x += y" is equivalent to ' 8146*cda5da8dSAndroid Build Coastguard Worker '"x =\n' 8147*cda5da8dSAndroid Build Coastguard Worker ' x.__iadd__(y)" . Otherwise, "x.__add__(y)" and ' 8148*cda5da8dSAndroid Build Coastguard Worker '"y.__radd__(x)" are\n' 8149*cda5da8dSAndroid Build Coastguard Worker ' considered, as with the evaluation of "x + y". In ' 8150*cda5da8dSAndroid Build Coastguard Worker 'certain\n' 8151*cda5da8dSAndroid Build Coastguard Worker ' situations, augmented assignment can result in ' 8152*cda5da8dSAndroid Build Coastguard Worker 'unexpected errors\n' 8153*cda5da8dSAndroid Build Coastguard Worker ' (see Why does a_tuple[i] += [‘item’] raise an exception ' 8154*cda5da8dSAndroid Build Coastguard Worker 'when the\n' 8155*cda5da8dSAndroid Build Coastguard Worker ' addition works?), but this behavior is in fact part of ' 8156*cda5da8dSAndroid Build Coastguard Worker 'the data\n' 8157*cda5da8dSAndroid Build Coastguard Worker ' model.\n' 8158*cda5da8dSAndroid Build Coastguard Worker '\n' 8159*cda5da8dSAndroid Build Coastguard Worker 'object.__neg__(self)\n' 8160*cda5da8dSAndroid Build Coastguard Worker 'object.__pos__(self)\n' 8161*cda5da8dSAndroid Build Coastguard Worker 'object.__abs__(self)\n' 8162*cda5da8dSAndroid Build Coastguard Worker 'object.__invert__(self)\n' 8163*cda5da8dSAndroid Build Coastguard Worker '\n' 8164*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the unary arithmetic operations ' 8165*cda5da8dSAndroid Build Coastguard Worker '("-", "+",\n' 8166*cda5da8dSAndroid Build Coastguard Worker ' "abs()" and "~").\n' 8167*cda5da8dSAndroid Build Coastguard Worker '\n' 8168*cda5da8dSAndroid Build Coastguard Worker 'object.__complex__(self)\n' 8169*cda5da8dSAndroid Build Coastguard Worker 'object.__int__(self)\n' 8170*cda5da8dSAndroid Build Coastguard Worker 'object.__float__(self)\n' 8171*cda5da8dSAndroid Build Coastguard Worker '\n' 8172*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in functions "complex()", ' 8173*cda5da8dSAndroid Build Coastguard Worker '"int()" and\n' 8174*cda5da8dSAndroid Build Coastguard Worker ' "float()". Should return a value of the appropriate ' 8175*cda5da8dSAndroid Build Coastguard Worker 'type.\n' 8176*cda5da8dSAndroid Build Coastguard Worker '\n' 8177*cda5da8dSAndroid Build Coastguard Worker 'object.__index__(self)\n' 8178*cda5da8dSAndroid Build Coastguard Worker '\n' 8179*cda5da8dSAndroid Build Coastguard Worker ' Called to implement "operator.index()", and whenever ' 8180*cda5da8dSAndroid Build Coastguard Worker 'Python needs\n' 8181*cda5da8dSAndroid Build Coastguard Worker ' to losslessly convert the numeric object to an integer ' 8182*cda5da8dSAndroid Build Coastguard Worker 'object (such\n' 8183*cda5da8dSAndroid Build Coastguard Worker ' as in slicing, or in the built-in "bin()", "hex()" and ' 8184*cda5da8dSAndroid Build Coastguard Worker '"oct()"\n' 8185*cda5da8dSAndroid Build Coastguard Worker ' functions). Presence of this method indicates that the ' 8186*cda5da8dSAndroid Build Coastguard Worker 'numeric\n' 8187*cda5da8dSAndroid Build Coastguard Worker ' object is an integer type. Must return an integer.\n' 8188*cda5da8dSAndroid Build Coastguard Worker '\n' 8189*cda5da8dSAndroid Build Coastguard Worker ' If "__int__()", "__float__()" and "__complex__()" are ' 8190*cda5da8dSAndroid Build Coastguard Worker 'not defined\n' 8191*cda5da8dSAndroid Build Coastguard Worker ' then corresponding built-in functions "int()", "float()" ' 8192*cda5da8dSAndroid Build Coastguard Worker 'and\n' 8193*cda5da8dSAndroid Build Coastguard Worker ' "complex()" fall back to "__index__()".\n' 8194*cda5da8dSAndroid Build Coastguard Worker '\n' 8195*cda5da8dSAndroid Build Coastguard Worker 'object.__round__(self[, ndigits])\n' 8196*cda5da8dSAndroid Build Coastguard Worker 'object.__trunc__(self)\n' 8197*cda5da8dSAndroid Build Coastguard Worker 'object.__floor__(self)\n' 8198*cda5da8dSAndroid Build Coastguard Worker 'object.__ceil__(self)\n' 8199*cda5da8dSAndroid Build Coastguard Worker '\n' 8200*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in function "round()" and ' 8201*cda5da8dSAndroid Build Coastguard Worker '"math"\n' 8202*cda5da8dSAndroid Build Coastguard Worker ' functions "trunc()", "floor()" and "ceil()". Unless ' 8203*cda5da8dSAndroid Build Coastguard Worker '*ndigits* is\n' 8204*cda5da8dSAndroid Build Coastguard Worker ' passed to "__round__()" all these methods should return ' 8205*cda5da8dSAndroid Build Coastguard Worker 'the value\n' 8206*cda5da8dSAndroid Build Coastguard Worker ' of the object truncated to an "Integral" (typically an ' 8207*cda5da8dSAndroid Build Coastguard Worker '"int").\n' 8208*cda5da8dSAndroid Build Coastguard Worker '\n' 8209*cda5da8dSAndroid Build Coastguard Worker ' The built-in function "int()" falls back to ' 8210*cda5da8dSAndroid Build Coastguard Worker '"__trunc__()" if\n' 8211*cda5da8dSAndroid Build Coastguard Worker ' neither "__int__()" nor "__index__()" is defined.\n' 8212*cda5da8dSAndroid Build Coastguard Worker '\n' 8213*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.11: The delegation of "int()" to ' 8214*cda5da8dSAndroid Build Coastguard Worker '"__trunc__()"\n' 8215*cda5da8dSAndroid Build Coastguard Worker ' is deprecated.\n', 8216*cda5da8dSAndroid Build Coastguard Worker 'objects': 'Objects, values and types\n' 8217*cda5da8dSAndroid Build Coastguard Worker '*************************\n' 8218*cda5da8dSAndroid Build Coastguard Worker '\n' 8219*cda5da8dSAndroid Build Coastguard Worker '*Objects* are Python’s abstraction for data. All data in a ' 8220*cda5da8dSAndroid Build Coastguard Worker 'Python\n' 8221*cda5da8dSAndroid Build Coastguard Worker 'program is represented by objects or by relations between ' 8222*cda5da8dSAndroid Build Coastguard Worker 'objects. (In\n' 8223*cda5da8dSAndroid Build Coastguard Worker 'a sense, and in conformance to Von Neumann’s model of a “stored\n' 8224*cda5da8dSAndroid Build Coastguard Worker 'program computer”, code is also represented by objects.)\n' 8225*cda5da8dSAndroid Build Coastguard Worker '\n' 8226*cda5da8dSAndroid Build Coastguard Worker 'Every object has an identity, a type and a value. An object’s\n' 8227*cda5da8dSAndroid Build Coastguard Worker '*identity* never changes once it has been created; you may think ' 8228*cda5da8dSAndroid Build Coastguard Worker 'of it\n' 8229*cda5da8dSAndroid Build Coastguard Worker 'as the object’s address in memory. The ‘"is"’ operator compares ' 8230*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8231*cda5da8dSAndroid Build Coastguard Worker 'identity of two objects; the "id()" function returns an integer\n' 8232*cda5da8dSAndroid Build Coastguard Worker 'representing its identity.\n' 8233*cda5da8dSAndroid Build Coastguard Worker '\n' 8234*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** For CPython, "id(x)" is the ' 8235*cda5da8dSAndroid Build Coastguard Worker 'memory\n' 8236*cda5da8dSAndroid Build Coastguard Worker 'address where "x" is stored.\n' 8237*cda5da8dSAndroid Build Coastguard Worker '\n' 8238*cda5da8dSAndroid Build Coastguard Worker 'An object’s type determines the operations that the object ' 8239*cda5da8dSAndroid Build Coastguard Worker 'supports\n' 8240*cda5da8dSAndroid Build Coastguard Worker '(e.g., “does it have a length?”) and also defines the possible ' 8241*cda5da8dSAndroid Build Coastguard Worker 'values\n' 8242*cda5da8dSAndroid Build Coastguard Worker 'for objects of that type. The "type()" function returns an ' 8243*cda5da8dSAndroid Build Coastguard Worker 'object’s\n' 8244*cda5da8dSAndroid Build Coastguard Worker 'type (which is an object itself). Like its identity, an ' 8245*cda5da8dSAndroid Build Coastguard Worker 'object’s\n' 8246*cda5da8dSAndroid Build Coastguard Worker '*type* is also unchangeable. [1]\n' 8247*cda5da8dSAndroid Build Coastguard Worker '\n' 8248*cda5da8dSAndroid Build Coastguard Worker 'The *value* of some objects can change. Objects whose value can\n' 8249*cda5da8dSAndroid Build Coastguard Worker 'change are said to be *mutable*; objects whose value is ' 8250*cda5da8dSAndroid Build Coastguard Worker 'unchangeable\n' 8251*cda5da8dSAndroid Build Coastguard Worker 'once they are created are called *immutable*. (The value of an\n' 8252*cda5da8dSAndroid Build Coastguard Worker 'immutable container object that contains a reference to a ' 8253*cda5da8dSAndroid Build Coastguard Worker 'mutable\n' 8254*cda5da8dSAndroid Build Coastguard Worker 'object can change when the latter’s value is changed; however ' 8255*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8256*cda5da8dSAndroid Build Coastguard Worker 'container is still considered immutable, because the collection ' 8257*cda5da8dSAndroid Build Coastguard Worker 'of\n' 8258*cda5da8dSAndroid Build Coastguard Worker 'objects it contains cannot be changed. So, immutability is not\n' 8259*cda5da8dSAndroid Build Coastguard Worker 'strictly the same as having an unchangeable value, it is more ' 8260*cda5da8dSAndroid Build Coastguard Worker 'subtle.)\n' 8261*cda5da8dSAndroid Build Coastguard Worker 'An object’s mutability is determined by its type; for instance,\n' 8262*cda5da8dSAndroid Build Coastguard Worker 'numbers, strings and tuples are immutable, while dictionaries ' 8263*cda5da8dSAndroid Build Coastguard Worker 'and\n' 8264*cda5da8dSAndroid Build Coastguard Worker 'lists are mutable.\n' 8265*cda5da8dSAndroid Build Coastguard Worker '\n' 8266*cda5da8dSAndroid Build Coastguard Worker 'Objects are never explicitly destroyed; however, when they ' 8267*cda5da8dSAndroid Build Coastguard Worker 'become\n' 8268*cda5da8dSAndroid Build Coastguard Worker 'unreachable they may be garbage-collected. An implementation is\n' 8269*cda5da8dSAndroid Build Coastguard Worker 'allowed to postpone garbage collection or omit it altogether — it ' 8270*cda5da8dSAndroid Build Coastguard Worker 'is a\n' 8271*cda5da8dSAndroid Build Coastguard Worker 'matter of implementation quality how garbage collection is\n' 8272*cda5da8dSAndroid Build Coastguard Worker 'implemented, as long as no objects are collected that are still\n' 8273*cda5da8dSAndroid Build Coastguard Worker 'reachable.\n' 8274*cda5da8dSAndroid Build Coastguard Worker '\n' 8275*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** CPython currently uses a ' 8276*cda5da8dSAndroid Build Coastguard Worker 'reference-\n' 8277*cda5da8dSAndroid Build Coastguard Worker 'counting scheme with (optional) delayed detection of cyclically ' 8278*cda5da8dSAndroid Build Coastguard Worker 'linked\n' 8279*cda5da8dSAndroid Build Coastguard Worker 'garbage, which collects most objects as soon as they become\n' 8280*cda5da8dSAndroid Build Coastguard Worker 'unreachable, but is not guaranteed to collect garbage containing\n' 8281*cda5da8dSAndroid Build Coastguard Worker 'circular references. See the documentation of the "gc" module ' 8282*cda5da8dSAndroid Build Coastguard Worker 'for\n' 8283*cda5da8dSAndroid Build Coastguard Worker 'information on controlling the collection of cyclic garbage. ' 8284*cda5da8dSAndroid Build Coastguard Worker 'Other\n' 8285*cda5da8dSAndroid Build Coastguard Worker 'implementations act differently and CPython may change. Do not ' 8286*cda5da8dSAndroid Build Coastguard Worker 'depend\n' 8287*cda5da8dSAndroid Build Coastguard Worker 'on immediate finalization of objects when they become unreachable ' 8288*cda5da8dSAndroid Build Coastguard Worker '(so\n' 8289*cda5da8dSAndroid Build Coastguard Worker 'you should always close files explicitly).\n' 8290*cda5da8dSAndroid Build Coastguard Worker '\n' 8291*cda5da8dSAndroid Build Coastguard Worker 'Note that the use of the implementation’s tracing or debugging\n' 8292*cda5da8dSAndroid Build Coastguard Worker 'facilities may keep objects alive that would normally be ' 8293*cda5da8dSAndroid Build Coastguard Worker 'collectable.\n' 8294*cda5da8dSAndroid Build Coastguard Worker 'Also note that catching an exception with a ‘"try"…"except"’ ' 8295*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 8296*cda5da8dSAndroid Build Coastguard Worker 'may keep objects alive.\n' 8297*cda5da8dSAndroid Build Coastguard Worker '\n' 8298*cda5da8dSAndroid Build Coastguard Worker 'Some objects contain references to “external” resources such as ' 8299*cda5da8dSAndroid Build Coastguard Worker 'open\n' 8300*cda5da8dSAndroid Build Coastguard Worker 'files or windows. It is understood that these resources are ' 8301*cda5da8dSAndroid Build Coastguard Worker 'freed\n' 8302*cda5da8dSAndroid Build Coastguard Worker 'when the object is garbage-collected, but since garbage ' 8303*cda5da8dSAndroid Build Coastguard Worker 'collection is\n' 8304*cda5da8dSAndroid Build Coastguard Worker 'not guaranteed to happen, such objects also provide an explicit ' 8305*cda5da8dSAndroid Build Coastguard Worker 'way to\n' 8306*cda5da8dSAndroid Build Coastguard Worker 'release the external resource, usually a "close()" method. ' 8307*cda5da8dSAndroid Build Coastguard Worker 'Programs\n' 8308*cda5da8dSAndroid Build Coastguard Worker 'are strongly recommended to explicitly close such objects. The\n' 8309*cda5da8dSAndroid Build Coastguard Worker '‘"try"…"finally"’ statement and the ‘"with"’ statement provide\n' 8310*cda5da8dSAndroid Build Coastguard Worker 'convenient ways to do this.\n' 8311*cda5da8dSAndroid Build Coastguard Worker '\n' 8312*cda5da8dSAndroid Build Coastguard Worker 'Some objects contain references to other objects; these are ' 8313*cda5da8dSAndroid Build Coastguard Worker 'called\n' 8314*cda5da8dSAndroid Build Coastguard Worker '*containers*. Examples of containers are tuples, lists and\n' 8315*cda5da8dSAndroid Build Coastguard Worker 'dictionaries. The references are part of a container’s value. ' 8316*cda5da8dSAndroid Build Coastguard Worker 'In\n' 8317*cda5da8dSAndroid Build Coastguard Worker 'most cases, when we talk about the value of a container, we imply ' 8318*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8319*cda5da8dSAndroid Build Coastguard Worker 'values, not the identities of the contained objects; however, ' 8320*cda5da8dSAndroid Build Coastguard Worker 'when we\n' 8321*cda5da8dSAndroid Build Coastguard Worker 'talk about the mutability of a container, only the identities of ' 8322*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8323*cda5da8dSAndroid Build Coastguard Worker 'immediately contained objects are implied. So, if an immutable\n' 8324*cda5da8dSAndroid Build Coastguard Worker 'container (like a tuple) contains a reference to a mutable ' 8325*cda5da8dSAndroid Build Coastguard Worker 'object, its\n' 8326*cda5da8dSAndroid Build Coastguard Worker 'value changes if that mutable object is changed.\n' 8327*cda5da8dSAndroid Build Coastguard Worker '\n' 8328*cda5da8dSAndroid Build Coastguard Worker 'Types affect almost all aspects of object behavior. Even the\n' 8329*cda5da8dSAndroid Build Coastguard Worker 'importance of object identity is affected in some sense: for ' 8330*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 8331*cda5da8dSAndroid Build Coastguard Worker 'types, operations that compute new values may actually return a\n' 8332*cda5da8dSAndroid Build Coastguard Worker 'reference to any existing object with the same type and value, ' 8333*cda5da8dSAndroid Build Coastguard Worker 'while\n' 8334*cda5da8dSAndroid Build Coastguard Worker 'for mutable objects this is not allowed. E.g., after "a = 1; b = ' 8335*cda5da8dSAndroid Build Coastguard Worker '1",\n' 8336*cda5da8dSAndroid Build Coastguard Worker '"a" and "b" may or may not refer to the same object with the ' 8337*cda5da8dSAndroid Build Coastguard Worker 'value\n' 8338*cda5da8dSAndroid Build Coastguard Worker 'one, depending on the implementation, but after "c = []; d = []", ' 8339*cda5da8dSAndroid Build Coastguard Worker '"c"\n' 8340*cda5da8dSAndroid Build Coastguard Worker 'and "d" are guaranteed to refer to two different, unique, newly\n' 8341*cda5da8dSAndroid Build Coastguard Worker 'created empty lists. (Note that "c = d = []" assigns the same ' 8342*cda5da8dSAndroid Build Coastguard Worker 'object\n' 8343*cda5da8dSAndroid Build Coastguard Worker 'to both "c" and "d".)\n', 8344*cda5da8dSAndroid Build Coastguard Worker 'operator-summary': 'Operator precedence\n' 8345*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 8346*cda5da8dSAndroid Build Coastguard Worker '\n' 8347*cda5da8dSAndroid Build Coastguard Worker 'The following table summarizes the operator precedence ' 8348*cda5da8dSAndroid Build Coastguard Worker 'in Python, from\n' 8349*cda5da8dSAndroid Build Coastguard Worker 'highest precedence (most binding) to lowest precedence ' 8350*cda5da8dSAndroid Build Coastguard Worker '(least\n' 8351*cda5da8dSAndroid Build Coastguard Worker 'binding). Operators in the same box have the same ' 8352*cda5da8dSAndroid Build Coastguard Worker 'precedence. Unless\n' 8353*cda5da8dSAndroid Build Coastguard Worker 'the syntax is explicitly given, operators are binary. ' 8354*cda5da8dSAndroid Build Coastguard Worker 'Operators in\n' 8355*cda5da8dSAndroid Build Coastguard Worker 'the same box group left to right (except for ' 8356*cda5da8dSAndroid Build Coastguard Worker 'exponentiation and\n' 8357*cda5da8dSAndroid Build Coastguard Worker 'conditional expressions, which group from right to ' 8358*cda5da8dSAndroid Build Coastguard Worker 'left).\n' 8359*cda5da8dSAndroid Build Coastguard Worker '\n' 8360*cda5da8dSAndroid Build Coastguard Worker 'Note that comparisons, membership tests, and identity ' 8361*cda5da8dSAndroid Build Coastguard Worker 'tests, all have\n' 8362*cda5da8dSAndroid Build Coastguard Worker 'the same precedence and have a left-to-right chaining ' 8363*cda5da8dSAndroid Build Coastguard Worker 'feature as\n' 8364*cda5da8dSAndroid Build Coastguard Worker 'described in the Comparisons section.\n' 8365*cda5da8dSAndroid Build Coastguard Worker '\n' 8366*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8367*cda5da8dSAndroid Build Coastguard Worker '| Operator | ' 8368*cda5da8dSAndroid Build Coastguard Worker 'Description |\n' 8369*cda5da8dSAndroid Build Coastguard Worker '|=================================================|=======================================|\n' 8370*cda5da8dSAndroid Build Coastguard Worker '| "(expressions...)", "[expressions...]", "{key: | ' 8371*cda5da8dSAndroid Build Coastguard Worker 'Binding or parenthesized expression, |\n' 8372*cda5da8dSAndroid Build Coastguard Worker '| value...}", "{expressions...}" | list ' 8373*cda5da8dSAndroid Build Coastguard Worker 'display, dictionary display, set |\n' 8374*cda5da8dSAndroid Build Coastguard Worker '| | ' 8375*cda5da8dSAndroid Build Coastguard Worker 'display |\n' 8376*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8377*cda5da8dSAndroid Build Coastguard Worker '| "x[index]", "x[index:index]", | ' 8378*cda5da8dSAndroid Build Coastguard Worker 'Subscription, slicing, call, |\n' 8379*cda5da8dSAndroid Build Coastguard Worker '| "x(arguments...)", "x.attribute" | ' 8380*cda5da8dSAndroid Build Coastguard Worker 'attribute reference |\n' 8381*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8382*cda5da8dSAndroid Build Coastguard Worker '| "await x" | ' 8383*cda5da8dSAndroid Build Coastguard Worker 'Await expression |\n' 8384*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8385*cda5da8dSAndroid Build Coastguard Worker '| "**" | ' 8386*cda5da8dSAndroid Build Coastguard Worker 'Exponentiation [5] |\n' 8387*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8388*cda5da8dSAndroid Build Coastguard Worker '| "+x", "-x", "~x" | ' 8389*cda5da8dSAndroid Build Coastguard Worker 'Positive, negative, bitwise NOT |\n' 8390*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8391*cda5da8dSAndroid Build Coastguard Worker '| "*", "@", "/", "//", "%" | ' 8392*cda5da8dSAndroid Build Coastguard Worker 'Multiplication, matrix |\n' 8393*cda5da8dSAndroid Build Coastguard Worker '| | ' 8394*cda5da8dSAndroid Build Coastguard Worker 'multiplication, division, floor |\n' 8395*cda5da8dSAndroid Build Coastguard Worker '| | ' 8396*cda5da8dSAndroid Build Coastguard Worker 'division, remainder [6] |\n' 8397*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8398*cda5da8dSAndroid Build Coastguard Worker '| "+", "-" | ' 8399*cda5da8dSAndroid Build Coastguard Worker 'Addition and subtraction |\n' 8400*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8401*cda5da8dSAndroid Build Coastguard Worker '| "<<", ">>" | ' 8402*cda5da8dSAndroid Build Coastguard Worker 'Shifts |\n' 8403*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8404*cda5da8dSAndroid Build Coastguard Worker '| "&" | ' 8405*cda5da8dSAndroid Build Coastguard Worker 'Bitwise AND |\n' 8406*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8407*cda5da8dSAndroid Build Coastguard Worker '| "^" | ' 8408*cda5da8dSAndroid Build Coastguard Worker 'Bitwise XOR |\n' 8409*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8410*cda5da8dSAndroid Build Coastguard Worker '| "|" | ' 8411*cda5da8dSAndroid Build Coastguard Worker 'Bitwise OR |\n' 8412*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8413*cda5da8dSAndroid Build Coastguard Worker '| "in", "not in", "is", "is not", "<", "<=", ">", | ' 8414*cda5da8dSAndroid Build Coastguard Worker 'Comparisons, including membership |\n' 8415*cda5da8dSAndroid Build Coastguard Worker '| ">=", "!=", "==" | ' 8416*cda5da8dSAndroid Build Coastguard Worker 'tests and identity tests |\n' 8417*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8418*cda5da8dSAndroid Build Coastguard Worker '| "not x" | ' 8419*cda5da8dSAndroid Build Coastguard Worker 'Boolean NOT |\n' 8420*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8421*cda5da8dSAndroid Build Coastguard Worker '| "and" | ' 8422*cda5da8dSAndroid Build Coastguard Worker 'Boolean AND |\n' 8423*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8424*cda5da8dSAndroid Build Coastguard Worker '| "or" | ' 8425*cda5da8dSAndroid Build Coastguard Worker 'Boolean OR |\n' 8426*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8427*cda5da8dSAndroid Build Coastguard Worker '| "if" – "else" | ' 8428*cda5da8dSAndroid Build Coastguard Worker 'Conditional expression |\n' 8429*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8430*cda5da8dSAndroid Build Coastguard Worker '| "lambda" | ' 8431*cda5da8dSAndroid Build Coastguard Worker 'Lambda expression |\n' 8432*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8433*cda5da8dSAndroid Build Coastguard Worker '| ":=" | ' 8434*cda5da8dSAndroid Build Coastguard Worker 'Assignment expression |\n' 8435*cda5da8dSAndroid Build Coastguard Worker '+-------------------------------------------------+---------------------------------------+\n' 8436*cda5da8dSAndroid Build Coastguard Worker '\n' 8437*cda5da8dSAndroid Build Coastguard Worker '-[ Footnotes ]-\n' 8438*cda5da8dSAndroid Build Coastguard Worker '\n' 8439*cda5da8dSAndroid Build Coastguard Worker '[1] While "abs(x%y) < abs(y)" is true mathematically, ' 8440*cda5da8dSAndroid Build Coastguard Worker 'for floats it\n' 8441*cda5da8dSAndroid Build Coastguard Worker ' may not be true numerically due to roundoff. For ' 8442*cda5da8dSAndroid Build Coastguard Worker 'example, and\n' 8443*cda5da8dSAndroid Build Coastguard Worker ' assuming a platform on which a Python float is an ' 8444*cda5da8dSAndroid Build Coastguard Worker 'IEEE 754 double-\n' 8445*cda5da8dSAndroid Build Coastguard Worker ' precision number, in order that "-1e-100 % 1e100" ' 8446*cda5da8dSAndroid Build Coastguard Worker 'have the same\n' 8447*cda5da8dSAndroid Build Coastguard Worker ' sign as "1e100", the computed result is "-1e-100 + ' 8448*cda5da8dSAndroid Build Coastguard Worker '1e100", which\n' 8449*cda5da8dSAndroid Build Coastguard Worker ' is numerically exactly equal to "1e100". The ' 8450*cda5da8dSAndroid Build Coastguard Worker 'function\n' 8451*cda5da8dSAndroid Build Coastguard Worker ' "math.fmod()" returns a result whose sign matches ' 8452*cda5da8dSAndroid Build Coastguard Worker 'the sign of the\n' 8453*cda5da8dSAndroid Build Coastguard Worker ' first argument instead, and so returns "-1e-100" in ' 8454*cda5da8dSAndroid Build Coastguard Worker 'this case.\n' 8455*cda5da8dSAndroid Build Coastguard Worker ' Which approach is more appropriate depends on the ' 8456*cda5da8dSAndroid Build Coastguard Worker 'application.\n' 8457*cda5da8dSAndroid Build Coastguard Worker '\n' 8458*cda5da8dSAndroid Build Coastguard Worker '[2] If x is very close to an exact integer multiple of ' 8459*cda5da8dSAndroid Build Coastguard Worker 'y, it’s\n' 8460*cda5da8dSAndroid Build Coastguard Worker ' possible for "x//y" to be one larger than ' 8461*cda5da8dSAndroid Build Coastguard Worker '"(x-x%y)//y" due to\n' 8462*cda5da8dSAndroid Build Coastguard Worker ' rounding. In such cases, Python returns the latter ' 8463*cda5da8dSAndroid Build Coastguard Worker 'result, in\n' 8464*cda5da8dSAndroid Build Coastguard Worker ' order to preserve that "divmod(x,y)[0] * y + x % y" ' 8465*cda5da8dSAndroid Build Coastguard Worker 'be very close\n' 8466*cda5da8dSAndroid Build Coastguard Worker ' to "x".\n' 8467*cda5da8dSAndroid Build Coastguard Worker '\n' 8468*cda5da8dSAndroid Build Coastguard Worker '[3] The Unicode standard distinguishes between *code ' 8469*cda5da8dSAndroid Build Coastguard Worker 'points* (e.g.\n' 8470*cda5da8dSAndroid Build Coastguard Worker ' U+0041) and *abstract characters* (e.g. “LATIN ' 8471*cda5da8dSAndroid Build Coastguard Worker 'CAPITAL LETTER A”).\n' 8472*cda5da8dSAndroid Build Coastguard Worker ' While most abstract characters in Unicode are only ' 8473*cda5da8dSAndroid Build Coastguard Worker 'represented\n' 8474*cda5da8dSAndroid Build Coastguard Worker ' using one code point, there is a number of abstract ' 8475*cda5da8dSAndroid Build Coastguard Worker 'characters\n' 8476*cda5da8dSAndroid Build Coastguard Worker ' that can in addition be represented using a sequence ' 8477*cda5da8dSAndroid Build Coastguard Worker 'of more than\n' 8478*cda5da8dSAndroid Build Coastguard Worker ' one code point. For example, the abstract character ' 8479*cda5da8dSAndroid Build Coastguard Worker '“LATIN\n' 8480*cda5da8dSAndroid Build Coastguard Worker ' CAPITAL LETTER C WITH CEDILLA” can be represented as ' 8481*cda5da8dSAndroid Build Coastguard Worker 'a single\n' 8482*cda5da8dSAndroid Build Coastguard Worker ' *precomposed character* at code position U+00C7, or ' 8483*cda5da8dSAndroid Build Coastguard Worker 'as a sequence\n' 8484*cda5da8dSAndroid Build Coastguard Worker ' of a *base character* at code position U+0043 (LATIN ' 8485*cda5da8dSAndroid Build Coastguard Worker 'CAPITAL\n' 8486*cda5da8dSAndroid Build Coastguard Worker ' LETTER C), followed by a *combining character* at ' 8487*cda5da8dSAndroid Build Coastguard Worker 'code position\n' 8488*cda5da8dSAndroid Build Coastguard Worker ' U+0327 (COMBINING CEDILLA).\n' 8489*cda5da8dSAndroid Build Coastguard Worker '\n' 8490*cda5da8dSAndroid Build Coastguard Worker ' The comparison operators on strings compare at the ' 8491*cda5da8dSAndroid Build Coastguard Worker 'level of\n' 8492*cda5da8dSAndroid Build Coastguard Worker ' Unicode code points. This may be counter-intuitive ' 8493*cda5da8dSAndroid Build Coastguard Worker 'to humans. For\n' 8494*cda5da8dSAndroid Build Coastguard Worker ' example, ""\\u00C7" == "\\u0043\\u0327"" is "False", ' 8495*cda5da8dSAndroid Build Coastguard Worker 'even though both\n' 8496*cda5da8dSAndroid Build Coastguard Worker ' strings represent the same abstract character “LATIN ' 8497*cda5da8dSAndroid Build Coastguard Worker 'CAPITAL\n' 8498*cda5da8dSAndroid Build Coastguard Worker ' LETTER C WITH CEDILLA”.\n' 8499*cda5da8dSAndroid Build Coastguard Worker '\n' 8500*cda5da8dSAndroid Build Coastguard Worker ' To compare strings at the level of abstract ' 8501*cda5da8dSAndroid Build Coastguard Worker 'characters (that is,\n' 8502*cda5da8dSAndroid Build Coastguard Worker ' in a way intuitive to humans), use ' 8503*cda5da8dSAndroid Build Coastguard Worker '"unicodedata.normalize()".\n' 8504*cda5da8dSAndroid Build Coastguard Worker '\n' 8505*cda5da8dSAndroid Build Coastguard Worker '[4] Due to automatic garbage-collection, free lists, and ' 8506*cda5da8dSAndroid Build Coastguard Worker 'the dynamic\n' 8507*cda5da8dSAndroid Build Coastguard Worker ' nature of descriptors, you may notice seemingly ' 8508*cda5da8dSAndroid Build Coastguard Worker 'unusual behaviour\n' 8509*cda5da8dSAndroid Build Coastguard Worker ' in certain uses of the "is" operator, like those ' 8510*cda5da8dSAndroid Build Coastguard Worker 'involving\n' 8511*cda5da8dSAndroid Build Coastguard Worker ' comparisons between instance methods, or constants. ' 8512*cda5da8dSAndroid Build Coastguard Worker 'Check their\n' 8513*cda5da8dSAndroid Build Coastguard Worker ' documentation for more info.\n' 8514*cda5da8dSAndroid Build Coastguard Worker '\n' 8515*cda5da8dSAndroid Build Coastguard Worker '[5] The power operator "**" binds less tightly than an ' 8516*cda5da8dSAndroid Build Coastguard Worker 'arithmetic or\n' 8517*cda5da8dSAndroid Build Coastguard Worker ' bitwise unary operator on its right, that is, ' 8518*cda5da8dSAndroid Build Coastguard Worker '"2**-1" is "0.5".\n' 8519*cda5da8dSAndroid Build Coastguard Worker '\n' 8520*cda5da8dSAndroid Build Coastguard Worker '[6] The "%" operator is also used for string formatting; ' 8521*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 8522*cda5da8dSAndroid Build Coastguard Worker ' precedence applies.\n', 8523*cda5da8dSAndroid Build Coastguard Worker 'pass': 'The "pass" statement\n' 8524*cda5da8dSAndroid Build Coastguard Worker '********************\n' 8525*cda5da8dSAndroid Build Coastguard Worker '\n' 8526*cda5da8dSAndroid Build Coastguard Worker ' pass_stmt ::= "pass"\n' 8527*cda5da8dSAndroid Build Coastguard Worker '\n' 8528*cda5da8dSAndroid Build Coastguard Worker '"pass" is a null operation — when it is executed, nothing happens. ' 8529*cda5da8dSAndroid Build Coastguard Worker 'It\n' 8530*cda5da8dSAndroid Build Coastguard Worker 'is useful as a placeholder when a statement is required ' 8531*cda5da8dSAndroid Build Coastguard Worker 'syntactically,\n' 8532*cda5da8dSAndroid Build Coastguard Worker 'but no code needs to be executed, for example:\n' 8533*cda5da8dSAndroid Build Coastguard Worker '\n' 8534*cda5da8dSAndroid Build Coastguard Worker ' def f(arg): pass # a function that does nothing (yet)\n' 8535*cda5da8dSAndroid Build Coastguard Worker '\n' 8536*cda5da8dSAndroid Build Coastguard Worker ' class C: pass # a class with no methods (yet)\n', 8537*cda5da8dSAndroid Build Coastguard Worker 'power': 'The power operator\n' 8538*cda5da8dSAndroid Build Coastguard Worker '******************\n' 8539*cda5da8dSAndroid Build Coastguard Worker '\n' 8540*cda5da8dSAndroid Build Coastguard Worker 'The power operator binds more tightly than unary operators on its\n' 8541*cda5da8dSAndroid Build Coastguard Worker 'left; it binds less tightly than unary operators on its right. ' 8542*cda5da8dSAndroid Build Coastguard Worker 'The\n' 8543*cda5da8dSAndroid Build Coastguard Worker 'syntax is:\n' 8544*cda5da8dSAndroid Build Coastguard Worker '\n' 8545*cda5da8dSAndroid Build Coastguard Worker ' power ::= (await_expr | primary) ["**" u_expr]\n' 8546*cda5da8dSAndroid Build Coastguard Worker '\n' 8547*cda5da8dSAndroid Build Coastguard Worker 'Thus, in an unparenthesized sequence of power and unary operators, ' 8548*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8549*cda5da8dSAndroid Build Coastguard Worker 'operators are evaluated from right to left (this does not ' 8550*cda5da8dSAndroid Build Coastguard Worker 'constrain\n' 8551*cda5da8dSAndroid Build Coastguard Worker 'the evaluation order for the operands): "-1**2" results in "-1".\n' 8552*cda5da8dSAndroid Build Coastguard Worker '\n' 8553*cda5da8dSAndroid Build Coastguard Worker 'The power operator has the same semantics as the built-in "pow()"\n' 8554*cda5da8dSAndroid Build Coastguard Worker 'function, when called with two arguments: it yields its left ' 8555*cda5da8dSAndroid Build Coastguard Worker 'argument\n' 8556*cda5da8dSAndroid Build Coastguard Worker 'raised to the power of its right argument. The numeric arguments ' 8557*cda5da8dSAndroid Build Coastguard Worker 'are\n' 8558*cda5da8dSAndroid Build Coastguard Worker 'first converted to a common type, and the result is of that type.\n' 8559*cda5da8dSAndroid Build Coastguard Worker '\n' 8560*cda5da8dSAndroid Build Coastguard Worker 'For int operands, the result has the same type as the operands ' 8561*cda5da8dSAndroid Build Coastguard Worker 'unless\n' 8562*cda5da8dSAndroid Build Coastguard Worker 'the second argument is negative; in that case, all arguments are\n' 8563*cda5da8dSAndroid Build Coastguard Worker 'converted to float and a float result is delivered. For example,\n' 8564*cda5da8dSAndroid Build Coastguard Worker '"10**2" returns "100", but "10**-2" returns "0.01".\n' 8565*cda5da8dSAndroid Build Coastguard Worker '\n' 8566*cda5da8dSAndroid Build Coastguard Worker 'Raising "0.0" to a negative power results in a ' 8567*cda5da8dSAndroid Build Coastguard Worker '"ZeroDivisionError".\n' 8568*cda5da8dSAndroid Build Coastguard Worker 'Raising a negative number to a fractional power results in a ' 8569*cda5da8dSAndroid Build Coastguard Worker '"complex"\n' 8570*cda5da8dSAndroid Build Coastguard Worker 'number. (In earlier versions it raised a "ValueError".)\n' 8571*cda5da8dSAndroid Build Coastguard Worker '\n' 8572*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special "__pow__()" ' 8573*cda5da8dSAndroid Build Coastguard Worker 'method.\n', 8574*cda5da8dSAndroid Build Coastguard Worker 'raise': 'The "raise" statement\n' 8575*cda5da8dSAndroid Build Coastguard Worker '*********************\n' 8576*cda5da8dSAndroid Build Coastguard Worker '\n' 8577*cda5da8dSAndroid Build Coastguard Worker ' raise_stmt ::= "raise" [expression ["from" expression]]\n' 8578*cda5da8dSAndroid Build Coastguard Worker '\n' 8579*cda5da8dSAndroid Build Coastguard Worker 'If no expressions are present, "raise" re-raises the exception that ' 8580*cda5da8dSAndroid Build Coastguard Worker 'is\n' 8581*cda5da8dSAndroid Build Coastguard Worker 'currently being handled, which is also known as the *active\n' 8582*cda5da8dSAndroid Build Coastguard Worker 'exception*. If there isn’t currently an active exception, a\n' 8583*cda5da8dSAndroid Build Coastguard Worker '"RuntimeError" exception is raised indicating that this is an ' 8584*cda5da8dSAndroid Build Coastguard Worker 'error.\n' 8585*cda5da8dSAndroid Build Coastguard Worker '\n' 8586*cda5da8dSAndroid Build Coastguard Worker 'Otherwise, "raise" evaluates the first expression as the exception\n' 8587*cda5da8dSAndroid Build Coastguard Worker 'object. It must be either a subclass or an instance of\n' 8588*cda5da8dSAndroid Build Coastguard Worker '"BaseException". If it is a class, the exception instance will be\n' 8589*cda5da8dSAndroid Build Coastguard Worker 'obtained when needed by instantiating the class with no arguments.\n' 8590*cda5da8dSAndroid Build Coastguard Worker '\n' 8591*cda5da8dSAndroid Build Coastguard Worker 'The *type* of the exception is the exception instance’s class, the\n' 8592*cda5da8dSAndroid Build Coastguard Worker '*value* is the instance itself.\n' 8593*cda5da8dSAndroid Build Coastguard Worker '\n' 8594*cda5da8dSAndroid Build Coastguard Worker 'A traceback object is normally created automatically when an ' 8595*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 8596*cda5da8dSAndroid Build Coastguard Worker 'is raised and attached to it as the "__traceback__" attribute, ' 8597*cda5da8dSAndroid Build Coastguard Worker 'which\n' 8598*cda5da8dSAndroid Build Coastguard Worker 'is writable. You can create an exception and set your own traceback ' 8599*cda5da8dSAndroid Build Coastguard Worker 'in\n' 8600*cda5da8dSAndroid Build Coastguard Worker 'one step using the "with_traceback()" exception method (which ' 8601*cda5da8dSAndroid Build Coastguard Worker 'returns\n' 8602*cda5da8dSAndroid Build Coastguard Worker 'the same exception instance, with its traceback set to its ' 8603*cda5da8dSAndroid Build Coastguard Worker 'argument),\n' 8604*cda5da8dSAndroid Build Coastguard Worker 'like so:\n' 8605*cda5da8dSAndroid Build Coastguard Worker '\n' 8606*cda5da8dSAndroid Build Coastguard Worker ' raise Exception("foo occurred").with_traceback(tracebackobj)\n' 8607*cda5da8dSAndroid Build Coastguard Worker '\n' 8608*cda5da8dSAndroid Build Coastguard Worker 'The "from" clause is used for exception chaining: if given, the ' 8609*cda5da8dSAndroid Build Coastguard Worker 'second\n' 8610*cda5da8dSAndroid Build Coastguard Worker '*expression* must be another exception class or instance. If the\n' 8611*cda5da8dSAndroid Build Coastguard Worker 'second expression is an exception instance, it will be attached to ' 8612*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8613*cda5da8dSAndroid Build Coastguard Worker 'raised exception as the "__cause__" attribute (which is writable). ' 8614*cda5da8dSAndroid Build Coastguard Worker 'If\n' 8615*cda5da8dSAndroid Build Coastguard Worker 'the expression is an exception class, the class will be ' 8616*cda5da8dSAndroid Build Coastguard Worker 'instantiated\n' 8617*cda5da8dSAndroid Build Coastguard Worker 'and the resulting exception instance will be attached to the ' 8618*cda5da8dSAndroid Build Coastguard Worker 'raised\n' 8619*cda5da8dSAndroid Build Coastguard Worker 'exception as the "__cause__" attribute. If the raised exception is ' 8620*cda5da8dSAndroid Build Coastguard Worker 'not\n' 8621*cda5da8dSAndroid Build Coastguard Worker 'handled, both exceptions will be printed:\n' 8622*cda5da8dSAndroid Build Coastguard Worker '\n' 8623*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 8624*cda5da8dSAndroid Build Coastguard Worker ' ... print(1 / 0)\n' 8625*cda5da8dSAndroid Build Coastguard Worker ' ... except Exception as exc:\n' 8626*cda5da8dSAndroid Build Coastguard Worker ' ... raise RuntimeError("Something bad happened") from exc\n' 8627*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 8628*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 8629*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 2, in <module>\n' 8630*cda5da8dSAndroid Build Coastguard Worker ' ZeroDivisionError: division by zero\n' 8631*cda5da8dSAndroid Build Coastguard Worker '\n' 8632*cda5da8dSAndroid Build Coastguard Worker ' The above exception was the direct cause of the following ' 8633*cda5da8dSAndroid Build Coastguard Worker 'exception:\n' 8634*cda5da8dSAndroid Build Coastguard Worker '\n' 8635*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 8636*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 4, in <module>\n' 8637*cda5da8dSAndroid Build Coastguard Worker ' RuntimeError: Something bad happened\n' 8638*cda5da8dSAndroid Build Coastguard Worker '\n' 8639*cda5da8dSAndroid Build Coastguard Worker 'A similar mechanism works implicitly if a new exception is raised ' 8640*cda5da8dSAndroid Build Coastguard Worker 'when\n' 8641*cda5da8dSAndroid Build Coastguard Worker 'an exception is already being handled. An exception may be ' 8642*cda5da8dSAndroid Build Coastguard Worker 'handled\n' 8643*cda5da8dSAndroid Build Coastguard Worker 'when an "except" or "finally" clause, or a "with" statement, is ' 8644*cda5da8dSAndroid Build Coastguard Worker 'used.\n' 8645*cda5da8dSAndroid Build Coastguard Worker 'The previous exception is then attached as the new exception’s\n' 8646*cda5da8dSAndroid Build Coastguard Worker '"__context__" attribute:\n' 8647*cda5da8dSAndroid Build Coastguard Worker '\n' 8648*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 8649*cda5da8dSAndroid Build Coastguard Worker ' ... print(1 / 0)\n' 8650*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 8651*cda5da8dSAndroid Build Coastguard Worker ' ... raise RuntimeError("Something bad happened")\n' 8652*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 8653*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 8654*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 2, in <module>\n' 8655*cda5da8dSAndroid Build Coastguard Worker ' ZeroDivisionError: division by zero\n' 8656*cda5da8dSAndroid Build Coastguard Worker '\n' 8657*cda5da8dSAndroid Build Coastguard Worker ' During handling of the above exception, another exception ' 8658*cda5da8dSAndroid Build Coastguard Worker 'occurred:\n' 8659*cda5da8dSAndroid Build Coastguard Worker '\n' 8660*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 8661*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 4, in <module>\n' 8662*cda5da8dSAndroid Build Coastguard Worker ' RuntimeError: Something bad happened\n' 8663*cda5da8dSAndroid Build Coastguard Worker '\n' 8664*cda5da8dSAndroid Build Coastguard Worker 'Exception chaining can be explicitly suppressed by specifying ' 8665*cda5da8dSAndroid Build Coastguard Worker '"None"\n' 8666*cda5da8dSAndroid Build Coastguard Worker 'in the "from" clause:\n' 8667*cda5da8dSAndroid Build Coastguard Worker '\n' 8668*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 8669*cda5da8dSAndroid Build Coastguard Worker ' ... print(1 / 0)\n' 8670*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 8671*cda5da8dSAndroid Build Coastguard Worker ' ... raise RuntimeError("Something bad happened") from None\n' 8672*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 8673*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 8674*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 4, in <module>\n' 8675*cda5da8dSAndroid Build Coastguard Worker ' RuntimeError: Something bad happened\n' 8676*cda5da8dSAndroid Build Coastguard Worker '\n' 8677*cda5da8dSAndroid Build Coastguard Worker 'Additional information on exceptions can be found in section\n' 8678*cda5da8dSAndroid Build Coastguard Worker 'Exceptions, and information about handling exceptions is in ' 8679*cda5da8dSAndroid Build Coastguard Worker 'section\n' 8680*cda5da8dSAndroid Build Coastguard Worker 'The try statement.\n' 8681*cda5da8dSAndroid Build Coastguard Worker '\n' 8682*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.3: "None" is now permitted as "Y" in "raise X\n' 8683*cda5da8dSAndroid Build Coastguard Worker 'from Y".\n' 8684*cda5da8dSAndroid Build Coastguard Worker '\n' 8685*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.3: The "__suppress_context__" attribute to ' 8686*cda5da8dSAndroid Build Coastguard Worker 'suppress\n' 8687*cda5da8dSAndroid Build Coastguard Worker 'automatic display of the exception context.\n' 8688*cda5da8dSAndroid Build Coastguard Worker '\n' 8689*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.11: If the traceback of the active exception ' 8690*cda5da8dSAndroid Build Coastguard Worker 'is\n' 8691*cda5da8dSAndroid Build Coastguard Worker 'modified in an "except" clause, a subsequent "raise" statement re-\n' 8692*cda5da8dSAndroid Build Coastguard Worker 'raises the exception with the modified traceback. Previously, the\n' 8693*cda5da8dSAndroid Build Coastguard Worker 'exception was re-raised with the traceback it had when it was ' 8694*cda5da8dSAndroid Build Coastguard Worker 'caught.\n', 8695*cda5da8dSAndroid Build Coastguard Worker 'return': 'The "return" statement\n' 8696*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 8697*cda5da8dSAndroid Build Coastguard Worker '\n' 8698*cda5da8dSAndroid Build Coastguard Worker ' return_stmt ::= "return" [expression_list]\n' 8699*cda5da8dSAndroid Build Coastguard Worker '\n' 8700*cda5da8dSAndroid Build Coastguard Worker '"return" may only occur syntactically nested in a function ' 8701*cda5da8dSAndroid Build Coastguard Worker 'definition,\n' 8702*cda5da8dSAndroid Build Coastguard Worker 'not within a nested class definition.\n' 8703*cda5da8dSAndroid Build Coastguard Worker '\n' 8704*cda5da8dSAndroid Build Coastguard Worker 'If an expression list is present, it is evaluated, else "None" is\n' 8705*cda5da8dSAndroid Build Coastguard Worker 'substituted.\n' 8706*cda5da8dSAndroid Build Coastguard Worker '\n' 8707*cda5da8dSAndroid Build Coastguard Worker '"return" leaves the current function call with the expression list ' 8708*cda5da8dSAndroid Build Coastguard Worker '(or\n' 8709*cda5da8dSAndroid Build Coastguard Worker '"None") as return value.\n' 8710*cda5da8dSAndroid Build Coastguard Worker '\n' 8711*cda5da8dSAndroid Build Coastguard Worker 'When "return" passes control out of a "try" statement with a ' 8712*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 8713*cda5da8dSAndroid Build Coastguard Worker 'clause, that "finally" clause is executed before really leaving ' 8714*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8715*cda5da8dSAndroid Build Coastguard Worker 'function.\n' 8716*cda5da8dSAndroid Build Coastguard Worker '\n' 8717*cda5da8dSAndroid Build Coastguard Worker 'In a generator function, the "return" statement indicates that ' 8718*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8719*cda5da8dSAndroid Build Coastguard Worker 'generator is done and will cause "StopIteration" to be raised. ' 8720*cda5da8dSAndroid Build Coastguard Worker 'The\n' 8721*cda5da8dSAndroid Build Coastguard Worker 'returned value (if any) is used as an argument to construct\n' 8722*cda5da8dSAndroid Build Coastguard Worker '"StopIteration" and becomes the "StopIteration.value" attribute.\n' 8723*cda5da8dSAndroid Build Coastguard Worker '\n' 8724*cda5da8dSAndroid Build Coastguard Worker 'In an asynchronous generator function, an empty "return" ' 8725*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 8726*cda5da8dSAndroid Build Coastguard Worker 'indicates that the asynchronous generator is done and will cause\n' 8727*cda5da8dSAndroid Build Coastguard Worker '"StopAsyncIteration" to be raised. A non-empty "return" statement ' 8728*cda5da8dSAndroid Build Coastguard Worker 'is\n' 8729*cda5da8dSAndroid Build Coastguard Worker 'a syntax error in an asynchronous generator function.\n', 8730*cda5da8dSAndroid Build Coastguard Worker 'sequence-types': 'Emulating container types\n' 8731*cda5da8dSAndroid Build Coastguard Worker '*************************\n' 8732*cda5da8dSAndroid Build Coastguard Worker '\n' 8733*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to implement ' 8734*cda5da8dSAndroid Build Coastguard Worker 'container objects.\n' 8735*cda5da8dSAndroid Build Coastguard Worker 'Containers usually are *sequences* (such as "lists" or ' 8736*cda5da8dSAndroid Build Coastguard Worker '"tuples") or\n' 8737*cda5da8dSAndroid Build Coastguard Worker '*mappings* (like "dictionaries"), but can represent other ' 8738*cda5da8dSAndroid Build Coastguard Worker 'containers\n' 8739*cda5da8dSAndroid Build Coastguard Worker 'as well. The first set of methods is used either to ' 8740*cda5da8dSAndroid Build Coastguard Worker 'emulate a\n' 8741*cda5da8dSAndroid Build Coastguard Worker 'sequence or to emulate a mapping; the difference is that ' 8742*cda5da8dSAndroid Build Coastguard Worker 'for a\n' 8743*cda5da8dSAndroid Build Coastguard Worker 'sequence, the allowable keys should be the integers *k* ' 8744*cda5da8dSAndroid Build Coastguard Worker 'for which "0\n' 8745*cda5da8dSAndroid Build Coastguard Worker '<= k < N" where *N* is the length of the sequence, or ' 8746*cda5da8dSAndroid Build Coastguard Worker '"slice" objects,\n' 8747*cda5da8dSAndroid Build Coastguard Worker 'which define a range of items. It is also recommended ' 8748*cda5da8dSAndroid Build Coastguard Worker 'that mappings\n' 8749*cda5da8dSAndroid Build Coastguard Worker 'provide the methods "keys()", "values()", "items()", ' 8750*cda5da8dSAndroid Build Coastguard Worker '"get()",\n' 8751*cda5da8dSAndroid Build Coastguard Worker '"clear()", "setdefault()", "pop()", "popitem()", "copy()", ' 8752*cda5da8dSAndroid Build Coastguard Worker 'and\n' 8753*cda5da8dSAndroid Build Coastguard Worker '"update()" behaving similar to those for Python’s ' 8754*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 8755*cda5da8dSAndroid Build Coastguard Worker '"dictionary" objects. The "collections.abc" module ' 8756*cda5da8dSAndroid Build Coastguard Worker 'provides a\n' 8757*cda5da8dSAndroid Build Coastguard Worker '"MutableMapping" *abstract base class* to help create ' 8758*cda5da8dSAndroid Build Coastguard Worker 'those methods\n' 8759*cda5da8dSAndroid Build Coastguard Worker 'from a base set of "__getitem__()", "__setitem__()", ' 8760*cda5da8dSAndroid Build Coastguard Worker '"__delitem__()",\n' 8761*cda5da8dSAndroid Build Coastguard Worker 'and "keys()". Mutable sequences should provide methods ' 8762*cda5da8dSAndroid Build Coastguard Worker '"append()",\n' 8763*cda5da8dSAndroid Build Coastguard Worker '"count()", "index()", "extend()", "insert()", "pop()", ' 8764*cda5da8dSAndroid Build Coastguard Worker '"remove()",\n' 8765*cda5da8dSAndroid Build Coastguard Worker '"reverse()" and "sort()", like Python standard "list" ' 8766*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 8767*cda5da8dSAndroid Build Coastguard Worker 'Finally, sequence types should implement addition ' 8768*cda5da8dSAndroid Build Coastguard Worker '(meaning\n' 8769*cda5da8dSAndroid Build Coastguard Worker 'concatenation) and multiplication (meaning repetition) by ' 8770*cda5da8dSAndroid Build Coastguard Worker 'defining the\n' 8771*cda5da8dSAndroid Build Coastguard Worker 'methods "__add__()", "__radd__()", "__iadd__()", ' 8772*cda5da8dSAndroid Build Coastguard Worker '"__mul__()",\n' 8773*cda5da8dSAndroid Build Coastguard Worker '"__rmul__()" and "__imul__()" described below; they should ' 8774*cda5da8dSAndroid Build Coastguard Worker 'not define\n' 8775*cda5da8dSAndroid Build Coastguard Worker 'other numerical operators. It is recommended that both ' 8776*cda5da8dSAndroid Build Coastguard Worker 'mappings and\n' 8777*cda5da8dSAndroid Build Coastguard Worker 'sequences implement the "__contains__()" method to allow ' 8778*cda5da8dSAndroid Build Coastguard Worker 'efficient use\n' 8779*cda5da8dSAndroid Build Coastguard Worker 'of the "in" operator; for mappings, "in" should search the ' 8780*cda5da8dSAndroid Build Coastguard Worker 'mapping’s\n' 8781*cda5da8dSAndroid Build Coastguard Worker 'keys; for sequences, it should search through the values. ' 8782*cda5da8dSAndroid Build Coastguard Worker 'It is\n' 8783*cda5da8dSAndroid Build Coastguard Worker 'further recommended that both mappings and sequences ' 8784*cda5da8dSAndroid Build Coastguard Worker 'implement the\n' 8785*cda5da8dSAndroid Build Coastguard Worker '"__iter__()" method to allow efficient iteration through ' 8786*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8787*cda5da8dSAndroid Build Coastguard Worker 'container; for mappings, "__iter__()" should iterate ' 8788*cda5da8dSAndroid Build Coastguard Worker 'through the\n' 8789*cda5da8dSAndroid Build Coastguard Worker 'object’s keys; for sequences, it should iterate through ' 8790*cda5da8dSAndroid Build Coastguard Worker 'the values.\n' 8791*cda5da8dSAndroid Build Coastguard Worker '\n' 8792*cda5da8dSAndroid Build Coastguard Worker 'object.__len__(self)\n' 8793*cda5da8dSAndroid Build Coastguard Worker '\n' 8794*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in function "len()". ' 8795*cda5da8dSAndroid Build Coastguard Worker 'Should return\n' 8796*cda5da8dSAndroid Build Coastguard Worker ' the length of the object, an integer ">=" 0. Also, an ' 8797*cda5da8dSAndroid Build Coastguard Worker 'object that\n' 8798*cda5da8dSAndroid Build Coastguard Worker ' doesn’t define a "__bool__()" method and whose ' 8799*cda5da8dSAndroid Build Coastguard Worker '"__len__()" method\n' 8800*cda5da8dSAndroid Build Coastguard Worker ' returns zero is considered to be false in a Boolean ' 8801*cda5da8dSAndroid Build Coastguard Worker 'context.\n' 8802*cda5da8dSAndroid Build Coastguard Worker '\n' 8803*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** In CPython, the ' 8804*cda5da8dSAndroid Build Coastguard Worker 'length is\n' 8805*cda5da8dSAndroid Build Coastguard Worker ' required to be at most "sys.maxsize". If the length is ' 8806*cda5da8dSAndroid Build Coastguard Worker 'larger than\n' 8807*cda5da8dSAndroid Build Coastguard Worker ' "sys.maxsize" some features (such as "len()") may ' 8808*cda5da8dSAndroid Build Coastguard Worker 'raise\n' 8809*cda5da8dSAndroid Build Coastguard Worker ' "OverflowError". To prevent raising "OverflowError" by ' 8810*cda5da8dSAndroid Build Coastguard Worker 'truth value\n' 8811*cda5da8dSAndroid Build Coastguard Worker ' testing, an object must define a "__bool__()" method.\n' 8812*cda5da8dSAndroid Build Coastguard Worker '\n' 8813*cda5da8dSAndroid Build Coastguard Worker 'object.__length_hint__(self)\n' 8814*cda5da8dSAndroid Build Coastguard Worker '\n' 8815*cda5da8dSAndroid Build Coastguard Worker ' Called to implement "operator.length_hint()". Should ' 8816*cda5da8dSAndroid Build Coastguard Worker 'return an\n' 8817*cda5da8dSAndroid Build Coastguard Worker ' estimated length for the object (which may be greater ' 8818*cda5da8dSAndroid Build Coastguard Worker 'or less than\n' 8819*cda5da8dSAndroid Build Coastguard Worker ' the actual length). The length must be an integer ">=" ' 8820*cda5da8dSAndroid Build Coastguard Worker '0. The\n' 8821*cda5da8dSAndroid Build Coastguard Worker ' return value may also be "NotImplemented", which is ' 8822*cda5da8dSAndroid Build Coastguard Worker 'treated the\n' 8823*cda5da8dSAndroid Build Coastguard Worker ' same as if the "__length_hint__" method didn’t exist at ' 8824*cda5da8dSAndroid Build Coastguard Worker 'all. This\n' 8825*cda5da8dSAndroid Build Coastguard Worker ' method is purely an optimization and is never required ' 8826*cda5da8dSAndroid Build Coastguard Worker 'for\n' 8827*cda5da8dSAndroid Build Coastguard Worker ' correctness.\n' 8828*cda5da8dSAndroid Build Coastguard Worker '\n' 8829*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.4.\n' 8830*cda5da8dSAndroid Build Coastguard Worker '\n' 8831*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 8832*cda5da8dSAndroid Build Coastguard Worker '\n' 8833*cda5da8dSAndroid Build Coastguard Worker ' Slicing is done exclusively with the following three ' 8834*cda5da8dSAndroid Build Coastguard Worker 'methods. A\n' 8835*cda5da8dSAndroid Build Coastguard Worker ' call like\n' 8836*cda5da8dSAndroid Build Coastguard Worker '\n' 8837*cda5da8dSAndroid Build Coastguard Worker ' a[1:2] = b\n' 8838*cda5da8dSAndroid Build Coastguard Worker '\n' 8839*cda5da8dSAndroid Build Coastguard Worker ' is translated to\n' 8840*cda5da8dSAndroid Build Coastguard Worker '\n' 8841*cda5da8dSAndroid Build Coastguard Worker ' a[slice(1, 2, None)] = b\n' 8842*cda5da8dSAndroid Build Coastguard Worker '\n' 8843*cda5da8dSAndroid Build Coastguard Worker ' and so forth. Missing slice items are always filled in ' 8844*cda5da8dSAndroid Build Coastguard Worker 'with "None".\n' 8845*cda5da8dSAndroid Build Coastguard Worker '\n' 8846*cda5da8dSAndroid Build Coastguard Worker 'object.__getitem__(self, key)\n' 8847*cda5da8dSAndroid Build Coastguard Worker '\n' 8848*cda5da8dSAndroid Build Coastguard Worker ' Called to implement evaluation of "self[key]". For ' 8849*cda5da8dSAndroid Build Coastguard Worker '*sequence*\n' 8850*cda5da8dSAndroid Build Coastguard Worker ' types, the accepted keys should be integers and slice ' 8851*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 8852*cda5da8dSAndroid Build Coastguard Worker ' Note that the special interpretation of negative ' 8853*cda5da8dSAndroid Build Coastguard Worker 'indexes (if the\n' 8854*cda5da8dSAndroid Build Coastguard Worker ' class wishes to emulate a *sequence* type) is up to ' 8855*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8856*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()" method. If *key* is of an inappropriate ' 8857*cda5da8dSAndroid Build Coastguard Worker 'type,\n' 8858*cda5da8dSAndroid Build Coastguard Worker ' "TypeError" may be raised; if of a value outside the ' 8859*cda5da8dSAndroid Build Coastguard Worker 'set of indexes\n' 8860*cda5da8dSAndroid Build Coastguard Worker ' for the sequence (after any special interpretation of ' 8861*cda5da8dSAndroid Build Coastguard Worker 'negative\n' 8862*cda5da8dSAndroid Build Coastguard Worker ' values), "IndexError" should be raised. For *mapping* ' 8863*cda5da8dSAndroid Build Coastguard Worker 'types, if\n' 8864*cda5da8dSAndroid Build Coastguard Worker ' *key* is missing (not in the container), "KeyError" ' 8865*cda5da8dSAndroid Build Coastguard Worker 'should be\n' 8866*cda5da8dSAndroid Build Coastguard Worker ' raised.\n' 8867*cda5da8dSAndroid Build Coastguard Worker '\n' 8868*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 8869*cda5da8dSAndroid Build Coastguard Worker '\n' 8870*cda5da8dSAndroid Build Coastguard Worker ' "for" loops expect that an "IndexError" will be ' 8871*cda5da8dSAndroid Build Coastguard Worker 'raised for\n' 8872*cda5da8dSAndroid Build Coastguard Worker ' illegal indexes to allow proper detection of the end ' 8873*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 8874*cda5da8dSAndroid Build Coastguard Worker ' sequence.\n' 8875*cda5da8dSAndroid Build Coastguard Worker '\n' 8876*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 8877*cda5da8dSAndroid Build Coastguard Worker '\n' 8878*cda5da8dSAndroid Build Coastguard Worker ' When subscripting a *class*, the special class ' 8879*cda5da8dSAndroid Build Coastguard Worker 'method\n' 8880*cda5da8dSAndroid Build Coastguard Worker ' "__class_getitem__()" may be called instead of ' 8881*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()".\n' 8882*cda5da8dSAndroid Build Coastguard Worker ' See __class_getitem__ versus __getitem__ for more ' 8883*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 8884*cda5da8dSAndroid Build Coastguard Worker '\n' 8885*cda5da8dSAndroid Build Coastguard Worker 'object.__setitem__(self, key, value)\n' 8886*cda5da8dSAndroid Build Coastguard Worker '\n' 8887*cda5da8dSAndroid Build Coastguard Worker ' Called to implement assignment to "self[key]". Same ' 8888*cda5da8dSAndroid Build Coastguard Worker 'note as for\n' 8889*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()". This should only be implemented for ' 8890*cda5da8dSAndroid Build Coastguard Worker 'mappings if\n' 8891*cda5da8dSAndroid Build Coastguard Worker ' the objects support changes to the values for keys, or ' 8892*cda5da8dSAndroid Build Coastguard Worker 'if new keys\n' 8893*cda5da8dSAndroid Build Coastguard Worker ' can be added, or for sequences if elements can be ' 8894*cda5da8dSAndroid Build Coastguard Worker 'replaced. The\n' 8895*cda5da8dSAndroid Build Coastguard Worker ' same exceptions should be raised for improper *key* ' 8896*cda5da8dSAndroid Build Coastguard Worker 'values as for\n' 8897*cda5da8dSAndroid Build Coastguard Worker ' the "__getitem__()" method.\n' 8898*cda5da8dSAndroid Build Coastguard Worker '\n' 8899*cda5da8dSAndroid Build Coastguard Worker 'object.__delitem__(self, key)\n' 8900*cda5da8dSAndroid Build Coastguard Worker '\n' 8901*cda5da8dSAndroid Build Coastguard Worker ' Called to implement deletion of "self[key]". Same note ' 8902*cda5da8dSAndroid Build Coastguard Worker 'as for\n' 8903*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()". This should only be implemented for ' 8904*cda5da8dSAndroid Build Coastguard Worker 'mappings if\n' 8905*cda5da8dSAndroid Build Coastguard Worker ' the objects support removal of keys, or for sequences ' 8906*cda5da8dSAndroid Build Coastguard Worker 'if elements\n' 8907*cda5da8dSAndroid Build Coastguard Worker ' can be removed from the sequence. The same exceptions ' 8908*cda5da8dSAndroid Build Coastguard Worker 'should be\n' 8909*cda5da8dSAndroid Build Coastguard Worker ' raised for improper *key* values as for the ' 8910*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()" method.\n' 8911*cda5da8dSAndroid Build Coastguard Worker '\n' 8912*cda5da8dSAndroid Build Coastguard Worker 'object.__missing__(self, key)\n' 8913*cda5da8dSAndroid Build Coastguard Worker '\n' 8914*cda5da8dSAndroid Build Coastguard Worker ' Called by "dict"."__getitem__()" to implement ' 8915*cda5da8dSAndroid Build Coastguard Worker '"self[key]" for dict\n' 8916*cda5da8dSAndroid Build Coastguard Worker ' subclasses when key is not in the dictionary.\n' 8917*cda5da8dSAndroid Build Coastguard Worker '\n' 8918*cda5da8dSAndroid Build Coastguard Worker 'object.__iter__(self)\n' 8919*cda5da8dSAndroid Build Coastguard Worker '\n' 8920*cda5da8dSAndroid Build Coastguard Worker ' This method is called when an *iterator* is required ' 8921*cda5da8dSAndroid Build Coastguard Worker 'for a\n' 8922*cda5da8dSAndroid Build Coastguard Worker ' container. This method should return a new iterator ' 8923*cda5da8dSAndroid Build Coastguard Worker 'object that can\n' 8924*cda5da8dSAndroid Build Coastguard Worker ' iterate over all the objects in the container. For ' 8925*cda5da8dSAndroid Build Coastguard Worker 'mappings, it\n' 8926*cda5da8dSAndroid Build Coastguard Worker ' should iterate over the keys of the container.\n' 8927*cda5da8dSAndroid Build Coastguard Worker '\n' 8928*cda5da8dSAndroid Build Coastguard Worker 'object.__reversed__(self)\n' 8929*cda5da8dSAndroid Build Coastguard Worker '\n' 8930*cda5da8dSAndroid Build Coastguard Worker ' Called (if present) by the "reversed()" built-in to ' 8931*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 8932*cda5da8dSAndroid Build Coastguard Worker ' reverse iteration. It should return a new iterator ' 8933*cda5da8dSAndroid Build Coastguard Worker 'object that\n' 8934*cda5da8dSAndroid Build Coastguard Worker ' iterates over all the objects in the container in ' 8935*cda5da8dSAndroid Build Coastguard Worker 'reverse order.\n' 8936*cda5da8dSAndroid Build Coastguard Worker '\n' 8937*cda5da8dSAndroid Build Coastguard Worker ' If the "__reversed__()" method is not provided, the ' 8938*cda5da8dSAndroid Build Coastguard Worker '"reversed()"\n' 8939*cda5da8dSAndroid Build Coastguard Worker ' built-in will fall back to using the sequence protocol ' 8940*cda5da8dSAndroid Build Coastguard Worker '("__len__()"\n' 8941*cda5da8dSAndroid Build Coastguard Worker ' and "__getitem__()"). Objects that support the ' 8942*cda5da8dSAndroid Build Coastguard Worker 'sequence protocol\n' 8943*cda5da8dSAndroid Build Coastguard Worker ' should only provide "__reversed__()" if they can ' 8944*cda5da8dSAndroid Build Coastguard Worker 'provide an\n' 8945*cda5da8dSAndroid Build Coastguard Worker ' implementation that is more efficient than the one ' 8946*cda5da8dSAndroid Build Coastguard Worker 'provided by\n' 8947*cda5da8dSAndroid Build Coastguard Worker ' "reversed()".\n' 8948*cda5da8dSAndroid Build Coastguard Worker '\n' 8949*cda5da8dSAndroid Build Coastguard Worker 'The membership test operators ("in" and "not in") are ' 8950*cda5da8dSAndroid Build Coastguard Worker 'normally\n' 8951*cda5da8dSAndroid Build Coastguard Worker 'implemented as an iteration through a container. However, ' 8952*cda5da8dSAndroid Build Coastguard Worker 'container\n' 8953*cda5da8dSAndroid Build Coastguard Worker 'objects can supply the following special method with a ' 8954*cda5da8dSAndroid Build Coastguard Worker 'more efficient\n' 8955*cda5da8dSAndroid Build Coastguard Worker 'implementation, which also does not require the object be ' 8956*cda5da8dSAndroid Build Coastguard Worker 'iterable.\n' 8957*cda5da8dSAndroid Build Coastguard Worker '\n' 8958*cda5da8dSAndroid Build Coastguard Worker 'object.__contains__(self, item)\n' 8959*cda5da8dSAndroid Build Coastguard Worker '\n' 8960*cda5da8dSAndroid Build Coastguard Worker ' Called to implement membership test operators. Should ' 8961*cda5da8dSAndroid Build Coastguard Worker 'return true\n' 8962*cda5da8dSAndroid Build Coastguard Worker ' if *item* is in *self*, false otherwise. For mapping ' 8963*cda5da8dSAndroid Build Coastguard Worker 'objects, this\n' 8964*cda5da8dSAndroid Build Coastguard Worker ' should consider the keys of the mapping rather than the ' 8965*cda5da8dSAndroid Build Coastguard Worker 'values or\n' 8966*cda5da8dSAndroid Build Coastguard Worker ' the key-item pairs.\n' 8967*cda5da8dSAndroid Build Coastguard Worker '\n' 8968*cda5da8dSAndroid Build Coastguard Worker ' For objects that don’t define "__contains__()", the ' 8969*cda5da8dSAndroid Build Coastguard Worker 'membership test\n' 8970*cda5da8dSAndroid Build Coastguard Worker ' first tries iteration via "__iter__()", then the old ' 8971*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 8972*cda5da8dSAndroid Build Coastguard Worker ' iteration protocol via "__getitem__()", see this ' 8973*cda5da8dSAndroid Build Coastguard Worker 'section in the\n' 8974*cda5da8dSAndroid Build Coastguard Worker ' language reference.\n', 8975*cda5da8dSAndroid Build Coastguard Worker 'shifting': 'Shifting operations\n' 8976*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 8977*cda5da8dSAndroid Build Coastguard Worker '\n' 8978*cda5da8dSAndroid Build Coastguard Worker 'The shifting operations have lower priority than the arithmetic\n' 8979*cda5da8dSAndroid Build Coastguard Worker 'operations:\n' 8980*cda5da8dSAndroid Build Coastguard Worker '\n' 8981*cda5da8dSAndroid Build Coastguard Worker ' shift_expr ::= a_expr | shift_expr ("<<" | ">>") a_expr\n' 8982*cda5da8dSAndroid Build Coastguard Worker '\n' 8983*cda5da8dSAndroid Build Coastguard Worker 'These operators accept integers as arguments. They shift the ' 8984*cda5da8dSAndroid Build Coastguard Worker 'first\n' 8985*cda5da8dSAndroid Build Coastguard Worker 'argument to the left or right by the number of bits given by ' 8986*cda5da8dSAndroid Build Coastguard Worker 'the\n' 8987*cda5da8dSAndroid Build Coastguard Worker 'second argument.\n' 8988*cda5da8dSAndroid Build Coastguard Worker '\n' 8989*cda5da8dSAndroid Build Coastguard Worker 'This operation can be customized using the special ' 8990*cda5da8dSAndroid Build Coastguard Worker '"__lshift__()" and\n' 8991*cda5da8dSAndroid Build Coastguard Worker '"__rshift__()" methods.\n' 8992*cda5da8dSAndroid Build Coastguard Worker '\n' 8993*cda5da8dSAndroid Build Coastguard Worker 'A right shift by *n* bits is defined as floor division by ' 8994*cda5da8dSAndroid Build Coastguard Worker '"pow(2,n)".\n' 8995*cda5da8dSAndroid Build Coastguard Worker 'A left shift by *n* bits is defined as multiplication with ' 8996*cda5da8dSAndroid Build Coastguard Worker '"pow(2,n)".\n', 8997*cda5da8dSAndroid Build Coastguard Worker 'slicings': 'Slicings\n' 8998*cda5da8dSAndroid Build Coastguard Worker '********\n' 8999*cda5da8dSAndroid Build Coastguard Worker '\n' 9000*cda5da8dSAndroid Build Coastguard Worker 'A slicing selects a range of items in a sequence object (e.g., ' 9001*cda5da8dSAndroid Build Coastguard Worker 'a\n' 9002*cda5da8dSAndroid Build Coastguard Worker 'string, tuple or list). Slicings may be used as expressions or ' 9003*cda5da8dSAndroid Build Coastguard Worker 'as\n' 9004*cda5da8dSAndroid Build Coastguard Worker 'targets in assignment or "del" statements. The syntax for a ' 9005*cda5da8dSAndroid Build Coastguard Worker 'slicing:\n' 9006*cda5da8dSAndroid Build Coastguard Worker '\n' 9007*cda5da8dSAndroid Build Coastguard Worker ' slicing ::= primary "[" slice_list "]"\n' 9008*cda5da8dSAndroid Build Coastguard Worker ' slice_list ::= slice_item ("," slice_item)* [","]\n' 9009*cda5da8dSAndroid Build Coastguard Worker ' slice_item ::= expression | proper_slice\n' 9010*cda5da8dSAndroid Build Coastguard Worker ' proper_slice ::= [lower_bound] ":" [upper_bound] [ ":" ' 9011*cda5da8dSAndroid Build Coastguard Worker '[stride] ]\n' 9012*cda5da8dSAndroid Build Coastguard Worker ' lower_bound ::= expression\n' 9013*cda5da8dSAndroid Build Coastguard Worker ' upper_bound ::= expression\n' 9014*cda5da8dSAndroid Build Coastguard Worker ' stride ::= expression\n' 9015*cda5da8dSAndroid Build Coastguard Worker '\n' 9016*cda5da8dSAndroid Build Coastguard Worker 'There is ambiguity in the formal syntax here: anything that ' 9017*cda5da8dSAndroid Build Coastguard Worker 'looks like\n' 9018*cda5da8dSAndroid Build Coastguard Worker 'an expression list also looks like a slice list, so any ' 9019*cda5da8dSAndroid Build Coastguard Worker 'subscription\n' 9020*cda5da8dSAndroid Build Coastguard Worker 'can be interpreted as a slicing. Rather than further ' 9021*cda5da8dSAndroid Build Coastguard Worker 'complicating the\n' 9022*cda5da8dSAndroid Build Coastguard Worker 'syntax, this is disambiguated by defining that in this case the\n' 9023*cda5da8dSAndroid Build Coastguard Worker 'interpretation as a subscription takes priority over the\n' 9024*cda5da8dSAndroid Build Coastguard Worker 'interpretation as a slicing (this is the case if the slice list\n' 9025*cda5da8dSAndroid Build Coastguard Worker 'contains no proper slice).\n' 9026*cda5da8dSAndroid Build Coastguard Worker '\n' 9027*cda5da8dSAndroid Build Coastguard Worker 'The semantics for a slicing are as follows. The primary is ' 9028*cda5da8dSAndroid Build Coastguard Worker 'indexed\n' 9029*cda5da8dSAndroid Build Coastguard Worker '(using the same "__getitem__()" method as normal subscription) ' 9030*cda5da8dSAndroid Build Coastguard Worker 'with a\n' 9031*cda5da8dSAndroid Build Coastguard Worker 'key that is constructed from the slice list, as follows. If the ' 9032*cda5da8dSAndroid Build Coastguard Worker 'slice\n' 9033*cda5da8dSAndroid Build Coastguard Worker 'list contains at least one comma, the key is a tuple containing ' 9034*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9035*cda5da8dSAndroid Build Coastguard Worker 'conversion of the slice items; otherwise, the conversion of the ' 9036*cda5da8dSAndroid Build Coastguard Worker 'lone\n' 9037*cda5da8dSAndroid Build Coastguard Worker 'slice item is the key. The conversion of a slice item that is ' 9038*cda5da8dSAndroid Build Coastguard Worker 'an\n' 9039*cda5da8dSAndroid Build Coastguard Worker 'expression is that expression. The conversion of a proper slice ' 9040*cda5da8dSAndroid Build Coastguard Worker 'is a\n' 9041*cda5da8dSAndroid Build Coastguard Worker 'slice object (see section The standard type hierarchy) whose ' 9042*cda5da8dSAndroid Build Coastguard Worker '"start",\n' 9043*cda5da8dSAndroid Build Coastguard Worker '"stop" and "step" attributes are the values of the expressions ' 9044*cda5da8dSAndroid Build Coastguard Worker 'given\n' 9045*cda5da8dSAndroid Build Coastguard Worker 'as lower bound, upper bound and stride, respectively, ' 9046*cda5da8dSAndroid Build Coastguard Worker 'substituting\n' 9047*cda5da8dSAndroid Build Coastguard Worker '"None" for missing expressions.\n', 9048*cda5da8dSAndroid Build Coastguard Worker 'specialattrs': 'Special Attributes\n' 9049*cda5da8dSAndroid Build Coastguard Worker '******************\n' 9050*cda5da8dSAndroid Build Coastguard Worker '\n' 9051*cda5da8dSAndroid Build Coastguard Worker 'The implementation adds a few special read-only attributes ' 9052*cda5da8dSAndroid Build Coastguard Worker 'to several\n' 9053*cda5da8dSAndroid Build Coastguard Worker 'object types, where they are relevant. Some of these are ' 9054*cda5da8dSAndroid Build Coastguard Worker 'not reported\n' 9055*cda5da8dSAndroid Build Coastguard Worker 'by the "dir()" built-in function.\n' 9056*cda5da8dSAndroid Build Coastguard Worker '\n' 9057*cda5da8dSAndroid Build Coastguard Worker 'object.__dict__\n' 9058*cda5da8dSAndroid Build Coastguard Worker '\n' 9059*cda5da8dSAndroid Build Coastguard Worker ' A dictionary or other mapping object used to store an ' 9060*cda5da8dSAndroid Build Coastguard Worker 'object’s\n' 9061*cda5da8dSAndroid Build Coastguard Worker ' (writable) attributes.\n' 9062*cda5da8dSAndroid Build Coastguard Worker '\n' 9063*cda5da8dSAndroid Build Coastguard Worker 'instance.__class__\n' 9064*cda5da8dSAndroid Build Coastguard Worker '\n' 9065*cda5da8dSAndroid Build Coastguard Worker ' The class to which a class instance belongs.\n' 9066*cda5da8dSAndroid Build Coastguard Worker '\n' 9067*cda5da8dSAndroid Build Coastguard Worker 'class.__bases__\n' 9068*cda5da8dSAndroid Build Coastguard Worker '\n' 9069*cda5da8dSAndroid Build Coastguard Worker ' The tuple of base classes of a class object.\n' 9070*cda5da8dSAndroid Build Coastguard Worker '\n' 9071*cda5da8dSAndroid Build Coastguard Worker 'definition.__name__\n' 9072*cda5da8dSAndroid Build Coastguard Worker '\n' 9073*cda5da8dSAndroid Build Coastguard Worker ' The name of the class, function, method, descriptor, or ' 9074*cda5da8dSAndroid Build Coastguard Worker 'generator\n' 9075*cda5da8dSAndroid Build Coastguard Worker ' instance.\n' 9076*cda5da8dSAndroid Build Coastguard Worker '\n' 9077*cda5da8dSAndroid Build Coastguard Worker 'definition.__qualname__\n' 9078*cda5da8dSAndroid Build Coastguard Worker '\n' 9079*cda5da8dSAndroid Build Coastguard Worker ' The *qualified name* of the class, function, method, ' 9080*cda5da8dSAndroid Build Coastguard Worker 'descriptor, or\n' 9081*cda5da8dSAndroid Build Coastguard Worker ' generator instance.\n' 9082*cda5da8dSAndroid Build Coastguard Worker '\n' 9083*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.3.\n' 9084*cda5da8dSAndroid Build Coastguard Worker '\n' 9085*cda5da8dSAndroid Build Coastguard Worker 'class.__mro__\n' 9086*cda5da8dSAndroid Build Coastguard Worker '\n' 9087*cda5da8dSAndroid Build Coastguard Worker ' This attribute is a tuple of classes that are considered ' 9088*cda5da8dSAndroid Build Coastguard Worker 'when\n' 9089*cda5da8dSAndroid Build Coastguard Worker ' looking for base classes during method resolution.\n' 9090*cda5da8dSAndroid Build Coastguard Worker '\n' 9091*cda5da8dSAndroid Build Coastguard Worker 'class.mro()\n' 9092*cda5da8dSAndroid Build Coastguard Worker '\n' 9093*cda5da8dSAndroid Build Coastguard Worker ' This method can be overridden by a metaclass to customize ' 9094*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9095*cda5da8dSAndroid Build Coastguard Worker ' method resolution order for its instances. It is called ' 9096*cda5da8dSAndroid Build Coastguard Worker 'at class\n' 9097*cda5da8dSAndroid Build Coastguard Worker ' instantiation, and its result is stored in "__mro__".\n' 9098*cda5da8dSAndroid Build Coastguard Worker '\n' 9099*cda5da8dSAndroid Build Coastguard Worker 'class.__subclasses__()\n' 9100*cda5da8dSAndroid Build Coastguard Worker '\n' 9101*cda5da8dSAndroid Build Coastguard Worker ' Each class keeps a list of weak references to its ' 9102*cda5da8dSAndroid Build Coastguard Worker 'immediate\n' 9103*cda5da8dSAndroid Build Coastguard Worker ' subclasses. This method returns a list of all those ' 9104*cda5da8dSAndroid Build Coastguard Worker 'references\n' 9105*cda5da8dSAndroid Build Coastguard Worker ' still alive. The list is in definition order. Example:\n' 9106*cda5da8dSAndroid Build Coastguard Worker '\n' 9107*cda5da8dSAndroid Build Coastguard Worker ' >>> int.__subclasses__()\n' 9108*cda5da8dSAndroid Build Coastguard Worker " [<class 'bool'>]\n", 9109*cda5da8dSAndroid Build Coastguard Worker 'specialnames': 'Special method names\n' 9110*cda5da8dSAndroid Build Coastguard Worker '********************\n' 9111*cda5da8dSAndroid Build Coastguard Worker '\n' 9112*cda5da8dSAndroid Build Coastguard Worker 'A class can implement certain operations that are invoked by ' 9113*cda5da8dSAndroid Build Coastguard Worker 'special\n' 9114*cda5da8dSAndroid Build Coastguard Worker 'syntax (such as arithmetic operations or subscripting and ' 9115*cda5da8dSAndroid Build Coastguard Worker 'slicing) by\n' 9116*cda5da8dSAndroid Build Coastguard Worker 'defining methods with special names. This is Python’s ' 9117*cda5da8dSAndroid Build Coastguard Worker 'approach to\n' 9118*cda5da8dSAndroid Build Coastguard Worker '*operator overloading*, allowing classes to define their own ' 9119*cda5da8dSAndroid Build Coastguard Worker 'behavior\n' 9120*cda5da8dSAndroid Build Coastguard Worker 'with respect to language operators. For instance, if a ' 9121*cda5da8dSAndroid Build Coastguard Worker 'class defines\n' 9122*cda5da8dSAndroid Build Coastguard Worker 'a method named "__getitem__()", and "x" is an instance of ' 9123*cda5da8dSAndroid Build Coastguard Worker 'this class,\n' 9124*cda5da8dSAndroid Build Coastguard Worker 'then "x[i]" is roughly equivalent to "type(x).__getitem__(x, ' 9125*cda5da8dSAndroid Build Coastguard Worker 'i)".\n' 9126*cda5da8dSAndroid Build Coastguard Worker 'Except where mentioned, attempts to execute an operation ' 9127*cda5da8dSAndroid Build Coastguard Worker 'raise an\n' 9128*cda5da8dSAndroid Build Coastguard Worker 'exception when no appropriate method is defined (typically\n' 9129*cda5da8dSAndroid Build Coastguard Worker '"AttributeError" or "TypeError").\n' 9130*cda5da8dSAndroid Build Coastguard Worker '\n' 9131*cda5da8dSAndroid Build Coastguard Worker 'Setting a special method to "None" indicates that the ' 9132*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 9133*cda5da8dSAndroid Build Coastguard Worker 'operation is not available. For example, if a class sets ' 9134*cda5da8dSAndroid Build Coastguard Worker '"__iter__()"\n' 9135*cda5da8dSAndroid Build Coastguard Worker 'to "None", the class is not iterable, so calling "iter()" on ' 9136*cda5da8dSAndroid Build Coastguard Worker 'its\n' 9137*cda5da8dSAndroid Build Coastguard Worker 'instances will raise a "TypeError" (without falling back to\n' 9138*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()"). [2]\n' 9139*cda5da8dSAndroid Build Coastguard Worker '\n' 9140*cda5da8dSAndroid Build Coastguard Worker 'When implementing a class that emulates any built-in type, ' 9141*cda5da8dSAndroid Build Coastguard Worker 'it is\n' 9142*cda5da8dSAndroid Build Coastguard Worker 'important that the emulation only be implemented to the ' 9143*cda5da8dSAndroid Build Coastguard Worker 'degree that it\n' 9144*cda5da8dSAndroid Build Coastguard Worker 'makes sense for the object being modelled. For example, ' 9145*cda5da8dSAndroid Build Coastguard Worker 'some\n' 9146*cda5da8dSAndroid Build Coastguard Worker 'sequences may work well with retrieval of individual ' 9147*cda5da8dSAndroid Build Coastguard Worker 'elements, but\n' 9148*cda5da8dSAndroid Build Coastguard Worker 'extracting a slice may not make sense. (One example of this ' 9149*cda5da8dSAndroid Build Coastguard Worker 'is the\n' 9150*cda5da8dSAndroid Build Coastguard Worker '"NodeList" interface in the W3C’s Document Object Model.)\n' 9151*cda5da8dSAndroid Build Coastguard Worker '\n' 9152*cda5da8dSAndroid Build Coastguard Worker '\n' 9153*cda5da8dSAndroid Build Coastguard Worker 'Basic customization\n' 9154*cda5da8dSAndroid Build Coastguard Worker '===================\n' 9155*cda5da8dSAndroid Build Coastguard Worker '\n' 9156*cda5da8dSAndroid Build Coastguard Worker 'object.__new__(cls[, ...])\n' 9157*cda5da8dSAndroid Build Coastguard Worker '\n' 9158*cda5da8dSAndroid Build Coastguard Worker ' Called to create a new instance of class *cls*. ' 9159*cda5da8dSAndroid Build Coastguard Worker '"__new__()" is a\n' 9160*cda5da8dSAndroid Build Coastguard Worker ' static method (special-cased so you need not declare it ' 9161*cda5da8dSAndroid Build Coastguard Worker 'as such)\n' 9162*cda5da8dSAndroid Build Coastguard Worker ' that takes the class of which an instance was requested ' 9163*cda5da8dSAndroid Build Coastguard Worker 'as its\n' 9164*cda5da8dSAndroid Build Coastguard Worker ' first argument. The remaining arguments are those passed ' 9165*cda5da8dSAndroid Build Coastguard Worker 'to the\n' 9166*cda5da8dSAndroid Build Coastguard Worker ' object constructor expression (the call to the class). ' 9167*cda5da8dSAndroid Build Coastguard Worker 'The return\n' 9168*cda5da8dSAndroid Build Coastguard Worker ' value of "__new__()" should be the new object instance ' 9169*cda5da8dSAndroid Build Coastguard Worker '(usually an\n' 9170*cda5da8dSAndroid Build Coastguard Worker ' instance of *cls*).\n' 9171*cda5da8dSAndroid Build Coastguard Worker '\n' 9172*cda5da8dSAndroid Build Coastguard Worker ' Typical implementations create a new instance of the ' 9173*cda5da8dSAndroid Build Coastguard Worker 'class by\n' 9174*cda5da8dSAndroid Build Coastguard Worker ' invoking the superclass’s "__new__()" method using\n' 9175*cda5da8dSAndroid Build Coastguard Worker ' "super().__new__(cls[, ...])" with appropriate arguments ' 9176*cda5da8dSAndroid Build Coastguard Worker 'and then\n' 9177*cda5da8dSAndroid Build Coastguard Worker ' modifying the newly created instance as necessary before ' 9178*cda5da8dSAndroid Build Coastguard Worker 'returning\n' 9179*cda5da8dSAndroid Build Coastguard Worker ' it.\n' 9180*cda5da8dSAndroid Build Coastguard Worker '\n' 9181*cda5da8dSAndroid Build Coastguard Worker ' If "__new__()" is invoked during object construction and ' 9182*cda5da8dSAndroid Build Coastguard Worker 'it returns\n' 9183*cda5da8dSAndroid Build Coastguard Worker ' an instance of *cls*, then the new instance’s ' 9184*cda5da8dSAndroid Build Coastguard Worker '"__init__()" method\n' 9185*cda5da8dSAndroid Build Coastguard Worker ' will be invoked like "__init__(self[, ...])", where ' 9186*cda5da8dSAndroid Build Coastguard Worker '*self* is the\n' 9187*cda5da8dSAndroid Build Coastguard Worker ' new instance and the remaining arguments are the same as ' 9188*cda5da8dSAndroid Build Coastguard Worker 'were\n' 9189*cda5da8dSAndroid Build Coastguard Worker ' passed to the object constructor.\n' 9190*cda5da8dSAndroid Build Coastguard Worker '\n' 9191*cda5da8dSAndroid Build Coastguard Worker ' If "__new__()" does not return an instance of *cls*, then ' 9192*cda5da8dSAndroid Build Coastguard Worker 'the new\n' 9193*cda5da8dSAndroid Build Coastguard Worker ' instance’s "__init__()" method will not be invoked.\n' 9194*cda5da8dSAndroid Build Coastguard Worker '\n' 9195*cda5da8dSAndroid Build Coastguard Worker ' "__new__()" is intended mainly to allow subclasses of ' 9196*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 9197*cda5da8dSAndroid Build Coastguard Worker ' types (like int, str, or tuple) to customize instance ' 9198*cda5da8dSAndroid Build Coastguard Worker 'creation. It\n' 9199*cda5da8dSAndroid Build Coastguard Worker ' is also commonly overridden in custom metaclasses in ' 9200*cda5da8dSAndroid Build Coastguard Worker 'order to\n' 9201*cda5da8dSAndroid Build Coastguard Worker ' customize class creation.\n' 9202*cda5da8dSAndroid Build Coastguard Worker '\n' 9203*cda5da8dSAndroid Build Coastguard Worker 'object.__init__(self[, ...])\n' 9204*cda5da8dSAndroid Build Coastguard Worker '\n' 9205*cda5da8dSAndroid Build Coastguard Worker ' Called after the instance has been created (by ' 9206*cda5da8dSAndroid Build Coastguard Worker '"__new__()"), but\n' 9207*cda5da8dSAndroid Build Coastguard Worker ' before it is returned to the caller. The arguments are ' 9208*cda5da8dSAndroid Build Coastguard Worker 'those\n' 9209*cda5da8dSAndroid Build Coastguard Worker ' passed to the class constructor expression. If a base ' 9210*cda5da8dSAndroid Build Coastguard Worker 'class has an\n' 9211*cda5da8dSAndroid Build Coastguard Worker ' "__init__()" method, the derived class’s "__init__()" ' 9212*cda5da8dSAndroid Build Coastguard Worker 'method, if\n' 9213*cda5da8dSAndroid Build Coastguard Worker ' any, must explicitly call it to ensure proper ' 9214*cda5da8dSAndroid Build Coastguard Worker 'initialization of the\n' 9215*cda5da8dSAndroid Build Coastguard Worker ' base class part of the instance; for example:\n' 9216*cda5da8dSAndroid Build Coastguard Worker ' "super().__init__([args...])".\n' 9217*cda5da8dSAndroid Build Coastguard Worker '\n' 9218*cda5da8dSAndroid Build Coastguard Worker ' Because "__new__()" and "__init__()" work together in ' 9219*cda5da8dSAndroid Build Coastguard Worker 'constructing\n' 9220*cda5da8dSAndroid Build Coastguard Worker ' objects ("__new__()" to create it, and "__init__()" to ' 9221*cda5da8dSAndroid Build Coastguard Worker 'customize\n' 9222*cda5da8dSAndroid Build Coastguard Worker ' it), no non-"None" value may be returned by "__init__()"; ' 9223*cda5da8dSAndroid Build Coastguard Worker 'doing so\n' 9224*cda5da8dSAndroid Build Coastguard Worker ' will cause a "TypeError" to be raised at runtime.\n' 9225*cda5da8dSAndroid Build Coastguard Worker '\n' 9226*cda5da8dSAndroid Build Coastguard Worker 'object.__del__(self)\n' 9227*cda5da8dSAndroid Build Coastguard Worker '\n' 9228*cda5da8dSAndroid Build Coastguard Worker ' Called when the instance is about to be destroyed. This ' 9229*cda5da8dSAndroid Build Coastguard Worker 'is also\n' 9230*cda5da8dSAndroid Build Coastguard Worker ' called a finalizer or (improperly) a destructor. If a ' 9231*cda5da8dSAndroid Build Coastguard Worker 'base class\n' 9232*cda5da8dSAndroid Build Coastguard Worker ' has a "__del__()" method, the derived class’s "__del__()" ' 9233*cda5da8dSAndroid Build Coastguard Worker 'method,\n' 9234*cda5da8dSAndroid Build Coastguard Worker ' if any, must explicitly call it to ensure proper deletion ' 9235*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 9236*cda5da8dSAndroid Build Coastguard Worker ' base class part of the instance.\n' 9237*cda5da8dSAndroid Build Coastguard Worker '\n' 9238*cda5da8dSAndroid Build Coastguard Worker ' It is possible (though not recommended!) for the ' 9239*cda5da8dSAndroid Build Coastguard Worker '"__del__()" method\n' 9240*cda5da8dSAndroid Build Coastguard Worker ' to postpone destruction of the instance by creating a new ' 9241*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 9242*cda5da8dSAndroid Build Coastguard Worker ' to it. This is called object *resurrection*. It is\n' 9243*cda5da8dSAndroid Build Coastguard Worker ' implementation-dependent whether "__del__()" is called a ' 9244*cda5da8dSAndroid Build Coastguard Worker 'second\n' 9245*cda5da8dSAndroid Build Coastguard Worker ' time when a resurrected object is about to be destroyed; ' 9246*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9247*cda5da8dSAndroid Build Coastguard Worker ' current *CPython* implementation only calls it once.\n' 9248*cda5da8dSAndroid Build Coastguard Worker '\n' 9249*cda5da8dSAndroid Build Coastguard Worker ' It is not guaranteed that "__del__()" methods are called ' 9250*cda5da8dSAndroid Build Coastguard Worker 'for\n' 9251*cda5da8dSAndroid Build Coastguard Worker ' objects that still exist when the interpreter exits.\n' 9252*cda5da8dSAndroid Build Coastguard Worker '\n' 9253*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 9254*cda5da8dSAndroid Build Coastguard Worker '\n' 9255*cda5da8dSAndroid Build Coastguard Worker ' "del x" doesn’t directly call "x.__del__()" — the ' 9256*cda5da8dSAndroid Build Coastguard Worker 'former\n' 9257*cda5da8dSAndroid Build Coastguard Worker ' decrements the reference count for "x" by one, and the ' 9258*cda5da8dSAndroid Build Coastguard Worker 'latter is\n' 9259*cda5da8dSAndroid Build Coastguard Worker ' only called when "x"’s reference count reaches zero.\n' 9260*cda5da8dSAndroid Build Coastguard Worker '\n' 9261*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** It is possible for a ' 9262*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 9263*cda5da8dSAndroid Build Coastguard Worker ' cycle to prevent the reference count of an object from ' 9264*cda5da8dSAndroid Build Coastguard Worker 'going to\n' 9265*cda5da8dSAndroid Build Coastguard Worker ' zero. In this case, the cycle will be later detected and ' 9266*cda5da8dSAndroid Build Coastguard Worker 'deleted\n' 9267*cda5da8dSAndroid Build Coastguard Worker ' by the *cyclic garbage collector*. A common cause of ' 9268*cda5da8dSAndroid Build Coastguard Worker 'reference\n' 9269*cda5da8dSAndroid Build Coastguard Worker ' cycles is when an exception has been caught in a local ' 9270*cda5da8dSAndroid Build Coastguard Worker 'variable.\n' 9271*cda5da8dSAndroid Build Coastguard Worker ' The frame’s locals then reference the exception, which ' 9272*cda5da8dSAndroid Build Coastguard Worker 'references\n' 9273*cda5da8dSAndroid Build Coastguard Worker ' its own traceback, which references the locals of all ' 9274*cda5da8dSAndroid Build Coastguard Worker 'frames caught\n' 9275*cda5da8dSAndroid Build Coastguard Worker ' in the traceback.\n' 9276*cda5da8dSAndroid Build Coastguard Worker '\n' 9277*cda5da8dSAndroid Build Coastguard Worker ' See also: Documentation for the "gc" module.\n' 9278*cda5da8dSAndroid Build Coastguard Worker '\n' 9279*cda5da8dSAndroid Build Coastguard Worker ' Warning:\n' 9280*cda5da8dSAndroid Build Coastguard Worker '\n' 9281*cda5da8dSAndroid Build Coastguard Worker ' Due to the precarious circumstances under which ' 9282*cda5da8dSAndroid Build Coastguard Worker '"__del__()"\n' 9283*cda5da8dSAndroid Build Coastguard Worker ' methods are invoked, exceptions that occur during their ' 9284*cda5da8dSAndroid Build Coastguard Worker 'execution\n' 9285*cda5da8dSAndroid Build Coastguard Worker ' are ignored, and a warning is printed to "sys.stderr" ' 9286*cda5da8dSAndroid Build Coastguard Worker 'instead.\n' 9287*cda5da8dSAndroid Build Coastguard Worker ' In particular:\n' 9288*cda5da8dSAndroid Build Coastguard Worker '\n' 9289*cda5da8dSAndroid Build Coastguard Worker ' * "__del__()" can be invoked when arbitrary code is ' 9290*cda5da8dSAndroid Build Coastguard Worker 'being\n' 9291*cda5da8dSAndroid Build Coastguard Worker ' executed, including from any arbitrary thread. If ' 9292*cda5da8dSAndroid Build Coastguard Worker '"__del__()"\n' 9293*cda5da8dSAndroid Build Coastguard Worker ' needs to take a lock or invoke any other blocking ' 9294*cda5da8dSAndroid Build Coastguard Worker 'resource, it\n' 9295*cda5da8dSAndroid Build Coastguard Worker ' may deadlock as the resource may already be taken by ' 9296*cda5da8dSAndroid Build Coastguard Worker 'the code\n' 9297*cda5da8dSAndroid Build Coastguard Worker ' that gets interrupted to execute "__del__()".\n' 9298*cda5da8dSAndroid Build Coastguard Worker '\n' 9299*cda5da8dSAndroid Build Coastguard Worker ' * "__del__()" can be executed during interpreter ' 9300*cda5da8dSAndroid Build Coastguard Worker 'shutdown. As a\n' 9301*cda5da8dSAndroid Build Coastguard Worker ' consequence, the global variables it needs to access ' 9302*cda5da8dSAndroid Build Coastguard Worker '(including\n' 9303*cda5da8dSAndroid Build Coastguard Worker ' other modules) may already have been deleted or set ' 9304*cda5da8dSAndroid Build Coastguard Worker 'to "None".\n' 9305*cda5da8dSAndroid Build Coastguard Worker ' Python guarantees that globals whose name begins with ' 9306*cda5da8dSAndroid Build Coastguard Worker 'a single\n' 9307*cda5da8dSAndroid Build Coastguard Worker ' underscore are deleted from their module before other ' 9308*cda5da8dSAndroid Build Coastguard Worker 'globals\n' 9309*cda5da8dSAndroid Build Coastguard Worker ' are deleted; if no other references to such globals ' 9310*cda5da8dSAndroid Build Coastguard Worker 'exist, this\n' 9311*cda5da8dSAndroid Build Coastguard Worker ' may help in assuring that imported modules are still ' 9312*cda5da8dSAndroid Build Coastguard Worker 'available\n' 9313*cda5da8dSAndroid Build Coastguard Worker ' at the time when the "__del__()" method is called.\n' 9314*cda5da8dSAndroid Build Coastguard Worker '\n' 9315*cda5da8dSAndroid Build Coastguard Worker 'object.__repr__(self)\n' 9316*cda5da8dSAndroid Build Coastguard Worker '\n' 9317*cda5da8dSAndroid Build Coastguard Worker ' Called by the "repr()" built-in function to compute the ' 9318*cda5da8dSAndroid Build Coastguard Worker '“official”\n' 9319*cda5da8dSAndroid Build Coastguard Worker ' string representation of an object. If at all possible, ' 9320*cda5da8dSAndroid Build Coastguard Worker 'this\n' 9321*cda5da8dSAndroid Build Coastguard Worker ' should look like a valid Python expression that could be ' 9322*cda5da8dSAndroid Build Coastguard Worker 'used to\n' 9323*cda5da8dSAndroid Build Coastguard Worker ' recreate an object with the same value (given an ' 9324*cda5da8dSAndroid Build Coastguard Worker 'appropriate\n' 9325*cda5da8dSAndroid Build Coastguard Worker ' environment). If this is not possible, a string of the ' 9326*cda5da8dSAndroid Build Coastguard Worker 'form\n' 9327*cda5da8dSAndroid Build Coastguard Worker ' "<...some useful description...>" should be returned. The ' 9328*cda5da8dSAndroid Build Coastguard Worker 'return\n' 9329*cda5da8dSAndroid Build Coastguard Worker ' value must be a string object. If a class defines ' 9330*cda5da8dSAndroid Build Coastguard Worker '"__repr__()" but\n' 9331*cda5da8dSAndroid Build Coastguard Worker ' not "__str__()", then "__repr__()" is also used when an ' 9332*cda5da8dSAndroid Build Coastguard Worker '“informal”\n' 9333*cda5da8dSAndroid Build Coastguard Worker ' string representation of instances of that class is ' 9334*cda5da8dSAndroid Build Coastguard Worker 'required.\n' 9335*cda5da8dSAndroid Build Coastguard Worker '\n' 9336*cda5da8dSAndroid Build Coastguard Worker ' This is typically used for debugging, so it is important ' 9337*cda5da8dSAndroid Build Coastguard Worker 'that the\n' 9338*cda5da8dSAndroid Build Coastguard Worker ' representation is information-rich and unambiguous.\n' 9339*cda5da8dSAndroid Build Coastguard Worker '\n' 9340*cda5da8dSAndroid Build Coastguard Worker 'object.__str__(self)\n' 9341*cda5da8dSAndroid Build Coastguard Worker '\n' 9342*cda5da8dSAndroid Build Coastguard Worker ' Called by "str(object)" and the built-in functions ' 9343*cda5da8dSAndroid Build Coastguard Worker '"format()" and\n' 9344*cda5da8dSAndroid Build Coastguard Worker ' "print()" to compute the “informal” or nicely printable ' 9345*cda5da8dSAndroid Build Coastguard Worker 'string\n' 9346*cda5da8dSAndroid Build Coastguard Worker ' representation of an object. The return value must be a ' 9347*cda5da8dSAndroid Build Coastguard Worker 'string\n' 9348*cda5da8dSAndroid Build Coastguard Worker ' object.\n' 9349*cda5da8dSAndroid Build Coastguard Worker '\n' 9350*cda5da8dSAndroid Build Coastguard Worker ' This method differs from "object.__repr__()" in that ' 9351*cda5da8dSAndroid Build Coastguard Worker 'there is no\n' 9352*cda5da8dSAndroid Build Coastguard Worker ' expectation that "__str__()" return a valid Python ' 9353*cda5da8dSAndroid Build Coastguard Worker 'expression: a\n' 9354*cda5da8dSAndroid Build Coastguard Worker ' more convenient or concise representation can be used.\n' 9355*cda5da8dSAndroid Build Coastguard Worker '\n' 9356*cda5da8dSAndroid Build Coastguard Worker ' The default implementation defined by the built-in type ' 9357*cda5da8dSAndroid Build Coastguard Worker '"object"\n' 9358*cda5da8dSAndroid Build Coastguard Worker ' calls "object.__repr__()".\n' 9359*cda5da8dSAndroid Build Coastguard Worker '\n' 9360*cda5da8dSAndroid Build Coastguard Worker 'object.__bytes__(self)\n' 9361*cda5da8dSAndroid Build Coastguard Worker '\n' 9362*cda5da8dSAndroid Build Coastguard Worker ' Called by bytes to compute a byte-string representation ' 9363*cda5da8dSAndroid Build Coastguard Worker 'of an\n' 9364*cda5da8dSAndroid Build Coastguard Worker ' object. This should return a "bytes" object.\n' 9365*cda5da8dSAndroid Build Coastguard Worker '\n' 9366*cda5da8dSAndroid Build Coastguard Worker 'object.__format__(self, format_spec)\n' 9367*cda5da8dSAndroid Build Coastguard Worker '\n' 9368*cda5da8dSAndroid Build Coastguard Worker ' Called by the "format()" built-in function, and by ' 9369*cda5da8dSAndroid Build Coastguard Worker 'extension,\n' 9370*cda5da8dSAndroid Build Coastguard Worker ' evaluation of formatted string literals and the ' 9371*cda5da8dSAndroid Build Coastguard Worker '"str.format()"\n' 9372*cda5da8dSAndroid Build Coastguard Worker ' method, to produce a “formatted” string representation of ' 9373*cda5da8dSAndroid Build Coastguard Worker 'an\n' 9374*cda5da8dSAndroid Build Coastguard Worker ' object. The *format_spec* argument is a string that ' 9375*cda5da8dSAndroid Build Coastguard Worker 'contains a\n' 9376*cda5da8dSAndroid Build Coastguard Worker ' description of the formatting options desired. The ' 9377*cda5da8dSAndroid Build Coastguard Worker 'interpretation\n' 9378*cda5da8dSAndroid Build Coastguard Worker ' of the *format_spec* argument is up to the type ' 9379*cda5da8dSAndroid Build Coastguard Worker 'implementing\n' 9380*cda5da8dSAndroid Build Coastguard Worker ' "__format__()", however most classes will either ' 9381*cda5da8dSAndroid Build Coastguard Worker 'delegate\n' 9382*cda5da8dSAndroid Build Coastguard Worker ' formatting to one of the built-in types, or use a ' 9383*cda5da8dSAndroid Build Coastguard Worker 'similar\n' 9384*cda5da8dSAndroid Build Coastguard Worker ' formatting option syntax.\n' 9385*cda5da8dSAndroid Build Coastguard Worker '\n' 9386*cda5da8dSAndroid Build Coastguard Worker ' See Format Specification Mini-Language for a description ' 9387*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 9388*cda5da8dSAndroid Build Coastguard Worker ' standard formatting syntax.\n' 9389*cda5da8dSAndroid Build Coastguard Worker '\n' 9390*cda5da8dSAndroid Build Coastguard Worker ' The return value must be a string object.\n' 9391*cda5da8dSAndroid Build Coastguard Worker '\n' 9392*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.4: The __format__ method of "object" ' 9393*cda5da8dSAndroid Build Coastguard Worker 'itself\n' 9394*cda5da8dSAndroid Build Coastguard Worker ' raises a "TypeError" if passed any non-empty string.\n' 9395*cda5da8dSAndroid Build Coastguard Worker '\n' 9396*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: "object.__format__(x, \'\')" is ' 9397*cda5da8dSAndroid Build Coastguard Worker 'now\n' 9398*cda5da8dSAndroid Build Coastguard Worker ' equivalent to "str(x)" rather than "format(str(x), ' 9399*cda5da8dSAndroid Build Coastguard Worker '\'\')".\n' 9400*cda5da8dSAndroid Build Coastguard Worker '\n' 9401*cda5da8dSAndroid Build Coastguard Worker 'object.__lt__(self, other)\n' 9402*cda5da8dSAndroid Build Coastguard Worker 'object.__le__(self, other)\n' 9403*cda5da8dSAndroid Build Coastguard Worker 'object.__eq__(self, other)\n' 9404*cda5da8dSAndroid Build Coastguard Worker 'object.__ne__(self, other)\n' 9405*cda5da8dSAndroid Build Coastguard Worker 'object.__gt__(self, other)\n' 9406*cda5da8dSAndroid Build Coastguard Worker 'object.__ge__(self, other)\n' 9407*cda5da8dSAndroid Build Coastguard Worker '\n' 9408*cda5da8dSAndroid Build Coastguard Worker ' These are the so-called “rich comparison” methods. The\n' 9409*cda5da8dSAndroid Build Coastguard Worker ' correspondence between operator symbols and method names ' 9410*cda5da8dSAndroid Build Coastguard Worker 'is as\n' 9411*cda5da8dSAndroid Build Coastguard Worker ' follows: "x<y" calls "x.__lt__(y)", "x<=y" calls ' 9412*cda5da8dSAndroid Build Coastguard Worker '"x.__le__(y)",\n' 9413*cda5da8dSAndroid Build Coastguard Worker ' "x==y" calls "x.__eq__(y)", "x!=y" calls "x.__ne__(y)", ' 9414*cda5da8dSAndroid Build Coastguard Worker '"x>y" calls\n' 9415*cda5da8dSAndroid Build Coastguard Worker ' "x.__gt__(y)", and "x>=y" calls "x.__ge__(y)".\n' 9416*cda5da8dSAndroid Build Coastguard Worker '\n' 9417*cda5da8dSAndroid Build Coastguard Worker ' A rich comparison method may return the singleton ' 9418*cda5da8dSAndroid Build Coastguard Worker '"NotImplemented"\n' 9419*cda5da8dSAndroid Build Coastguard Worker ' if it does not implement the operation for a given pair ' 9420*cda5da8dSAndroid Build Coastguard Worker 'of\n' 9421*cda5da8dSAndroid Build Coastguard Worker ' arguments. By convention, "False" and "True" are returned ' 9422*cda5da8dSAndroid Build Coastguard Worker 'for a\n' 9423*cda5da8dSAndroid Build Coastguard Worker ' successful comparison. However, these methods can return ' 9424*cda5da8dSAndroid Build Coastguard Worker 'any value,\n' 9425*cda5da8dSAndroid Build Coastguard Worker ' so if the comparison operator is used in a Boolean ' 9426*cda5da8dSAndroid Build Coastguard Worker 'context (e.g.,\n' 9427*cda5da8dSAndroid Build Coastguard Worker ' in the condition of an "if" statement), Python will call ' 9428*cda5da8dSAndroid Build Coastguard Worker '"bool()"\n' 9429*cda5da8dSAndroid Build Coastguard Worker ' on the value to determine if the result is true or ' 9430*cda5da8dSAndroid Build Coastguard Worker 'false.\n' 9431*cda5da8dSAndroid Build Coastguard Worker '\n' 9432*cda5da8dSAndroid Build Coastguard Worker ' By default, "object" implements "__eq__()" by using "is", ' 9433*cda5da8dSAndroid Build Coastguard Worker 'returning\n' 9434*cda5da8dSAndroid Build Coastguard Worker ' "NotImplemented" in the case of a false comparison: "True ' 9435*cda5da8dSAndroid Build Coastguard Worker 'if x is y\n' 9436*cda5da8dSAndroid Build Coastguard Worker ' else NotImplemented". For "__ne__()", by default it ' 9437*cda5da8dSAndroid Build Coastguard Worker 'delegates to\n' 9438*cda5da8dSAndroid Build Coastguard Worker ' "__eq__()" and inverts the result unless it is ' 9439*cda5da8dSAndroid Build Coastguard Worker '"NotImplemented".\n' 9440*cda5da8dSAndroid Build Coastguard Worker ' There are no other implied relationships among the ' 9441*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 9442*cda5da8dSAndroid Build Coastguard Worker ' operators or default implementations; for example, the ' 9443*cda5da8dSAndroid Build Coastguard Worker 'truth of\n' 9444*cda5da8dSAndroid Build Coastguard Worker ' "(x<y or x==y)" does not imply "x<=y". To automatically ' 9445*cda5da8dSAndroid Build Coastguard Worker 'generate\n' 9446*cda5da8dSAndroid Build Coastguard Worker ' ordering operations from a single root operation, see\n' 9447*cda5da8dSAndroid Build Coastguard Worker ' "functools.total_ordering()".\n' 9448*cda5da8dSAndroid Build Coastguard Worker '\n' 9449*cda5da8dSAndroid Build Coastguard Worker ' See the paragraph on "__hash__()" for some important ' 9450*cda5da8dSAndroid Build Coastguard Worker 'notes on\n' 9451*cda5da8dSAndroid Build Coastguard Worker ' creating *hashable* objects which support custom ' 9452*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 9453*cda5da8dSAndroid Build Coastguard Worker ' operations and are usable as dictionary keys.\n' 9454*cda5da8dSAndroid Build Coastguard Worker '\n' 9455*cda5da8dSAndroid Build Coastguard Worker ' There are no swapped-argument versions of these methods ' 9456*cda5da8dSAndroid Build Coastguard Worker '(to be used\n' 9457*cda5da8dSAndroid Build Coastguard Worker ' when the left argument does not support the operation but ' 9458*cda5da8dSAndroid Build Coastguard Worker 'the right\n' 9459*cda5da8dSAndroid Build Coastguard Worker ' argument does); rather, "__lt__()" and "__gt__()" are ' 9460*cda5da8dSAndroid Build Coastguard Worker 'each other’s\n' 9461*cda5da8dSAndroid Build Coastguard Worker ' reflection, "__le__()" and "__ge__()" are each other’s ' 9462*cda5da8dSAndroid Build Coastguard Worker 'reflection,\n' 9463*cda5da8dSAndroid Build Coastguard Worker ' and "__eq__()" and "__ne__()" are their own reflection. ' 9464*cda5da8dSAndroid Build Coastguard Worker 'If the\n' 9465*cda5da8dSAndroid Build Coastguard Worker ' operands are of different types, and right operand’s type ' 9466*cda5da8dSAndroid Build Coastguard Worker 'is a\n' 9467*cda5da8dSAndroid Build Coastguard Worker ' direct or indirect subclass of the left operand’s type, ' 9468*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9469*cda5da8dSAndroid Build Coastguard Worker ' reflected method of the right operand has priority, ' 9470*cda5da8dSAndroid Build Coastguard Worker 'otherwise the\n' 9471*cda5da8dSAndroid Build Coastguard Worker ' left operand’s method has priority. Virtual subclassing ' 9472*cda5da8dSAndroid Build Coastguard Worker 'is not\n' 9473*cda5da8dSAndroid Build Coastguard Worker ' considered.\n' 9474*cda5da8dSAndroid Build Coastguard Worker '\n' 9475*cda5da8dSAndroid Build Coastguard Worker 'object.__hash__(self)\n' 9476*cda5da8dSAndroid Build Coastguard Worker '\n' 9477*cda5da8dSAndroid Build Coastguard Worker ' Called by built-in function "hash()" and for operations ' 9478*cda5da8dSAndroid Build Coastguard Worker 'on members\n' 9479*cda5da8dSAndroid Build Coastguard Worker ' of hashed collections including "set", "frozenset", and ' 9480*cda5da8dSAndroid Build Coastguard Worker '"dict".\n' 9481*cda5da8dSAndroid Build Coastguard Worker ' The "__hash__()" method should return an integer. The ' 9482*cda5da8dSAndroid Build Coastguard Worker 'only required\n' 9483*cda5da8dSAndroid Build Coastguard Worker ' property is that objects which compare equal have the ' 9484*cda5da8dSAndroid Build Coastguard Worker 'same hash\n' 9485*cda5da8dSAndroid Build Coastguard Worker ' value; it is advised to mix together the hash values of ' 9486*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9487*cda5da8dSAndroid Build Coastguard Worker ' components of the object that also play a part in ' 9488*cda5da8dSAndroid Build Coastguard Worker 'comparison of\n' 9489*cda5da8dSAndroid Build Coastguard Worker ' objects by packing them into a tuple and hashing the ' 9490*cda5da8dSAndroid Build Coastguard Worker 'tuple.\n' 9491*cda5da8dSAndroid Build Coastguard Worker ' Example:\n' 9492*cda5da8dSAndroid Build Coastguard Worker '\n' 9493*cda5da8dSAndroid Build Coastguard Worker ' def __hash__(self):\n' 9494*cda5da8dSAndroid Build Coastguard Worker ' return hash((self.name, self.nick, self.color))\n' 9495*cda5da8dSAndroid Build Coastguard Worker '\n' 9496*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 9497*cda5da8dSAndroid Build Coastguard Worker '\n' 9498*cda5da8dSAndroid Build Coastguard Worker ' "hash()" truncates the value returned from an object’s ' 9499*cda5da8dSAndroid Build Coastguard Worker 'custom\n' 9500*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()" method to the size of a "Py_ssize_t". ' 9501*cda5da8dSAndroid Build Coastguard Worker 'This is\n' 9502*cda5da8dSAndroid Build Coastguard Worker ' typically 8 bytes on 64-bit builds and 4 bytes on ' 9503*cda5da8dSAndroid Build Coastguard Worker '32-bit builds.\n' 9504*cda5da8dSAndroid Build Coastguard Worker ' If an object’s "__hash__()" must interoperate on ' 9505*cda5da8dSAndroid Build Coastguard Worker 'builds of\n' 9506*cda5da8dSAndroid Build Coastguard Worker ' different bit sizes, be sure to check the width on all ' 9507*cda5da8dSAndroid Build Coastguard Worker 'supported\n' 9508*cda5da8dSAndroid Build Coastguard Worker ' builds. An easy way to do this is with "python -c ' 9509*cda5da8dSAndroid Build Coastguard Worker '"import sys;\n' 9510*cda5da8dSAndroid Build Coastguard Worker ' print(sys.hash_info.width)"".\n' 9511*cda5da8dSAndroid Build Coastguard Worker '\n' 9512*cda5da8dSAndroid Build Coastguard Worker ' If a class does not define an "__eq__()" method it should ' 9513*cda5da8dSAndroid Build Coastguard Worker 'not\n' 9514*cda5da8dSAndroid Build Coastguard Worker ' define a "__hash__()" operation either; if it defines ' 9515*cda5da8dSAndroid Build Coastguard Worker '"__eq__()"\n' 9516*cda5da8dSAndroid Build Coastguard Worker ' but not "__hash__()", its instances will not be usable as ' 9517*cda5da8dSAndroid Build Coastguard Worker 'items in\n' 9518*cda5da8dSAndroid Build Coastguard Worker ' hashable collections. If a class defines mutable objects ' 9519*cda5da8dSAndroid Build Coastguard Worker 'and\n' 9520*cda5da8dSAndroid Build Coastguard Worker ' implements an "__eq__()" method, it should not implement\n' 9521*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()", since the implementation of *hashable* ' 9522*cda5da8dSAndroid Build Coastguard Worker 'collections\n' 9523*cda5da8dSAndroid Build Coastguard Worker ' requires that a key’s hash value is immutable (if the ' 9524*cda5da8dSAndroid Build Coastguard Worker 'object’s hash\n' 9525*cda5da8dSAndroid Build Coastguard Worker ' value changes, it will be in the wrong hash bucket).\n' 9526*cda5da8dSAndroid Build Coastguard Worker '\n' 9527*cda5da8dSAndroid Build Coastguard Worker ' User-defined classes have "__eq__()" and "__hash__()" ' 9528*cda5da8dSAndroid Build Coastguard Worker 'methods by\n' 9529*cda5da8dSAndroid Build Coastguard Worker ' default; with them, all objects compare unequal (except ' 9530*cda5da8dSAndroid Build Coastguard Worker 'with\n' 9531*cda5da8dSAndroid Build Coastguard Worker ' themselves) and "x.__hash__()" returns an appropriate ' 9532*cda5da8dSAndroid Build Coastguard Worker 'value such\n' 9533*cda5da8dSAndroid Build Coastguard Worker ' that "x == y" implies both that "x is y" and "hash(x) == ' 9534*cda5da8dSAndroid Build Coastguard Worker 'hash(y)".\n' 9535*cda5da8dSAndroid Build Coastguard Worker '\n' 9536*cda5da8dSAndroid Build Coastguard Worker ' A class that overrides "__eq__()" and does not define ' 9537*cda5da8dSAndroid Build Coastguard Worker '"__hash__()"\n' 9538*cda5da8dSAndroid Build Coastguard Worker ' will have its "__hash__()" implicitly set to "None". ' 9539*cda5da8dSAndroid Build Coastguard Worker 'When the\n' 9540*cda5da8dSAndroid Build Coastguard Worker ' "__hash__()" method of a class is "None", instances of ' 9541*cda5da8dSAndroid Build Coastguard Worker 'the class\n' 9542*cda5da8dSAndroid Build Coastguard Worker ' will raise an appropriate "TypeError" when a program ' 9543*cda5da8dSAndroid Build Coastguard Worker 'attempts to\n' 9544*cda5da8dSAndroid Build Coastguard Worker ' retrieve their hash value, and will also be correctly ' 9545*cda5da8dSAndroid Build Coastguard Worker 'identified as\n' 9546*cda5da8dSAndroid Build Coastguard Worker ' unhashable when checking "isinstance(obj,\n' 9547*cda5da8dSAndroid Build Coastguard Worker ' collections.abc.Hashable)".\n' 9548*cda5da8dSAndroid Build Coastguard Worker '\n' 9549*cda5da8dSAndroid Build Coastguard Worker ' If a class that overrides "__eq__()" needs to retain the\n' 9550*cda5da8dSAndroid Build Coastguard Worker ' implementation of "__hash__()" from a parent class, the ' 9551*cda5da8dSAndroid Build Coastguard Worker 'interpreter\n' 9552*cda5da8dSAndroid Build Coastguard Worker ' must be told this explicitly by setting "__hash__ =\n' 9553*cda5da8dSAndroid Build Coastguard Worker ' <ParentClass>.__hash__".\n' 9554*cda5da8dSAndroid Build Coastguard Worker '\n' 9555*cda5da8dSAndroid Build Coastguard Worker ' If a class that does not override "__eq__()" wishes to ' 9556*cda5da8dSAndroid Build Coastguard Worker 'suppress\n' 9557*cda5da8dSAndroid Build Coastguard Worker ' hash support, it should include "__hash__ = None" in the ' 9558*cda5da8dSAndroid Build Coastguard Worker 'class\n' 9559*cda5da8dSAndroid Build Coastguard Worker ' definition. A class which defines its own "__hash__()" ' 9560*cda5da8dSAndroid Build Coastguard Worker 'that\n' 9561*cda5da8dSAndroid Build Coastguard Worker ' explicitly raises a "TypeError" would be incorrectly ' 9562*cda5da8dSAndroid Build Coastguard Worker 'identified as\n' 9563*cda5da8dSAndroid Build Coastguard Worker ' hashable by an "isinstance(obj, ' 9564*cda5da8dSAndroid Build Coastguard Worker 'collections.abc.Hashable)" call.\n' 9565*cda5da8dSAndroid Build Coastguard Worker '\n' 9566*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 9567*cda5da8dSAndroid Build Coastguard Worker '\n' 9568*cda5da8dSAndroid Build Coastguard Worker ' By default, the "__hash__()" values of str and bytes ' 9569*cda5da8dSAndroid Build Coastguard Worker 'objects are\n' 9570*cda5da8dSAndroid Build Coastguard Worker ' “salted” with an unpredictable random value. Although ' 9571*cda5da8dSAndroid Build Coastguard Worker 'they\n' 9572*cda5da8dSAndroid Build Coastguard Worker ' remain constant within an individual Python process, ' 9573*cda5da8dSAndroid Build Coastguard Worker 'they are not\n' 9574*cda5da8dSAndroid Build Coastguard Worker ' predictable between repeated invocations of Python.This ' 9575*cda5da8dSAndroid Build Coastguard Worker 'is\n' 9576*cda5da8dSAndroid Build Coastguard Worker ' intended to provide protection against a ' 9577*cda5da8dSAndroid Build Coastguard Worker 'denial-of-service caused\n' 9578*cda5da8dSAndroid Build Coastguard Worker ' by carefully chosen inputs that exploit the worst case\n' 9579*cda5da8dSAndroid Build Coastguard Worker ' performance of a dict insertion, O(n^2) complexity. ' 9580*cda5da8dSAndroid Build Coastguard Worker 'See\n' 9581*cda5da8dSAndroid Build Coastguard Worker ' http://ocert.org/advisories/ocert-2011-003.html for\n' 9582*cda5da8dSAndroid Build Coastguard Worker ' details.Changing hash values affects the iteration ' 9583*cda5da8dSAndroid Build Coastguard Worker 'order of sets.\n' 9584*cda5da8dSAndroid Build Coastguard Worker ' Python has never made guarantees about this ordering ' 9585*cda5da8dSAndroid Build Coastguard Worker '(and it\n' 9586*cda5da8dSAndroid Build Coastguard Worker ' typically varies between 32-bit and 64-bit builds).See ' 9587*cda5da8dSAndroid Build Coastguard Worker 'also\n' 9588*cda5da8dSAndroid Build Coastguard Worker ' "PYTHONHASHSEED".\n' 9589*cda5da8dSAndroid Build Coastguard Worker '\n' 9590*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.3: Hash randomization is enabled by ' 9591*cda5da8dSAndroid Build Coastguard Worker 'default.\n' 9592*cda5da8dSAndroid Build Coastguard Worker '\n' 9593*cda5da8dSAndroid Build Coastguard Worker 'object.__bool__(self)\n' 9594*cda5da8dSAndroid Build Coastguard Worker '\n' 9595*cda5da8dSAndroid Build Coastguard Worker ' Called to implement truth value testing and the built-in ' 9596*cda5da8dSAndroid Build Coastguard Worker 'operation\n' 9597*cda5da8dSAndroid Build Coastguard Worker ' "bool()"; should return "False" or "True". When this ' 9598*cda5da8dSAndroid Build Coastguard Worker 'method is not\n' 9599*cda5da8dSAndroid Build Coastguard Worker ' defined, "__len__()" is called, if it is defined, and the ' 9600*cda5da8dSAndroid Build Coastguard Worker 'object is\n' 9601*cda5da8dSAndroid Build Coastguard Worker ' considered true if its result is nonzero. If a class ' 9602*cda5da8dSAndroid Build Coastguard Worker 'defines\n' 9603*cda5da8dSAndroid Build Coastguard Worker ' neither "__len__()" nor "__bool__()", all its instances ' 9604*cda5da8dSAndroid Build Coastguard Worker 'are\n' 9605*cda5da8dSAndroid Build Coastguard Worker ' considered true.\n' 9606*cda5da8dSAndroid Build Coastguard Worker '\n' 9607*cda5da8dSAndroid Build Coastguard Worker '\n' 9608*cda5da8dSAndroid Build Coastguard Worker 'Customizing attribute access\n' 9609*cda5da8dSAndroid Build Coastguard Worker '============================\n' 9610*cda5da8dSAndroid Build Coastguard Worker '\n' 9611*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to customize the ' 9612*cda5da8dSAndroid Build Coastguard Worker 'meaning of\n' 9613*cda5da8dSAndroid Build Coastguard Worker 'attribute access (use of, assignment to, or deletion of ' 9614*cda5da8dSAndroid Build Coastguard Worker '"x.name") for\n' 9615*cda5da8dSAndroid Build Coastguard Worker 'class instances.\n' 9616*cda5da8dSAndroid Build Coastguard Worker '\n' 9617*cda5da8dSAndroid Build Coastguard Worker 'object.__getattr__(self, name)\n' 9618*cda5da8dSAndroid Build Coastguard Worker '\n' 9619*cda5da8dSAndroid Build Coastguard Worker ' Called when the default attribute access fails with an\n' 9620*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" (either "__getattribute__()" raises an\n' 9621*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" because *name* is not an instance ' 9622*cda5da8dSAndroid Build Coastguard Worker 'attribute or an\n' 9623*cda5da8dSAndroid Build Coastguard Worker ' attribute in the class tree for "self"; or "__get__()" of ' 9624*cda5da8dSAndroid Build Coastguard Worker 'a *name*\n' 9625*cda5da8dSAndroid Build Coastguard Worker ' property raises "AttributeError"). This method should ' 9626*cda5da8dSAndroid Build Coastguard Worker 'either\n' 9627*cda5da8dSAndroid Build Coastguard Worker ' return the (computed) attribute value or raise an ' 9628*cda5da8dSAndroid Build Coastguard Worker '"AttributeError"\n' 9629*cda5da8dSAndroid Build Coastguard Worker ' exception.\n' 9630*cda5da8dSAndroid Build Coastguard Worker '\n' 9631*cda5da8dSAndroid Build Coastguard Worker ' Note that if the attribute is found through the normal ' 9632*cda5da8dSAndroid Build Coastguard Worker 'mechanism,\n' 9633*cda5da8dSAndroid Build Coastguard Worker ' "__getattr__()" is not called. (This is an intentional ' 9634*cda5da8dSAndroid Build Coastguard Worker 'asymmetry\n' 9635*cda5da8dSAndroid Build Coastguard Worker ' between "__getattr__()" and "__setattr__()".) This is ' 9636*cda5da8dSAndroid Build Coastguard Worker 'done both for\n' 9637*cda5da8dSAndroid Build Coastguard Worker ' efficiency reasons and because otherwise "__getattr__()" ' 9638*cda5da8dSAndroid Build Coastguard Worker 'would have\n' 9639*cda5da8dSAndroid Build Coastguard Worker ' no way to access other attributes of the instance. Note ' 9640*cda5da8dSAndroid Build Coastguard Worker 'that at\n' 9641*cda5da8dSAndroid Build Coastguard Worker ' least for instance variables, you can fake total control ' 9642*cda5da8dSAndroid Build Coastguard Worker 'by not\n' 9643*cda5da8dSAndroid Build Coastguard Worker ' inserting any values in the instance attribute dictionary ' 9644*cda5da8dSAndroid Build Coastguard Worker '(but\n' 9645*cda5da8dSAndroid Build Coastguard Worker ' instead inserting them in another object). See the\n' 9646*cda5da8dSAndroid Build Coastguard Worker ' "__getattribute__()" method below for a way to actually ' 9647*cda5da8dSAndroid Build Coastguard Worker 'get total\n' 9648*cda5da8dSAndroid Build Coastguard Worker ' control over attribute access.\n' 9649*cda5da8dSAndroid Build Coastguard Worker '\n' 9650*cda5da8dSAndroid Build Coastguard Worker 'object.__getattribute__(self, name)\n' 9651*cda5da8dSAndroid Build Coastguard Worker '\n' 9652*cda5da8dSAndroid Build Coastguard Worker ' Called unconditionally to implement attribute accesses ' 9653*cda5da8dSAndroid Build Coastguard Worker 'for\n' 9654*cda5da8dSAndroid Build Coastguard Worker ' instances of the class. If the class also defines ' 9655*cda5da8dSAndroid Build Coastguard Worker '"__getattr__()",\n' 9656*cda5da8dSAndroid Build Coastguard Worker ' the latter will not be called unless "__getattribute__()" ' 9657*cda5da8dSAndroid Build Coastguard Worker 'either\n' 9658*cda5da8dSAndroid Build Coastguard Worker ' calls it explicitly or raises an "AttributeError". This ' 9659*cda5da8dSAndroid Build Coastguard Worker 'method\n' 9660*cda5da8dSAndroid Build Coastguard Worker ' should return the (computed) attribute value or raise an\n' 9661*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" exception. In order to avoid infinite ' 9662*cda5da8dSAndroid Build Coastguard Worker 'recursion in\n' 9663*cda5da8dSAndroid Build Coastguard Worker ' this method, its implementation should always call the ' 9664*cda5da8dSAndroid Build Coastguard Worker 'base class\n' 9665*cda5da8dSAndroid Build Coastguard Worker ' method with the same name to access any attributes it ' 9666*cda5da8dSAndroid Build Coastguard Worker 'needs, for\n' 9667*cda5da8dSAndroid Build Coastguard Worker ' example, "object.__getattribute__(self, name)".\n' 9668*cda5da8dSAndroid Build Coastguard Worker '\n' 9669*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 9670*cda5da8dSAndroid Build Coastguard Worker '\n' 9671*cda5da8dSAndroid Build Coastguard Worker ' This method may still be bypassed when looking up ' 9672*cda5da8dSAndroid Build Coastguard Worker 'special methods\n' 9673*cda5da8dSAndroid Build Coastguard Worker ' as the result of implicit invocation via language ' 9674*cda5da8dSAndroid Build Coastguard Worker 'syntax or\n' 9675*cda5da8dSAndroid Build Coastguard Worker ' built-in functions. See Special method lookup.\n' 9676*cda5da8dSAndroid Build Coastguard Worker '\n' 9677*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute accesses, raises an ' 9678*cda5da8dSAndroid Build Coastguard Worker 'auditing event\n' 9679*cda5da8dSAndroid Build Coastguard Worker ' "object.__getattr__" with arguments "obj" and "name".\n' 9680*cda5da8dSAndroid Build Coastguard Worker '\n' 9681*cda5da8dSAndroid Build Coastguard Worker 'object.__setattr__(self, name, value)\n' 9682*cda5da8dSAndroid Build Coastguard Worker '\n' 9683*cda5da8dSAndroid Build Coastguard Worker ' Called when an attribute assignment is attempted. This ' 9684*cda5da8dSAndroid Build Coastguard Worker 'is called\n' 9685*cda5da8dSAndroid Build Coastguard Worker ' instead of the normal mechanism (i.e. store the value in ' 9686*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9687*cda5da8dSAndroid Build Coastguard Worker ' instance dictionary). *name* is the attribute name, ' 9688*cda5da8dSAndroid Build Coastguard Worker '*value* is the\n' 9689*cda5da8dSAndroid Build Coastguard Worker ' value to be assigned to it.\n' 9690*cda5da8dSAndroid Build Coastguard Worker '\n' 9691*cda5da8dSAndroid Build Coastguard Worker ' If "__setattr__()" wants to assign to an instance ' 9692*cda5da8dSAndroid Build Coastguard Worker 'attribute, it\n' 9693*cda5da8dSAndroid Build Coastguard Worker ' should call the base class method with the same name, for ' 9694*cda5da8dSAndroid Build Coastguard Worker 'example,\n' 9695*cda5da8dSAndroid Build Coastguard Worker ' "object.__setattr__(self, name, value)".\n' 9696*cda5da8dSAndroid Build Coastguard Worker '\n' 9697*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute assignments, raises an ' 9698*cda5da8dSAndroid Build Coastguard Worker 'auditing\n' 9699*cda5da8dSAndroid Build Coastguard Worker ' event "object.__setattr__" with arguments "obj", "name", ' 9700*cda5da8dSAndroid Build Coastguard Worker '"value".\n' 9701*cda5da8dSAndroid Build Coastguard Worker '\n' 9702*cda5da8dSAndroid Build Coastguard Worker 'object.__delattr__(self, name)\n' 9703*cda5da8dSAndroid Build Coastguard Worker '\n' 9704*cda5da8dSAndroid Build Coastguard Worker ' Like "__setattr__()" but for attribute deletion instead ' 9705*cda5da8dSAndroid Build Coastguard Worker 'of\n' 9706*cda5da8dSAndroid Build Coastguard Worker ' assignment. This should only be implemented if "del ' 9707*cda5da8dSAndroid Build Coastguard Worker 'obj.name" is\n' 9708*cda5da8dSAndroid Build Coastguard Worker ' meaningful for the object.\n' 9709*cda5da8dSAndroid Build Coastguard Worker '\n' 9710*cda5da8dSAndroid Build Coastguard Worker ' For certain sensitive attribute deletions, raises an ' 9711*cda5da8dSAndroid Build Coastguard Worker 'auditing event\n' 9712*cda5da8dSAndroid Build Coastguard Worker ' "object.__delattr__" with arguments "obj" and "name".\n' 9713*cda5da8dSAndroid Build Coastguard Worker '\n' 9714*cda5da8dSAndroid Build Coastguard Worker 'object.__dir__(self)\n' 9715*cda5da8dSAndroid Build Coastguard Worker '\n' 9716*cda5da8dSAndroid Build Coastguard Worker ' Called when "dir()" is called on the object. A sequence ' 9717*cda5da8dSAndroid Build Coastguard Worker 'must be\n' 9718*cda5da8dSAndroid Build Coastguard Worker ' returned. "dir()" converts the returned sequence to a ' 9719*cda5da8dSAndroid Build Coastguard Worker 'list and\n' 9720*cda5da8dSAndroid Build Coastguard Worker ' sorts it.\n' 9721*cda5da8dSAndroid Build Coastguard Worker '\n' 9722*cda5da8dSAndroid Build Coastguard Worker '\n' 9723*cda5da8dSAndroid Build Coastguard Worker 'Customizing module attribute access\n' 9724*cda5da8dSAndroid Build Coastguard Worker '-----------------------------------\n' 9725*cda5da8dSAndroid Build Coastguard Worker '\n' 9726*cda5da8dSAndroid Build Coastguard Worker 'Special names "__getattr__" and "__dir__" can be also used ' 9727*cda5da8dSAndroid Build Coastguard Worker 'to\n' 9728*cda5da8dSAndroid Build Coastguard Worker 'customize access to module attributes. The "__getattr__" ' 9729*cda5da8dSAndroid Build Coastguard Worker 'function at\n' 9730*cda5da8dSAndroid Build Coastguard Worker 'the module level should accept one argument which is the ' 9731*cda5da8dSAndroid Build Coastguard Worker 'name of an\n' 9732*cda5da8dSAndroid Build Coastguard Worker 'attribute and return the computed value or raise an ' 9733*cda5da8dSAndroid Build Coastguard Worker '"AttributeError".\n' 9734*cda5da8dSAndroid Build Coastguard Worker 'If an attribute is not found on a module object through the ' 9735*cda5da8dSAndroid Build Coastguard Worker 'normal\n' 9736*cda5da8dSAndroid Build Coastguard Worker 'lookup, i.e. "object.__getattribute__()", then "__getattr__" ' 9737*cda5da8dSAndroid Build Coastguard Worker 'is\n' 9738*cda5da8dSAndroid Build Coastguard Worker 'searched in the module "__dict__" before raising an ' 9739*cda5da8dSAndroid Build Coastguard Worker '"AttributeError".\n' 9740*cda5da8dSAndroid Build Coastguard Worker 'If found, it is called with the attribute name and the ' 9741*cda5da8dSAndroid Build Coastguard Worker 'result is\n' 9742*cda5da8dSAndroid Build Coastguard Worker 'returned.\n' 9743*cda5da8dSAndroid Build Coastguard Worker '\n' 9744*cda5da8dSAndroid Build Coastguard Worker 'The "__dir__" function should accept no arguments, and ' 9745*cda5da8dSAndroid Build Coastguard Worker 'return a\n' 9746*cda5da8dSAndroid Build Coastguard Worker 'sequence of strings that represents the names accessible on ' 9747*cda5da8dSAndroid Build Coastguard Worker 'module. If\n' 9748*cda5da8dSAndroid Build Coastguard Worker 'present, this function overrides the standard "dir()" search ' 9749*cda5da8dSAndroid Build Coastguard Worker 'on a\n' 9750*cda5da8dSAndroid Build Coastguard Worker 'module.\n' 9751*cda5da8dSAndroid Build Coastguard Worker '\n' 9752*cda5da8dSAndroid Build Coastguard Worker 'For a more fine grained customization of the module behavior ' 9753*cda5da8dSAndroid Build Coastguard Worker '(setting\n' 9754*cda5da8dSAndroid Build Coastguard Worker 'attributes, properties, etc.), one can set the "__class__" ' 9755*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 9756*cda5da8dSAndroid Build Coastguard Worker 'of a module object to a subclass of "types.ModuleType". For ' 9757*cda5da8dSAndroid Build Coastguard Worker 'example:\n' 9758*cda5da8dSAndroid Build Coastguard Worker '\n' 9759*cda5da8dSAndroid Build Coastguard Worker ' import sys\n' 9760*cda5da8dSAndroid Build Coastguard Worker ' from types import ModuleType\n' 9761*cda5da8dSAndroid Build Coastguard Worker '\n' 9762*cda5da8dSAndroid Build Coastguard Worker ' class VerboseModule(ModuleType):\n' 9763*cda5da8dSAndroid Build Coastguard Worker ' def __repr__(self):\n' 9764*cda5da8dSAndroid Build Coastguard Worker " return f'Verbose {self.__name__}'\n" 9765*cda5da8dSAndroid Build Coastguard Worker '\n' 9766*cda5da8dSAndroid Build Coastguard Worker ' def __setattr__(self, attr, value):\n' 9767*cda5da8dSAndroid Build Coastguard Worker " print(f'Setting {attr}...')\n" 9768*cda5da8dSAndroid Build Coastguard Worker ' super().__setattr__(attr, value)\n' 9769*cda5da8dSAndroid Build Coastguard Worker '\n' 9770*cda5da8dSAndroid Build Coastguard Worker ' sys.modules[__name__].__class__ = VerboseModule\n' 9771*cda5da8dSAndroid Build Coastguard Worker '\n' 9772*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 9773*cda5da8dSAndroid Build Coastguard Worker '\n' 9774*cda5da8dSAndroid Build Coastguard Worker ' Defining module "__getattr__" and setting module ' 9775*cda5da8dSAndroid Build Coastguard Worker '"__class__" only\n' 9776*cda5da8dSAndroid Build Coastguard Worker ' affect lookups made using the attribute access syntax – ' 9777*cda5da8dSAndroid Build Coastguard Worker 'directly\n' 9778*cda5da8dSAndroid Build Coastguard Worker ' accessing the module globals (whether by code within the ' 9779*cda5da8dSAndroid Build Coastguard Worker 'module, or\n' 9780*cda5da8dSAndroid Build Coastguard Worker ' via a reference to the module’s globals dictionary) is ' 9781*cda5da8dSAndroid Build Coastguard Worker 'unaffected.\n' 9782*cda5da8dSAndroid Build Coastguard Worker '\n' 9783*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.5: "__class__" module attribute is now ' 9784*cda5da8dSAndroid Build Coastguard Worker 'writable.\n' 9785*cda5da8dSAndroid Build Coastguard Worker '\n' 9786*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.7: "__getattr__" and "__dir__" module ' 9787*cda5da8dSAndroid Build Coastguard Worker 'attributes.\n' 9788*cda5da8dSAndroid Build Coastguard Worker '\n' 9789*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 9790*cda5da8dSAndroid Build Coastguard Worker '\n' 9791*cda5da8dSAndroid Build Coastguard Worker ' **PEP 562** - Module __getattr__ and __dir__\n' 9792*cda5da8dSAndroid Build Coastguard Worker ' Describes the "__getattr__" and "__dir__" functions on ' 9793*cda5da8dSAndroid Build Coastguard Worker 'modules.\n' 9794*cda5da8dSAndroid Build Coastguard Worker '\n' 9795*cda5da8dSAndroid Build Coastguard Worker '\n' 9796*cda5da8dSAndroid Build Coastguard Worker 'Implementing Descriptors\n' 9797*cda5da8dSAndroid Build Coastguard Worker '------------------------\n' 9798*cda5da8dSAndroid Build Coastguard Worker '\n' 9799*cda5da8dSAndroid Build Coastguard Worker 'The following methods only apply when an instance of the ' 9800*cda5da8dSAndroid Build Coastguard Worker 'class\n' 9801*cda5da8dSAndroid Build Coastguard Worker 'containing the method (a so-called *descriptor* class) ' 9802*cda5da8dSAndroid Build Coastguard Worker 'appears in an\n' 9803*cda5da8dSAndroid Build Coastguard Worker '*owner* class (the descriptor must be in either the owner’s ' 9804*cda5da8dSAndroid Build Coastguard Worker 'class\n' 9805*cda5da8dSAndroid Build Coastguard Worker 'dictionary or in the class dictionary for one of its ' 9806*cda5da8dSAndroid Build Coastguard Worker 'parents). In the\n' 9807*cda5da8dSAndroid Build Coastguard Worker 'examples below, “the attribute” refers to the attribute ' 9808*cda5da8dSAndroid Build Coastguard Worker 'whose name is\n' 9809*cda5da8dSAndroid Build Coastguard Worker 'the key of the property in the owner class’ "__dict__".\n' 9810*cda5da8dSAndroid Build Coastguard Worker '\n' 9811*cda5da8dSAndroid Build Coastguard Worker 'object.__get__(self, instance, owner=None)\n' 9812*cda5da8dSAndroid Build Coastguard Worker '\n' 9813*cda5da8dSAndroid Build Coastguard Worker ' Called to get the attribute of the owner class (class ' 9814*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 9815*cda5da8dSAndroid Build Coastguard Worker ' access) or of an instance of that class (instance ' 9816*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 9817*cda5da8dSAndroid Build Coastguard Worker ' access). The optional *owner* argument is the owner ' 9818*cda5da8dSAndroid Build Coastguard Worker 'class, while\n' 9819*cda5da8dSAndroid Build Coastguard Worker ' *instance* is the instance that the attribute was ' 9820*cda5da8dSAndroid Build Coastguard Worker 'accessed through,\n' 9821*cda5da8dSAndroid Build Coastguard Worker ' or "None" when the attribute is accessed through the ' 9822*cda5da8dSAndroid Build Coastguard Worker '*owner*.\n' 9823*cda5da8dSAndroid Build Coastguard Worker '\n' 9824*cda5da8dSAndroid Build Coastguard Worker ' This method should return the computed attribute value or ' 9825*cda5da8dSAndroid Build Coastguard Worker 'raise an\n' 9826*cda5da8dSAndroid Build Coastguard Worker ' "AttributeError" exception.\n' 9827*cda5da8dSAndroid Build Coastguard Worker '\n' 9828*cda5da8dSAndroid Build Coastguard Worker ' **PEP 252** specifies that "__get__()" is callable with ' 9829*cda5da8dSAndroid Build Coastguard Worker 'one or two\n' 9830*cda5da8dSAndroid Build Coastguard Worker ' arguments. Python’s own built-in descriptors support ' 9831*cda5da8dSAndroid Build Coastguard Worker 'this\n' 9832*cda5da8dSAndroid Build Coastguard Worker ' specification; however, it is likely that some ' 9833*cda5da8dSAndroid Build Coastguard Worker 'third-party tools\n' 9834*cda5da8dSAndroid Build Coastguard Worker ' have descriptors that require both arguments. Python’s ' 9835*cda5da8dSAndroid Build Coastguard Worker 'own\n' 9836*cda5da8dSAndroid Build Coastguard Worker ' "__getattribute__()" implementation always passes in both ' 9837*cda5da8dSAndroid Build Coastguard Worker 'arguments\n' 9838*cda5da8dSAndroid Build Coastguard Worker ' whether they are required or not.\n' 9839*cda5da8dSAndroid Build Coastguard Worker '\n' 9840*cda5da8dSAndroid Build Coastguard Worker 'object.__set__(self, instance, value)\n' 9841*cda5da8dSAndroid Build Coastguard Worker '\n' 9842*cda5da8dSAndroid Build Coastguard Worker ' Called to set the attribute on an instance *instance* of ' 9843*cda5da8dSAndroid Build Coastguard Worker 'the owner\n' 9844*cda5da8dSAndroid Build Coastguard Worker ' class to a new value, *value*.\n' 9845*cda5da8dSAndroid Build Coastguard Worker '\n' 9846*cda5da8dSAndroid Build Coastguard Worker ' Note, adding "__set__()" or "__delete__()" changes the ' 9847*cda5da8dSAndroid Build Coastguard Worker 'kind of\n' 9848*cda5da8dSAndroid Build Coastguard Worker ' descriptor to a “data descriptor”. See Invoking ' 9849*cda5da8dSAndroid Build Coastguard Worker 'Descriptors for\n' 9850*cda5da8dSAndroid Build Coastguard Worker ' more details.\n' 9851*cda5da8dSAndroid Build Coastguard Worker '\n' 9852*cda5da8dSAndroid Build Coastguard Worker 'object.__delete__(self, instance)\n' 9853*cda5da8dSAndroid Build Coastguard Worker '\n' 9854*cda5da8dSAndroid Build Coastguard Worker ' Called to delete the attribute on an instance *instance* ' 9855*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 9856*cda5da8dSAndroid Build Coastguard Worker ' owner class.\n' 9857*cda5da8dSAndroid Build Coastguard Worker '\n' 9858*cda5da8dSAndroid Build Coastguard Worker 'The attribute "__objclass__" is interpreted by the "inspect" ' 9859*cda5da8dSAndroid Build Coastguard Worker 'module as\n' 9860*cda5da8dSAndroid Build Coastguard Worker 'specifying the class where this object was defined (setting ' 9861*cda5da8dSAndroid Build Coastguard Worker 'this\n' 9862*cda5da8dSAndroid Build Coastguard Worker 'appropriately can assist in runtime introspection of dynamic ' 9863*cda5da8dSAndroid Build Coastguard Worker 'class\n' 9864*cda5da8dSAndroid Build Coastguard Worker 'attributes). For callables, it may indicate that an instance ' 9865*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 9866*cda5da8dSAndroid Build Coastguard Worker 'given type (or a subclass) is expected or required as the ' 9867*cda5da8dSAndroid Build Coastguard Worker 'first\n' 9868*cda5da8dSAndroid Build Coastguard Worker 'positional argument (for example, CPython sets this ' 9869*cda5da8dSAndroid Build Coastguard Worker 'attribute for\n' 9870*cda5da8dSAndroid Build Coastguard Worker 'unbound methods that are implemented in C).\n' 9871*cda5da8dSAndroid Build Coastguard Worker '\n' 9872*cda5da8dSAndroid Build Coastguard Worker '\n' 9873*cda5da8dSAndroid Build Coastguard Worker 'Invoking Descriptors\n' 9874*cda5da8dSAndroid Build Coastguard Worker '--------------------\n' 9875*cda5da8dSAndroid Build Coastguard Worker '\n' 9876*cda5da8dSAndroid Build Coastguard Worker 'In general, a descriptor is an object attribute with ' 9877*cda5da8dSAndroid Build Coastguard Worker '“binding\n' 9878*cda5da8dSAndroid Build Coastguard Worker 'behavior”, one whose attribute access has been overridden by ' 9879*cda5da8dSAndroid Build Coastguard Worker 'methods\n' 9880*cda5da8dSAndroid Build Coastguard Worker 'in the descriptor protocol: "__get__()", "__set__()", and\n' 9881*cda5da8dSAndroid Build Coastguard Worker '"__delete__()". If any of those methods are defined for an ' 9882*cda5da8dSAndroid Build Coastguard Worker 'object, it\n' 9883*cda5da8dSAndroid Build Coastguard Worker 'is said to be a descriptor.\n' 9884*cda5da8dSAndroid Build Coastguard Worker '\n' 9885*cda5da8dSAndroid Build Coastguard Worker 'The default behavior for attribute access is to get, set, or ' 9886*cda5da8dSAndroid Build Coastguard Worker 'delete\n' 9887*cda5da8dSAndroid Build Coastguard Worker 'the attribute from an object’s dictionary. For instance, ' 9888*cda5da8dSAndroid Build Coastguard Worker '"a.x" has a\n' 9889*cda5da8dSAndroid Build Coastguard Worker 'lookup chain starting with "a.__dict__[\'x\']", then\n' 9890*cda5da8dSAndroid Build Coastguard Worker '"type(a).__dict__[\'x\']", and continuing through the base ' 9891*cda5da8dSAndroid Build Coastguard Worker 'classes of\n' 9892*cda5da8dSAndroid Build Coastguard Worker '"type(a)" excluding metaclasses.\n' 9893*cda5da8dSAndroid Build Coastguard Worker '\n' 9894*cda5da8dSAndroid Build Coastguard Worker 'However, if the looked-up value is an object defining one of ' 9895*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9896*cda5da8dSAndroid Build Coastguard Worker 'descriptor methods, then Python may override the default ' 9897*cda5da8dSAndroid Build Coastguard Worker 'behavior and\n' 9898*cda5da8dSAndroid Build Coastguard Worker 'invoke the descriptor method instead. Where this occurs in ' 9899*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9900*cda5da8dSAndroid Build Coastguard Worker 'precedence chain depends on which descriptor methods were ' 9901*cda5da8dSAndroid Build Coastguard Worker 'defined and\n' 9902*cda5da8dSAndroid Build Coastguard Worker 'how they were called.\n' 9903*cda5da8dSAndroid Build Coastguard Worker '\n' 9904*cda5da8dSAndroid Build Coastguard Worker 'The starting point for descriptor invocation is a binding, ' 9905*cda5da8dSAndroid Build Coastguard Worker '"a.x". How\n' 9906*cda5da8dSAndroid Build Coastguard Worker 'the arguments are assembled depends on "a":\n' 9907*cda5da8dSAndroid Build Coastguard Worker '\n' 9908*cda5da8dSAndroid Build Coastguard Worker 'Direct Call\n' 9909*cda5da8dSAndroid Build Coastguard Worker ' The simplest and least common call is when user code ' 9910*cda5da8dSAndroid Build Coastguard Worker 'directly\n' 9911*cda5da8dSAndroid Build Coastguard Worker ' invokes a descriptor method: "x.__get__(a)".\n' 9912*cda5da8dSAndroid Build Coastguard Worker '\n' 9913*cda5da8dSAndroid Build Coastguard Worker 'Instance Binding\n' 9914*cda5da8dSAndroid Build Coastguard Worker ' If binding to an object instance, "a.x" is transformed ' 9915*cda5da8dSAndroid Build Coastguard Worker 'into the\n' 9916*cda5da8dSAndroid Build Coastguard Worker ' call: "type(a).__dict__[\'x\'].__get__(a, type(a))".\n' 9917*cda5da8dSAndroid Build Coastguard Worker '\n' 9918*cda5da8dSAndroid Build Coastguard Worker 'Class Binding\n' 9919*cda5da8dSAndroid Build Coastguard Worker ' If binding to a class, "A.x" is transformed into the ' 9920*cda5da8dSAndroid Build Coastguard Worker 'call:\n' 9921*cda5da8dSAndroid Build Coastguard Worker ' "A.__dict__[\'x\'].__get__(None, A)".\n' 9922*cda5da8dSAndroid Build Coastguard Worker '\n' 9923*cda5da8dSAndroid Build Coastguard Worker 'Super Binding\n' 9924*cda5da8dSAndroid Build Coastguard Worker ' A dotted lookup such as "super(A, a).x" searches\n' 9925*cda5da8dSAndroid Build Coastguard Worker ' "a.__class__.__mro__" for a base class "B" following "A" ' 9926*cda5da8dSAndroid Build Coastguard Worker 'and then\n' 9927*cda5da8dSAndroid Build Coastguard Worker ' returns "B.__dict__[\'x\'].__get__(a, A)". If not a ' 9928*cda5da8dSAndroid Build Coastguard Worker 'descriptor, "x"\n' 9929*cda5da8dSAndroid Build Coastguard Worker ' is returned unchanged.\n' 9930*cda5da8dSAndroid Build Coastguard Worker '\n' 9931*cda5da8dSAndroid Build Coastguard Worker 'For instance bindings, the precedence of descriptor ' 9932*cda5da8dSAndroid Build Coastguard Worker 'invocation depends\n' 9933*cda5da8dSAndroid Build Coastguard Worker 'on which descriptor methods are defined. A descriptor can ' 9934*cda5da8dSAndroid Build Coastguard Worker 'define any\n' 9935*cda5da8dSAndroid Build Coastguard Worker 'combination of "__get__()", "__set__()" and "__delete__()". ' 9936*cda5da8dSAndroid Build Coastguard Worker 'If it\n' 9937*cda5da8dSAndroid Build Coastguard Worker 'does not define "__get__()", then accessing the attribute ' 9938*cda5da8dSAndroid Build Coastguard Worker 'will return\n' 9939*cda5da8dSAndroid Build Coastguard Worker 'the descriptor object itself unless there is a value in the ' 9940*cda5da8dSAndroid Build Coastguard Worker 'object’s\n' 9941*cda5da8dSAndroid Build Coastguard Worker 'instance dictionary. If the descriptor defines "__set__()" ' 9942*cda5da8dSAndroid Build Coastguard Worker 'and/or\n' 9943*cda5da8dSAndroid Build Coastguard Worker '"__delete__()", it is a data descriptor; if it defines ' 9944*cda5da8dSAndroid Build Coastguard Worker 'neither, it is\n' 9945*cda5da8dSAndroid Build Coastguard Worker 'a non-data descriptor. Normally, data descriptors define ' 9946*cda5da8dSAndroid Build Coastguard Worker 'both\n' 9947*cda5da8dSAndroid Build Coastguard Worker '"__get__()" and "__set__()", while non-data descriptors have ' 9948*cda5da8dSAndroid Build Coastguard Worker 'just the\n' 9949*cda5da8dSAndroid Build Coastguard Worker '"__get__()" method. Data descriptors with "__get__()" and ' 9950*cda5da8dSAndroid Build Coastguard Worker '"__set__()"\n' 9951*cda5da8dSAndroid Build Coastguard Worker '(and/or "__delete__()") defined always override a ' 9952*cda5da8dSAndroid Build Coastguard Worker 'redefinition in an\n' 9953*cda5da8dSAndroid Build Coastguard Worker 'instance dictionary. In contrast, non-data descriptors can ' 9954*cda5da8dSAndroid Build Coastguard Worker 'be\n' 9955*cda5da8dSAndroid Build Coastguard Worker 'overridden by instances.\n' 9956*cda5da8dSAndroid Build Coastguard Worker '\n' 9957*cda5da8dSAndroid Build Coastguard Worker 'Python methods (including those decorated with ' 9958*cda5da8dSAndroid Build Coastguard Worker '"@staticmethod" and\n' 9959*cda5da8dSAndroid Build Coastguard Worker '"@classmethod") are implemented as non-data descriptors. ' 9960*cda5da8dSAndroid Build Coastguard Worker 'Accordingly,\n' 9961*cda5da8dSAndroid Build Coastguard Worker 'instances can redefine and override methods. This allows ' 9962*cda5da8dSAndroid Build Coastguard Worker 'individual\n' 9963*cda5da8dSAndroid Build Coastguard Worker 'instances to acquire behaviors that differ from other ' 9964*cda5da8dSAndroid Build Coastguard Worker 'instances of the\n' 9965*cda5da8dSAndroid Build Coastguard Worker 'same class.\n' 9966*cda5da8dSAndroid Build Coastguard Worker '\n' 9967*cda5da8dSAndroid Build Coastguard Worker 'The "property()" function is implemented as a data ' 9968*cda5da8dSAndroid Build Coastguard Worker 'descriptor.\n' 9969*cda5da8dSAndroid Build Coastguard Worker 'Accordingly, instances cannot override the behavior of a ' 9970*cda5da8dSAndroid Build Coastguard Worker 'property.\n' 9971*cda5da8dSAndroid Build Coastguard Worker '\n' 9972*cda5da8dSAndroid Build Coastguard Worker '\n' 9973*cda5da8dSAndroid Build Coastguard Worker '__slots__\n' 9974*cda5da8dSAndroid Build Coastguard Worker '---------\n' 9975*cda5da8dSAndroid Build Coastguard Worker '\n' 9976*cda5da8dSAndroid Build Coastguard Worker '*__slots__* allow us to explicitly declare data members ' 9977*cda5da8dSAndroid Build Coastguard Worker '(like\n' 9978*cda5da8dSAndroid Build Coastguard Worker 'properties) and deny the creation of "__dict__" and ' 9979*cda5da8dSAndroid Build Coastguard Worker '*__weakref__*\n' 9980*cda5da8dSAndroid Build Coastguard Worker '(unless explicitly declared in *__slots__* or available in a ' 9981*cda5da8dSAndroid Build Coastguard Worker 'parent.)\n' 9982*cda5da8dSAndroid Build Coastguard Worker '\n' 9983*cda5da8dSAndroid Build Coastguard Worker 'The space saved over using "__dict__" can be significant. ' 9984*cda5da8dSAndroid Build Coastguard Worker 'Attribute\n' 9985*cda5da8dSAndroid Build Coastguard Worker 'lookup speed can be significantly improved as well.\n' 9986*cda5da8dSAndroid Build Coastguard Worker '\n' 9987*cda5da8dSAndroid Build Coastguard Worker 'object.__slots__\n' 9988*cda5da8dSAndroid Build Coastguard Worker '\n' 9989*cda5da8dSAndroid Build Coastguard Worker ' This class variable can be assigned a string, iterable, ' 9990*cda5da8dSAndroid Build Coastguard Worker 'or sequence\n' 9991*cda5da8dSAndroid Build Coastguard Worker ' of strings with variable names used by instances. ' 9992*cda5da8dSAndroid Build Coastguard Worker '*__slots__*\n' 9993*cda5da8dSAndroid Build Coastguard Worker ' reserves space for the declared variables and prevents ' 9994*cda5da8dSAndroid Build Coastguard Worker 'the\n' 9995*cda5da8dSAndroid Build Coastguard Worker ' automatic creation of "__dict__" and *__weakref__* for ' 9996*cda5da8dSAndroid Build Coastguard Worker 'each\n' 9997*cda5da8dSAndroid Build Coastguard Worker ' instance.\n' 9998*cda5da8dSAndroid Build Coastguard Worker '\n' 9999*cda5da8dSAndroid Build Coastguard Worker '\n' 10000*cda5da8dSAndroid Build Coastguard Worker 'Notes on using *__slots__*\n' 10001*cda5da8dSAndroid Build Coastguard Worker '~~~~~~~~~~~~~~~~~~~~~~~~~~\n' 10002*cda5da8dSAndroid Build Coastguard Worker '\n' 10003*cda5da8dSAndroid Build Coastguard Worker '* When inheriting from a class without *__slots__*, the ' 10004*cda5da8dSAndroid Build Coastguard Worker '"__dict__" and\n' 10005*cda5da8dSAndroid Build Coastguard Worker ' *__weakref__* attribute of the instances will always be ' 10006*cda5da8dSAndroid Build Coastguard Worker 'accessible.\n' 10007*cda5da8dSAndroid Build Coastguard Worker '\n' 10008*cda5da8dSAndroid Build Coastguard Worker '* Without a "__dict__" variable, instances cannot be ' 10009*cda5da8dSAndroid Build Coastguard Worker 'assigned new\n' 10010*cda5da8dSAndroid Build Coastguard Worker ' variables not listed in the *__slots__* definition. ' 10011*cda5da8dSAndroid Build Coastguard Worker 'Attempts to\n' 10012*cda5da8dSAndroid Build Coastguard Worker ' assign to an unlisted variable name raises ' 10013*cda5da8dSAndroid Build Coastguard Worker '"AttributeError". If\n' 10014*cda5da8dSAndroid Build Coastguard Worker ' dynamic assignment of new variables is desired, then add\n' 10015*cda5da8dSAndroid Build Coastguard Worker ' "\'__dict__\'" to the sequence of strings in the ' 10016*cda5da8dSAndroid Build Coastguard Worker '*__slots__*\n' 10017*cda5da8dSAndroid Build Coastguard Worker ' declaration.\n' 10018*cda5da8dSAndroid Build Coastguard Worker '\n' 10019*cda5da8dSAndroid Build Coastguard Worker '* Without a *__weakref__* variable for each instance, ' 10020*cda5da8dSAndroid Build Coastguard Worker 'classes defining\n' 10021*cda5da8dSAndroid Build Coastguard Worker ' *__slots__* do not support "weak references" to its ' 10022*cda5da8dSAndroid Build Coastguard Worker 'instances. If\n' 10023*cda5da8dSAndroid Build Coastguard Worker ' weak reference support is needed, then add ' 10024*cda5da8dSAndroid Build Coastguard Worker '"\'__weakref__\'" to the\n' 10025*cda5da8dSAndroid Build Coastguard Worker ' sequence of strings in the *__slots__* declaration.\n' 10026*cda5da8dSAndroid Build Coastguard Worker '\n' 10027*cda5da8dSAndroid Build Coastguard Worker '* *__slots__* are implemented at the class level by ' 10028*cda5da8dSAndroid Build Coastguard Worker 'creating\n' 10029*cda5da8dSAndroid Build Coastguard Worker ' descriptors for each variable name. As a result, class ' 10030*cda5da8dSAndroid Build Coastguard Worker 'attributes\n' 10031*cda5da8dSAndroid Build Coastguard Worker ' cannot be used to set default values for instance ' 10032*cda5da8dSAndroid Build Coastguard Worker 'variables defined\n' 10033*cda5da8dSAndroid Build Coastguard Worker ' by *__slots__*; otherwise, the class attribute would ' 10034*cda5da8dSAndroid Build Coastguard Worker 'overwrite the\n' 10035*cda5da8dSAndroid Build Coastguard Worker ' descriptor assignment.\n' 10036*cda5da8dSAndroid Build Coastguard Worker '\n' 10037*cda5da8dSAndroid Build Coastguard Worker '* The action of a *__slots__* declaration is not limited to ' 10038*cda5da8dSAndroid Build Coastguard Worker 'the class\n' 10039*cda5da8dSAndroid Build Coastguard Worker ' where it is defined. *__slots__* declared in parents are ' 10040*cda5da8dSAndroid Build Coastguard Worker 'available\n' 10041*cda5da8dSAndroid Build Coastguard Worker ' in child classes. However, child subclasses will get a ' 10042*cda5da8dSAndroid Build Coastguard Worker '"__dict__"\n' 10043*cda5da8dSAndroid Build Coastguard Worker ' and *__weakref__* unless they also define *__slots__* ' 10044*cda5da8dSAndroid Build Coastguard Worker '(which should\n' 10045*cda5da8dSAndroid Build Coastguard Worker ' only contain names of any *additional* slots).\n' 10046*cda5da8dSAndroid Build Coastguard Worker '\n' 10047*cda5da8dSAndroid Build Coastguard Worker '* If a class defines a slot also defined in a base class, ' 10048*cda5da8dSAndroid Build Coastguard Worker 'the instance\n' 10049*cda5da8dSAndroid Build Coastguard Worker ' variable defined by the base class slot is inaccessible ' 10050*cda5da8dSAndroid Build Coastguard Worker '(except by\n' 10051*cda5da8dSAndroid Build Coastguard Worker ' retrieving its descriptor directly from the base class). ' 10052*cda5da8dSAndroid Build Coastguard Worker 'This\n' 10053*cda5da8dSAndroid Build Coastguard Worker ' renders the meaning of the program undefined. In the ' 10054*cda5da8dSAndroid Build Coastguard Worker 'future, a\n' 10055*cda5da8dSAndroid Build Coastguard Worker ' check may be added to prevent this.\n' 10056*cda5da8dSAndroid Build Coastguard Worker '\n' 10057*cda5da8dSAndroid Build Coastguard Worker '* "TypeError" will be raised if nonempty *__slots__* are ' 10058*cda5da8dSAndroid Build Coastguard Worker 'defined for a\n' 10059*cda5da8dSAndroid Build Coastguard Worker ' class derived from a ""variable-length" built-in type" ' 10060*cda5da8dSAndroid Build Coastguard Worker 'such as\n' 10061*cda5da8dSAndroid Build Coastguard Worker ' "int", "bytes", and "tuple".\n' 10062*cda5da8dSAndroid Build Coastguard Worker '\n' 10063*cda5da8dSAndroid Build Coastguard Worker '* Any non-string *iterable* may be assigned to *__slots__*.\n' 10064*cda5da8dSAndroid Build Coastguard Worker '\n' 10065*cda5da8dSAndroid Build Coastguard Worker '* If a "dictionary" is used to assign *__slots__*, the ' 10066*cda5da8dSAndroid Build Coastguard Worker 'dictionary keys\n' 10067*cda5da8dSAndroid Build Coastguard Worker ' will be used as the slot names. The values of the ' 10068*cda5da8dSAndroid Build Coastguard Worker 'dictionary can be\n' 10069*cda5da8dSAndroid Build Coastguard Worker ' used to provide per-attribute docstrings that will be ' 10070*cda5da8dSAndroid Build Coastguard Worker 'recognised by\n' 10071*cda5da8dSAndroid Build Coastguard Worker ' "inspect.getdoc()" and displayed in the output of ' 10072*cda5da8dSAndroid Build Coastguard Worker '"help()".\n' 10073*cda5da8dSAndroid Build Coastguard Worker '\n' 10074*cda5da8dSAndroid Build Coastguard Worker '* "__class__" assignment works only if both classes have the ' 10075*cda5da8dSAndroid Build Coastguard Worker 'same\n' 10076*cda5da8dSAndroid Build Coastguard Worker ' *__slots__*.\n' 10077*cda5da8dSAndroid Build Coastguard Worker '\n' 10078*cda5da8dSAndroid Build Coastguard Worker '* Multiple inheritance with multiple slotted parent classes ' 10079*cda5da8dSAndroid Build Coastguard Worker 'can be\n' 10080*cda5da8dSAndroid Build Coastguard Worker ' used, but only one parent is allowed to have attributes ' 10081*cda5da8dSAndroid Build Coastguard Worker 'created by\n' 10082*cda5da8dSAndroid Build Coastguard Worker ' slots (the other bases must have empty slot layouts) - ' 10083*cda5da8dSAndroid Build Coastguard Worker 'violations\n' 10084*cda5da8dSAndroid Build Coastguard Worker ' raise "TypeError".\n' 10085*cda5da8dSAndroid Build Coastguard Worker '\n' 10086*cda5da8dSAndroid Build Coastguard Worker '* If an *iterator* is used for *__slots__* then a ' 10087*cda5da8dSAndroid Build Coastguard Worker '*descriptor* is\n' 10088*cda5da8dSAndroid Build Coastguard Worker ' created for each of the iterator’s values. However, the ' 10089*cda5da8dSAndroid Build Coastguard Worker '*__slots__*\n' 10090*cda5da8dSAndroid Build Coastguard Worker ' attribute will be an empty iterator.\n' 10091*cda5da8dSAndroid Build Coastguard Worker '\n' 10092*cda5da8dSAndroid Build Coastguard Worker '\n' 10093*cda5da8dSAndroid Build Coastguard Worker 'Customizing class creation\n' 10094*cda5da8dSAndroid Build Coastguard Worker '==========================\n' 10095*cda5da8dSAndroid Build Coastguard Worker '\n' 10096*cda5da8dSAndroid Build Coastguard Worker 'Whenever a class inherits from another class, ' 10097*cda5da8dSAndroid Build Coastguard Worker '"__init_subclass__()" is\n' 10098*cda5da8dSAndroid Build Coastguard Worker 'called on the parent class. This way, it is possible to ' 10099*cda5da8dSAndroid Build Coastguard Worker 'write classes\n' 10100*cda5da8dSAndroid Build Coastguard Worker 'which change the behavior of subclasses. This is closely ' 10101*cda5da8dSAndroid Build Coastguard Worker 'related to\n' 10102*cda5da8dSAndroid Build Coastguard Worker 'class decorators, but where class decorators only affect the ' 10103*cda5da8dSAndroid Build Coastguard Worker 'specific\n' 10104*cda5da8dSAndroid Build Coastguard Worker 'class they’re applied to, "__init_subclass__" solely applies ' 10105*cda5da8dSAndroid Build Coastguard Worker 'to future\n' 10106*cda5da8dSAndroid Build Coastguard Worker 'subclasses of the class defining the method.\n' 10107*cda5da8dSAndroid Build Coastguard Worker '\n' 10108*cda5da8dSAndroid Build Coastguard Worker 'classmethod object.__init_subclass__(cls)\n' 10109*cda5da8dSAndroid Build Coastguard Worker '\n' 10110*cda5da8dSAndroid Build Coastguard Worker ' This method is called whenever the containing class is ' 10111*cda5da8dSAndroid Build Coastguard Worker 'subclassed.\n' 10112*cda5da8dSAndroid Build Coastguard Worker ' *cls* is then the new subclass. If defined as a normal ' 10113*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 10114*cda5da8dSAndroid Build Coastguard Worker ' method, this method is implicitly converted to a class ' 10115*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 10116*cda5da8dSAndroid Build Coastguard Worker '\n' 10117*cda5da8dSAndroid Build Coastguard Worker ' Keyword arguments which are given to a new class are ' 10118*cda5da8dSAndroid Build Coastguard Worker 'passed to the\n' 10119*cda5da8dSAndroid Build Coastguard Worker ' parent’s class "__init_subclass__". For compatibility ' 10120*cda5da8dSAndroid Build Coastguard Worker 'with other\n' 10121*cda5da8dSAndroid Build Coastguard Worker ' classes using "__init_subclass__", one should take out ' 10122*cda5da8dSAndroid Build Coastguard Worker 'the needed\n' 10123*cda5da8dSAndroid Build Coastguard Worker ' keyword arguments and pass the others over to the base ' 10124*cda5da8dSAndroid Build Coastguard Worker 'class, as\n' 10125*cda5da8dSAndroid Build Coastguard Worker ' in:\n' 10126*cda5da8dSAndroid Build Coastguard Worker '\n' 10127*cda5da8dSAndroid Build Coastguard Worker ' class Philosopher:\n' 10128*cda5da8dSAndroid Build Coastguard Worker ' def __init_subclass__(cls, /, default_name, ' 10129*cda5da8dSAndroid Build Coastguard Worker '**kwargs):\n' 10130*cda5da8dSAndroid Build Coastguard Worker ' super().__init_subclass__(**kwargs)\n' 10131*cda5da8dSAndroid Build Coastguard Worker ' cls.default_name = default_name\n' 10132*cda5da8dSAndroid Build Coastguard Worker '\n' 10133*cda5da8dSAndroid Build Coastguard Worker ' class AustralianPhilosopher(Philosopher, ' 10134*cda5da8dSAndroid Build Coastguard Worker 'default_name="Bruce"):\n' 10135*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 10136*cda5da8dSAndroid Build Coastguard Worker '\n' 10137*cda5da8dSAndroid Build Coastguard Worker ' The default implementation "object.__init_subclass__" ' 10138*cda5da8dSAndroid Build Coastguard Worker 'does nothing,\n' 10139*cda5da8dSAndroid Build Coastguard Worker ' but raises an error if it is called with any arguments.\n' 10140*cda5da8dSAndroid Build Coastguard Worker '\n' 10141*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 10142*cda5da8dSAndroid Build Coastguard Worker '\n' 10143*cda5da8dSAndroid Build Coastguard Worker ' The metaclass hint "metaclass" is consumed by the rest ' 10144*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 10145*cda5da8dSAndroid Build Coastguard Worker ' type machinery, and is never passed to ' 10146*cda5da8dSAndroid Build Coastguard Worker '"__init_subclass__"\n' 10147*cda5da8dSAndroid Build Coastguard Worker ' implementations. The actual metaclass (rather than the ' 10148*cda5da8dSAndroid Build Coastguard Worker 'explicit\n' 10149*cda5da8dSAndroid Build Coastguard Worker ' hint) can be accessed as "type(cls)".\n' 10150*cda5da8dSAndroid Build Coastguard Worker '\n' 10151*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.6.\n' 10152*cda5da8dSAndroid Build Coastguard Worker '\n' 10153*cda5da8dSAndroid Build Coastguard Worker 'When a class is created, "type.__new__()" scans the class ' 10154*cda5da8dSAndroid Build Coastguard Worker 'variables\n' 10155*cda5da8dSAndroid Build Coastguard Worker 'and makes callbacks to those with a "__set_name__()" hook.\n' 10156*cda5da8dSAndroid Build Coastguard Worker '\n' 10157*cda5da8dSAndroid Build Coastguard Worker 'object.__set_name__(self, owner, name)\n' 10158*cda5da8dSAndroid Build Coastguard Worker '\n' 10159*cda5da8dSAndroid Build Coastguard Worker ' Automatically called at the time the owning class *owner* ' 10160*cda5da8dSAndroid Build Coastguard Worker 'is\n' 10161*cda5da8dSAndroid Build Coastguard Worker ' created. The object has been assigned to *name* in that ' 10162*cda5da8dSAndroid Build Coastguard Worker 'class:\n' 10163*cda5da8dSAndroid Build Coastguard Worker '\n' 10164*cda5da8dSAndroid Build Coastguard Worker ' class A:\n' 10165*cda5da8dSAndroid Build Coastguard Worker ' x = C() # Automatically calls: x.__set_name__(A, ' 10166*cda5da8dSAndroid Build Coastguard Worker "'x')\n" 10167*cda5da8dSAndroid Build Coastguard Worker '\n' 10168*cda5da8dSAndroid Build Coastguard Worker ' If the class variable is assigned after the class is ' 10169*cda5da8dSAndroid Build Coastguard Worker 'created,\n' 10170*cda5da8dSAndroid Build Coastguard Worker ' "__set_name__()" will not be called automatically. If ' 10171*cda5da8dSAndroid Build Coastguard Worker 'needed,\n' 10172*cda5da8dSAndroid Build Coastguard Worker ' "__set_name__()" can be called directly:\n' 10173*cda5da8dSAndroid Build Coastguard Worker '\n' 10174*cda5da8dSAndroid Build Coastguard Worker ' class A:\n' 10175*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 10176*cda5da8dSAndroid Build Coastguard Worker '\n' 10177*cda5da8dSAndroid Build Coastguard Worker ' c = C()\n' 10178*cda5da8dSAndroid Build Coastguard Worker ' A.x = c # The hook is not called\n' 10179*cda5da8dSAndroid Build Coastguard Worker " c.__set_name__(A, 'x') # Manually invoke the hook\n" 10180*cda5da8dSAndroid Build Coastguard Worker '\n' 10181*cda5da8dSAndroid Build Coastguard Worker ' See Creating the class object for more details.\n' 10182*cda5da8dSAndroid Build Coastguard Worker '\n' 10183*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.6.\n' 10184*cda5da8dSAndroid Build Coastguard Worker '\n' 10185*cda5da8dSAndroid Build Coastguard Worker '\n' 10186*cda5da8dSAndroid Build Coastguard Worker 'Metaclasses\n' 10187*cda5da8dSAndroid Build Coastguard Worker '-----------\n' 10188*cda5da8dSAndroid Build Coastguard Worker '\n' 10189*cda5da8dSAndroid Build Coastguard Worker 'By default, classes are constructed using "type()". The ' 10190*cda5da8dSAndroid Build Coastguard Worker 'class body is\n' 10191*cda5da8dSAndroid Build Coastguard Worker 'executed in a new namespace and the class name is bound ' 10192*cda5da8dSAndroid Build Coastguard Worker 'locally to the\n' 10193*cda5da8dSAndroid Build Coastguard Worker 'result of "type(name, bases, namespace)".\n' 10194*cda5da8dSAndroid Build Coastguard Worker '\n' 10195*cda5da8dSAndroid Build Coastguard Worker 'The class creation process can be customized by passing the\n' 10196*cda5da8dSAndroid Build Coastguard Worker '"metaclass" keyword argument in the class definition line, ' 10197*cda5da8dSAndroid Build Coastguard Worker 'or by\n' 10198*cda5da8dSAndroid Build Coastguard Worker 'inheriting from an existing class that included such an ' 10199*cda5da8dSAndroid Build Coastguard Worker 'argument. In\n' 10200*cda5da8dSAndroid Build Coastguard Worker 'the following example, both "MyClass" and "MySubclass" are ' 10201*cda5da8dSAndroid Build Coastguard Worker 'instances\n' 10202*cda5da8dSAndroid Build Coastguard Worker 'of "Meta":\n' 10203*cda5da8dSAndroid Build Coastguard Worker '\n' 10204*cda5da8dSAndroid Build Coastguard Worker ' class Meta(type):\n' 10205*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 10206*cda5da8dSAndroid Build Coastguard Worker '\n' 10207*cda5da8dSAndroid Build Coastguard Worker ' class MyClass(metaclass=Meta):\n' 10208*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 10209*cda5da8dSAndroid Build Coastguard Worker '\n' 10210*cda5da8dSAndroid Build Coastguard Worker ' class MySubclass(MyClass):\n' 10211*cda5da8dSAndroid Build Coastguard Worker ' pass\n' 10212*cda5da8dSAndroid Build Coastguard Worker '\n' 10213*cda5da8dSAndroid Build Coastguard Worker 'Any other keyword arguments that are specified in the class ' 10214*cda5da8dSAndroid Build Coastguard Worker 'definition\n' 10215*cda5da8dSAndroid Build Coastguard Worker 'are passed through to all metaclass operations described ' 10216*cda5da8dSAndroid Build Coastguard Worker 'below.\n' 10217*cda5da8dSAndroid Build Coastguard Worker '\n' 10218*cda5da8dSAndroid Build Coastguard Worker 'When a class definition is executed, the following steps ' 10219*cda5da8dSAndroid Build Coastguard Worker 'occur:\n' 10220*cda5da8dSAndroid Build Coastguard Worker '\n' 10221*cda5da8dSAndroid Build Coastguard Worker '* MRO entries are resolved;\n' 10222*cda5da8dSAndroid Build Coastguard Worker '\n' 10223*cda5da8dSAndroid Build Coastguard Worker '* the appropriate metaclass is determined;\n' 10224*cda5da8dSAndroid Build Coastguard Worker '\n' 10225*cda5da8dSAndroid Build Coastguard Worker '* the class namespace is prepared;\n' 10226*cda5da8dSAndroid Build Coastguard Worker '\n' 10227*cda5da8dSAndroid Build Coastguard Worker '* the class body is executed;\n' 10228*cda5da8dSAndroid Build Coastguard Worker '\n' 10229*cda5da8dSAndroid Build Coastguard Worker '* the class object is created.\n' 10230*cda5da8dSAndroid Build Coastguard Worker '\n' 10231*cda5da8dSAndroid Build Coastguard Worker '\n' 10232*cda5da8dSAndroid Build Coastguard Worker 'Resolving MRO entries\n' 10233*cda5da8dSAndroid Build Coastguard Worker '---------------------\n' 10234*cda5da8dSAndroid Build Coastguard Worker '\n' 10235*cda5da8dSAndroid Build Coastguard Worker 'object.__mro_entries__(self, bases)\n' 10236*cda5da8dSAndroid Build Coastguard Worker '\n' 10237*cda5da8dSAndroid Build Coastguard Worker ' If a base that appears in a class definition is not an ' 10238*cda5da8dSAndroid Build Coastguard Worker 'instance of\n' 10239*cda5da8dSAndroid Build Coastguard Worker ' "type", then an "__mro_entries__()" method is searched on ' 10240*cda5da8dSAndroid Build Coastguard Worker 'the base.\n' 10241*cda5da8dSAndroid Build Coastguard Worker ' If an "__mro_entries__()" method is found, the base is ' 10242*cda5da8dSAndroid Build Coastguard Worker 'substituted\n' 10243*cda5da8dSAndroid Build Coastguard Worker ' with the result of a call to "__mro_entries__()" when ' 10244*cda5da8dSAndroid Build Coastguard Worker 'creating the\n' 10245*cda5da8dSAndroid Build Coastguard Worker ' class. The method is called with the original bases tuple ' 10246*cda5da8dSAndroid Build Coastguard Worker 'passed to\n' 10247*cda5da8dSAndroid Build Coastguard Worker ' the *bases* parameter, and must return a tuple of classes ' 10248*cda5da8dSAndroid Build Coastguard Worker 'that will\n' 10249*cda5da8dSAndroid Build Coastguard Worker ' be used instead of the base. The returned tuple may be ' 10250*cda5da8dSAndroid Build Coastguard Worker 'empty: in\n' 10251*cda5da8dSAndroid Build Coastguard Worker ' these cases, the original base is ignored.\n' 10252*cda5da8dSAndroid Build Coastguard Worker '\n' 10253*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10254*cda5da8dSAndroid Build Coastguard Worker '\n' 10255*cda5da8dSAndroid Build Coastguard Worker ' "types.resolve_bases()"\n' 10256*cda5da8dSAndroid Build Coastguard Worker ' Dynamically resolve bases that are not instances of ' 10257*cda5da8dSAndroid Build Coastguard Worker '"type".\n' 10258*cda5da8dSAndroid Build Coastguard Worker '\n' 10259*cda5da8dSAndroid Build Coastguard Worker ' **PEP 560**\n' 10260*cda5da8dSAndroid Build Coastguard Worker ' Core support for typing module and generic types.\n' 10261*cda5da8dSAndroid Build Coastguard Worker '\n' 10262*cda5da8dSAndroid Build Coastguard Worker '\n' 10263*cda5da8dSAndroid Build Coastguard Worker 'Determining the appropriate metaclass\n' 10264*cda5da8dSAndroid Build Coastguard Worker '-------------------------------------\n' 10265*cda5da8dSAndroid Build Coastguard Worker '\n' 10266*cda5da8dSAndroid Build Coastguard Worker 'The appropriate metaclass for a class definition is ' 10267*cda5da8dSAndroid Build Coastguard Worker 'determined as\n' 10268*cda5da8dSAndroid Build Coastguard Worker 'follows:\n' 10269*cda5da8dSAndroid Build Coastguard Worker '\n' 10270*cda5da8dSAndroid Build Coastguard Worker '* if no bases and no explicit metaclass are given, then ' 10271*cda5da8dSAndroid Build Coastguard Worker '"type()" is\n' 10272*cda5da8dSAndroid Build Coastguard Worker ' used;\n' 10273*cda5da8dSAndroid Build Coastguard Worker '\n' 10274*cda5da8dSAndroid Build Coastguard Worker '* if an explicit metaclass is given and it is *not* an ' 10275*cda5da8dSAndroid Build Coastguard Worker 'instance of\n' 10276*cda5da8dSAndroid Build Coastguard Worker ' "type()", then it is used directly as the metaclass;\n' 10277*cda5da8dSAndroid Build Coastguard Worker '\n' 10278*cda5da8dSAndroid Build Coastguard Worker '* if an instance of "type()" is given as the explicit ' 10279*cda5da8dSAndroid Build Coastguard Worker 'metaclass, or\n' 10280*cda5da8dSAndroid Build Coastguard Worker ' bases are defined, then the most derived metaclass is ' 10281*cda5da8dSAndroid Build Coastguard Worker 'used.\n' 10282*cda5da8dSAndroid Build Coastguard Worker '\n' 10283*cda5da8dSAndroid Build Coastguard Worker 'The most derived metaclass is selected from the explicitly ' 10284*cda5da8dSAndroid Build Coastguard Worker 'specified\n' 10285*cda5da8dSAndroid Build Coastguard Worker 'metaclass (if any) and the metaclasses (i.e. "type(cls)") of ' 10286*cda5da8dSAndroid Build Coastguard Worker 'all\n' 10287*cda5da8dSAndroid Build Coastguard Worker 'specified base classes. The most derived metaclass is one ' 10288*cda5da8dSAndroid Build Coastguard Worker 'which is a\n' 10289*cda5da8dSAndroid Build Coastguard Worker 'subtype of *all* of these candidate metaclasses. If none of ' 10290*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10291*cda5da8dSAndroid Build Coastguard Worker 'candidate metaclasses meets that criterion, then the class ' 10292*cda5da8dSAndroid Build Coastguard Worker 'definition\n' 10293*cda5da8dSAndroid Build Coastguard Worker 'will fail with "TypeError".\n' 10294*cda5da8dSAndroid Build Coastguard Worker '\n' 10295*cda5da8dSAndroid Build Coastguard Worker '\n' 10296*cda5da8dSAndroid Build Coastguard Worker 'Preparing the class namespace\n' 10297*cda5da8dSAndroid Build Coastguard Worker '-----------------------------\n' 10298*cda5da8dSAndroid Build Coastguard Worker '\n' 10299*cda5da8dSAndroid Build Coastguard Worker 'Once the appropriate metaclass has been identified, then the ' 10300*cda5da8dSAndroid Build Coastguard Worker 'class\n' 10301*cda5da8dSAndroid Build Coastguard Worker 'namespace is prepared. If the metaclass has a "__prepare__" ' 10302*cda5da8dSAndroid Build Coastguard Worker 'attribute,\n' 10303*cda5da8dSAndroid Build Coastguard Worker 'it is called as "namespace = metaclass.__prepare__(name, ' 10304*cda5da8dSAndroid Build Coastguard Worker 'bases,\n' 10305*cda5da8dSAndroid Build Coastguard Worker '**kwds)" (where the additional keyword arguments, if any, ' 10306*cda5da8dSAndroid Build Coastguard Worker 'come from\n' 10307*cda5da8dSAndroid Build Coastguard Worker 'the class definition). The "__prepare__" method should be ' 10308*cda5da8dSAndroid Build Coastguard Worker 'implemented\n' 10309*cda5da8dSAndroid Build Coastguard Worker 'as a "classmethod". The namespace returned by "__prepare__" ' 10310*cda5da8dSAndroid Build Coastguard Worker 'is passed\n' 10311*cda5da8dSAndroid Build Coastguard Worker 'in to "__new__", but when the final class object is created ' 10312*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10313*cda5da8dSAndroid Build Coastguard Worker 'namespace is copied into a new "dict".\n' 10314*cda5da8dSAndroid Build Coastguard Worker '\n' 10315*cda5da8dSAndroid Build Coastguard Worker 'If the metaclass has no "__prepare__" attribute, then the ' 10316*cda5da8dSAndroid Build Coastguard Worker 'class\n' 10317*cda5da8dSAndroid Build Coastguard Worker 'namespace is initialised as an empty ordered mapping.\n' 10318*cda5da8dSAndroid Build Coastguard Worker '\n' 10319*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10320*cda5da8dSAndroid Build Coastguard Worker '\n' 10321*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3115** - Metaclasses in Python 3000\n' 10322*cda5da8dSAndroid Build Coastguard Worker ' Introduced the "__prepare__" namespace hook\n' 10323*cda5da8dSAndroid Build Coastguard Worker '\n' 10324*cda5da8dSAndroid Build Coastguard Worker '\n' 10325*cda5da8dSAndroid Build Coastguard Worker 'Executing the class body\n' 10326*cda5da8dSAndroid Build Coastguard Worker '------------------------\n' 10327*cda5da8dSAndroid Build Coastguard Worker '\n' 10328*cda5da8dSAndroid Build Coastguard Worker 'The class body is executed (approximately) as "exec(body, ' 10329*cda5da8dSAndroid Build Coastguard Worker 'globals(),\n' 10330*cda5da8dSAndroid Build Coastguard Worker 'namespace)". The key difference from a normal call to ' 10331*cda5da8dSAndroid Build Coastguard Worker '"exec()" is that\n' 10332*cda5da8dSAndroid Build Coastguard Worker 'lexical scoping allows the class body (including any ' 10333*cda5da8dSAndroid Build Coastguard Worker 'methods) to\n' 10334*cda5da8dSAndroid Build Coastguard Worker 'reference names from the current and outer scopes when the ' 10335*cda5da8dSAndroid Build Coastguard Worker 'class\n' 10336*cda5da8dSAndroid Build Coastguard Worker 'definition occurs inside a function.\n' 10337*cda5da8dSAndroid Build Coastguard Worker '\n' 10338*cda5da8dSAndroid Build Coastguard Worker 'However, even when the class definition occurs inside the ' 10339*cda5da8dSAndroid Build Coastguard Worker 'function,\n' 10340*cda5da8dSAndroid Build Coastguard Worker 'methods defined inside the class still cannot see names ' 10341*cda5da8dSAndroid Build Coastguard Worker 'defined at the\n' 10342*cda5da8dSAndroid Build Coastguard Worker 'class scope. Class variables must be accessed through the ' 10343*cda5da8dSAndroid Build Coastguard Worker 'first\n' 10344*cda5da8dSAndroid Build Coastguard Worker 'parameter of instance or class methods, or through the ' 10345*cda5da8dSAndroid Build Coastguard Worker 'implicit\n' 10346*cda5da8dSAndroid Build Coastguard Worker 'lexically scoped "__class__" reference described in the next ' 10347*cda5da8dSAndroid Build Coastguard Worker 'section.\n' 10348*cda5da8dSAndroid Build Coastguard Worker '\n' 10349*cda5da8dSAndroid Build Coastguard Worker '\n' 10350*cda5da8dSAndroid Build Coastguard Worker 'Creating the class object\n' 10351*cda5da8dSAndroid Build Coastguard Worker '-------------------------\n' 10352*cda5da8dSAndroid Build Coastguard Worker '\n' 10353*cda5da8dSAndroid Build Coastguard Worker 'Once the class namespace has been populated by executing the ' 10354*cda5da8dSAndroid Build Coastguard Worker 'class\n' 10355*cda5da8dSAndroid Build Coastguard Worker 'body, the class object is created by calling ' 10356*cda5da8dSAndroid Build Coastguard Worker '"metaclass(name, bases,\n' 10357*cda5da8dSAndroid Build Coastguard Worker 'namespace, **kwds)" (the additional keywords passed here are ' 10358*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 10359*cda5da8dSAndroid Build Coastguard Worker 'as those passed to "__prepare__").\n' 10360*cda5da8dSAndroid Build Coastguard Worker '\n' 10361*cda5da8dSAndroid Build Coastguard Worker 'This class object is the one that will be referenced by the ' 10362*cda5da8dSAndroid Build Coastguard Worker 'zero-\n' 10363*cda5da8dSAndroid Build Coastguard Worker 'argument form of "super()". "__class__" is an implicit ' 10364*cda5da8dSAndroid Build Coastguard Worker 'closure\n' 10365*cda5da8dSAndroid Build Coastguard Worker 'reference created by the compiler if any methods in a class ' 10366*cda5da8dSAndroid Build Coastguard Worker 'body refer\n' 10367*cda5da8dSAndroid Build Coastguard Worker 'to either "__class__" or "super". This allows the zero ' 10368*cda5da8dSAndroid Build Coastguard Worker 'argument form\n' 10369*cda5da8dSAndroid Build Coastguard Worker 'of "super()" to correctly identify the class being defined ' 10370*cda5da8dSAndroid Build Coastguard Worker 'based on\n' 10371*cda5da8dSAndroid Build Coastguard Worker 'lexical scoping, while the class or instance that was used ' 10372*cda5da8dSAndroid Build Coastguard Worker 'to make the\n' 10373*cda5da8dSAndroid Build Coastguard Worker 'current call is identified based on the first argument ' 10374*cda5da8dSAndroid Build Coastguard Worker 'passed to the\n' 10375*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 10376*cda5da8dSAndroid Build Coastguard Worker '\n' 10377*cda5da8dSAndroid Build Coastguard Worker '**CPython implementation detail:** In CPython 3.6 and later, ' 10378*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10379*cda5da8dSAndroid Build Coastguard Worker '"__class__" cell is passed to the metaclass as a ' 10380*cda5da8dSAndroid Build Coastguard Worker '"__classcell__" entry\n' 10381*cda5da8dSAndroid Build Coastguard Worker 'in the class namespace. If present, this must be propagated ' 10382*cda5da8dSAndroid Build Coastguard Worker 'up to the\n' 10383*cda5da8dSAndroid Build Coastguard Worker '"type.__new__" call in order for the class to be ' 10384*cda5da8dSAndroid Build Coastguard Worker 'initialised\n' 10385*cda5da8dSAndroid Build Coastguard Worker 'correctly. Failing to do so will result in a "RuntimeError" ' 10386*cda5da8dSAndroid Build Coastguard Worker 'in Python\n' 10387*cda5da8dSAndroid Build Coastguard Worker '3.8.\n' 10388*cda5da8dSAndroid Build Coastguard Worker '\n' 10389*cda5da8dSAndroid Build Coastguard Worker 'When using the default metaclass "type", or any metaclass ' 10390*cda5da8dSAndroid Build Coastguard Worker 'that\n' 10391*cda5da8dSAndroid Build Coastguard Worker 'ultimately calls "type.__new__", the following additional\n' 10392*cda5da8dSAndroid Build Coastguard Worker 'customization steps are invoked after creating the class ' 10393*cda5da8dSAndroid Build Coastguard Worker 'object:\n' 10394*cda5da8dSAndroid Build Coastguard Worker '\n' 10395*cda5da8dSAndroid Build Coastguard Worker '1. The "type.__new__" method collects all of the attributes ' 10396*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 10397*cda5da8dSAndroid Build Coastguard Worker ' class namespace that define a "__set_name__()" method;\n' 10398*cda5da8dSAndroid Build Coastguard Worker '\n' 10399*cda5da8dSAndroid Build Coastguard Worker '2. Those "__set_name__" methods are called with the class ' 10400*cda5da8dSAndroid Build Coastguard Worker 'being\n' 10401*cda5da8dSAndroid Build Coastguard Worker ' defined and the assigned name of that particular ' 10402*cda5da8dSAndroid Build Coastguard Worker 'attribute;\n' 10403*cda5da8dSAndroid Build Coastguard Worker '\n' 10404*cda5da8dSAndroid Build Coastguard Worker '3. The "__init_subclass__()" hook is called on the immediate ' 10405*cda5da8dSAndroid Build Coastguard Worker 'parent of\n' 10406*cda5da8dSAndroid Build Coastguard Worker ' the new class in its method resolution order.\n' 10407*cda5da8dSAndroid Build Coastguard Worker '\n' 10408*cda5da8dSAndroid Build Coastguard Worker 'After the class object is created, it is passed to the ' 10409*cda5da8dSAndroid Build Coastguard Worker 'class\n' 10410*cda5da8dSAndroid Build Coastguard Worker 'decorators included in the class definition (if any) and the ' 10411*cda5da8dSAndroid Build Coastguard Worker 'resulting\n' 10412*cda5da8dSAndroid Build Coastguard Worker 'object is bound in the local namespace as the defined ' 10413*cda5da8dSAndroid Build Coastguard Worker 'class.\n' 10414*cda5da8dSAndroid Build Coastguard Worker '\n' 10415*cda5da8dSAndroid Build Coastguard Worker 'When a new class is created by "type.__new__", the object ' 10416*cda5da8dSAndroid Build Coastguard Worker 'provided as\n' 10417*cda5da8dSAndroid Build Coastguard Worker 'the namespace parameter is copied to a new ordered mapping ' 10418*cda5da8dSAndroid Build Coastguard Worker 'and the\n' 10419*cda5da8dSAndroid Build Coastguard Worker 'original object is discarded. The new copy is wrapped in a ' 10420*cda5da8dSAndroid Build Coastguard Worker 'read-only\n' 10421*cda5da8dSAndroid Build Coastguard Worker 'proxy, which becomes the "__dict__" attribute of the class ' 10422*cda5da8dSAndroid Build Coastguard Worker 'object.\n' 10423*cda5da8dSAndroid Build Coastguard Worker '\n' 10424*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10425*cda5da8dSAndroid Build Coastguard Worker '\n' 10426*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3135** - New super\n' 10427*cda5da8dSAndroid Build Coastguard Worker ' Describes the implicit "__class__" closure reference\n' 10428*cda5da8dSAndroid Build Coastguard Worker '\n' 10429*cda5da8dSAndroid Build Coastguard Worker '\n' 10430*cda5da8dSAndroid Build Coastguard Worker 'Uses for metaclasses\n' 10431*cda5da8dSAndroid Build Coastguard Worker '--------------------\n' 10432*cda5da8dSAndroid Build Coastguard Worker '\n' 10433*cda5da8dSAndroid Build Coastguard Worker 'The potential uses for metaclasses are boundless. Some ideas ' 10434*cda5da8dSAndroid Build Coastguard Worker 'that have\n' 10435*cda5da8dSAndroid Build Coastguard Worker 'been explored include enum, logging, interface checking, ' 10436*cda5da8dSAndroid Build Coastguard Worker 'automatic\n' 10437*cda5da8dSAndroid Build Coastguard Worker 'delegation, automatic property creation, proxies, ' 10438*cda5da8dSAndroid Build Coastguard Worker 'frameworks, and\n' 10439*cda5da8dSAndroid Build Coastguard Worker 'automatic resource locking/synchronization.\n' 10440*cda5da8dSAndroid Build Coastguard Worker '\n' 10441*cda5da8dSAndroid Build Coastguard Worker '\n' 10442*cda5da8dSAndroid Build Coastguard Worker 'Customizing instance and subclass checks\n' 10443*cda5da8dSAndroid Build Coastguard Worker '========================================\n' 10444*cda5da8dSAndroid Build Coastguard Worker '\n' 10445*cda5da8dSAndroid Build Coastguard Worker 'The following methods are used to override the default ' 10446*cda5da8dSAndroid Build Coastguard Worker 'behavior of the\n' 10447*cda5da8dSAndroid Build Coastguard Worker '"isinstance()" and "issubclass()" built-in functions.\n' 10448*cda5da8dSAndroid Build Coastguard Worker '\n' 10449*cda5da8dSAndroid Build Coastguard Worker 'In particular, the metaclass "abc.ABCMeta" implements these ' 10450*cda5da8dSAndroid Build Coastguard Worker 'methods in\n' 10451*cda5da8dSAndroid Build Coastguard Worker 'order to allow the addition of Abstract Base Classes (ABCs) ' 10452*cda5da8dSAndroid Build Coastguard Worker 'as\n' 10453*cda5da8dSAndroid Build Coastguard Worker '“virtual base classes” to any class or type (including ' 10454*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 10455*cda5da8dSAndroid Build Coastguard Worker 'types), including other ABCs.\n' 10456*cda5da8dSAndroid Build Coastguard Worker '\n' 10457*cda5da8dSAndroid Build Coastguard Worker 'class.__instancecheck__(self, instance)\n' 10458*cda5da8dSAndroid Build Coastguard Worker '\n' 10459*cda5da8dSAndroid Build Coastguard Worker ' Return true if *instance* should be considered a (direct ' 10460*cda5da8dSAndroid Build Coastguard Worker 'or\n' 10461*cda5da8dSAndroid Build Coastguard Worker ' indirect) instance of *class*. If defined, called to ' 10462*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 10463*cda5da8dSAndroid Build Coastguard Worker ' "isinstance(instance, class)".\n' 10464*cda5da8dSAndroid Build Coastguard Worker '\n' 10465*cda5da8dSAndroid Build Coastguard Worker 'class.__subclasscheck__(self, subclass)\n' 10466*cda5da8dSAndroid Build Coastguard Worker '\n' 10467*cda5da8dSAndroid Build Coastguard Worker ' Return true if *subclass* should be considered a (direct ' 10468*cda5da8dSAndroid Build Coastguard Worker 'or\n' 10469*cda5da8dSAndroid Build Coastguard Worker ' indirect) subclass of *class*. If defined, called to ' 10470*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 10471*cda5da8dSAndroid Build Coastguard Worker ' "issubclass(subclass, class)".\n' 10472*cda5da8dSAndroid Build Coastguard Worker '\n' 10473*cda5da8dSAndroid Build Coastguard Worker 'Note that these methods are looked up on the type ' 10474*cda5da8dSAndroid Build Coastguard Worker '(metaclass) of a\n' 10475*cda5da8dSAndroid Build Coastguard Worker 'class. They cannot be defined as class methods in the ' 10476*cda5da8dSAndroid Build Coastguard Worker 'actual class.\n' 10477*cda5da8dSAndroid Build Coastguard Worker 'This is consistent with the lookup of special methods that ' 10478*cda5da8dSAndroid Build Coastguard Worker 'are called\n' 10479*cda5da8dSAndroid Build Coastguard Worker 'on instances, only in this case the instance is itself a ' 10480*cda5da8dSAndroid Build Coastguard Worker 'class.\n' 10481*cda5da8dSAndroid Build Coastguard Worker '\n' 10482*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10483*cda5da8dSAndroid Build Coastguard Worker '\n' 10484*cda5da8dSAndroid Build Coastguard Worker ' **PEP 3119** - Introducing Abstract Base Classes\n' 10485*cda5da8dSAndroid Build Coastguard Worker ' Includes the specification for customizing ' 10486*cda5da8dSAndroid Build Coastguard Worker '"isinstance()" and\n' 10487*cda5da8dSAndroid Build Coastguard Worker ' "issubclass()" behavior through "__instancecheck__()" ' 10488*cda5da8dSAndroid Build Coastguard Worker 'and\n' 10489*cda5da8dSAndroid Build Coastguard Worker ' "__subclasscheck__()", with motivation for this ' 10490*cda5da8dSAndroid Build Coastguard Worker 'functionality in\n' 10491*cda5da8dSAndroid Build Coastguard Worker ' the context of adding Abstract Base Classes (see the ' 10492*cda5da8dSAndroid Build Coastguard Worker '"abc"\n' 10493*cda5da8dSAndroid Build Coastguard Worker ' module) to the language.\n' 10494*cda5da8dSAndroid Build Coastguard Worker '\n' 10495*cda5da8dSAndroid Build Coastguard Worker '\n' 10496*cda5da8dSAndroid Build Coastguard Worker 'Emulating generic types\n' 10497*cda5da8dSAndroid Build Coastguard Worker '=======================\n' 10498*cda5da8dSAndroid Build Coastguard Worker '\n' 10499*cda5da8dSAndroid Build Coastguard Worker 'When using *type annotations*, it is often useful to ' 10500*cda5da8dSAndroid Build Coastguard Worker '*parameterize* a\n' 10501*cda5da8dSAndroid Build Coastguard Worker '*generic type* using Python’s square-brackets notation. For ' 10502*cda5da8dSAndroid Build Coastguard Worker 'example,\n' 10503*cda5da8dSAndroid Build Coastguard Worker 'the annotation "list[int]" might be used to signify a "list" ' 10504*cda5da8dSAndroid Build Coastguard Worker 'in which\n' 10505*cda5da8dSAndroid Build Coastguard Worker 'all the elements are of type "int".\n' 10506*cda5da8dSAndroid Build Coastguard Worker '\n' 10507*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10508*cda5da8dSAndroid Build Coastguard Worker '\n' 10509*cda5da8dSAndroid Build Coastguard Worker ' **PEP 484** - Type Hints\n' 10510*cda5da8dSAndroid Build Coastguard Worker ' Introducing Python’s framework for type annotations\n' 10511*cda5da8dSAndroid Build Coastguard Worker '\n' 10512*cda5da8dSAndroid Build Coastguard Worker ' Generic Alias Types\n' 10513*cda5da8dSAndroid Build Coastguard Worker ' Documentation for objects representing parameterized ' 10514*cda5da8dSAndroid Build Coastguard Worker 'generic\n' 10515*cda5da8dSAndroid Build Coastguard Worker ' classes\n' 10516*cda5da8dSAndroid Build Coastguard Worker '\n' 10517*cda5da8dSAndroid Build Coastguard Worker ' Generics, user-defined generics and "typing.Generic"\n' 10518*cda5da8dSAndroid Build Coastguard Worker ' Documentation on how to implement generic classes that ' 10519*cda5da8dSAndroid Build Coastguard Worker 'can be\n' 10520*cda5da8dSAndroid Build Coastguard Worker ' parameterized at runtime and understood by static ' 10521*cda5da8dSAndroid Build Coastguard Worker 'type-checkers.\n' 10522*cda5da8dSAndroid Build Coastguard Worker '\n' 10523*cda5da8dSAndroid Build Coastguard Worker 'A class can *generally* only be parameterized if it defines ' 10524*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10525*cda5da8dSAndroid Build Coastguard Worker 'special class method "__class_getitem__()".\n' 10526*cda5da8dSAndroid Build Coastguard Worker '\n' 10527*cda5da8dSAndroid Build Coastguard Worker 'classmethod object.__class_getitem__(cls, key)\n' 10528*cda5da8dSAndroid Build Coastguard Worker '\n' 10529*cda5da8dSAndroid Build Coastguard Worker ' Return an object representing the specialization of a ' 10530*cda5da8dSAndroid Build Coastguard Worker 'generic class\n' 10531*cda5da8dSAndroid Build Coastguard Worker ' by type arguments found in *key*.\n' 10532*cda5da8dSAndroid Build Coastguard Worker '\n' 10533*cda5da8dSAndroid Build Coastguard Worker ' When defined on a class, "__class_getitem__()" is ' 10534*cda5da8dSAndroid Build Coastguard Worker 'automatically a\n' 10535*cda5da8dSAndroid Build Coastguard Worker ' class method. As such, there is no need for it to be ' 10536*cda5da8dSAndroid Build Coastguard Worker 'decorated with\n' 10537*cda5da8dSAndroid Build Coastguard Worker ' "@classmethod" when it is defined.\n' 10538*cda5da8dSAndroid Build Coastguard Worker '\n' 10539*cda5da8dSAndroid Build Coastguard Worker '\n' 10540*cda5da8dSAndroid Build Coastguard Worker 'The purpose of *__class_getitem__*\n' 10541*cda5da8dSAndroid Build Coastguard Worker '----------------------------------\n' 10542*cda5da8dSAndroid Build Coastguard Worker '\n' 10543*cda5da8dSAndroid Build Coastguard Worker 'The purpose of "__class_getitem__()" is to allow runtime\n' 10544*cda5da8dSAndroid Build Coastguard Worker 'parameterization of standard-library generic classes in ' 10545*cda5da8dSAndroid Build Coastguard Worker 'order to more\n' 10546*cda5da8dSAndroid Build Coastguard Worker 'easily apply *type hints* to these classes.\n' 10547*cda5da8dSAndroid Build Coastguard Worker '\n' 10548*cda5da8dSAndroid Build Coastguard Worker 'To implement custom generic classes that can be ' 10549*cda5da8dSAndroid Build Coastguard Worker 'parameterized at\n' 10550*cda5da8dSAndroid Build Coastguard Worker 'runtime and understood by static type-checkers, users should ' 10551*cda5da8dSAndroid Build Coastguard Worker 'either\n' 10552*cda5da8dSAndroid Build Coastguard Worker 'inherit from a standard library class that already ' 10553*cda5da8dSAndroid Build Coastguard Worker 'implements\n' 10554*cda5da8dSAndroid Build Coastguard Worker '"__class_getitem__()", or inherit from "typing.Generic", ' 10555*cda5da8dSAndroid Build Coastguard Worker 'which has its\n' 10556*cda5da8dSAndroid Build Coastguard Worker 'own implementation of "__class_getitem__()".\n' 10557*cda5da8dSAndroid Build Coastguard Worker '\n' 10558*cda5da8dSAndroid Build Coastguard Worker 'Custom implementations of "__class_getitem__()" on classes ' 10559*cda5da8dSAndroid Build Coastguard Worker 'defined\n' 10560*cda5da8dSAndroid Build Coastguard Worker 'outside of the standard library may not be understood by ' 10561*cda5da8dSAndroid Build Coastguard Worker 'third-party\n' 10562*cda5da8dSAndroid Build Coastguard Worker 'type-checkers such as mypy. Using "__class_getitem__()" on ' 10563*cda5da8dSAndroid Build Coastguard Worker 'any class\n' 10564*cda5da8dSAndroid Build Coastguard Worker 'for purposes other than type hinting is discouraged.\n' 10565*cda5da8dSAndroid Build Coastguard Worker '\n' 10566*cda5da8dSAndroid Build Coastguard Worker '\n' 10567*cda5da8dSAndroid Build Coastguard Worker '*__class_getitem__* versus *__getitem__*\n' 10568*cda5da8dSAndroid Build Coastguard Worker '----------------------------------------\n' 10569*cda5da8dSAndroid Build Coastguard Worker '\n' 10570*cda5da8dSAndroid Build Coastguard Worker 'Usually, the subscription of an object using square brackets ' 10571*cda5da8dSAndroid Build Coastguard Worker 'will call\n' 10572*cda5da8dSAndroid Build Coastguard Worker 'the "__getitem__()" instance method defined on the object’s ' 10573*cda5da8dSAndroid Build Coastguard Worker 'class.\n' 10574*cda5da8dSAndroid Build Coastguard Worker 'However, if the object being subscribed is itself a class, ' 10575*cda5da8dSAndroid Build Coastguard Worker 'the class\n' 10576*cda5da8dSAndroid Build Coastguard Worker 'method "__class_getitem__()" may be called instead.\n' 10577*cda5da8dSAndroid Build Coastguard Worker '"__class_getitem__()" should return a GenericAlias object if ' 10578*cda5da8dSAndroid Build Coastguard Worker 'it is\n' 10579*cda5da8dSAndroid Build Coastguard Worker 'properly defined.\n' 10580*cda5da8dSAndroid Build Coastguard Worker '\n' 10581*cda5da8dSAndroid Build Coastguard Worker 'Presented with the *expression* "obj[x]", the Python ' 10582*cda5da8dSAndroid Build Coastguard Worker 'interpreter\n' 10583*cda5da8dSAndroid Build Coastguard Worker 'follows something like the following process to decide ' 10584*cda5da8dSAndroid Build Coastguard Worker 'whether\n' 10585*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()" or "__class_getitem__()" should be called:\n' 10586*cda5da8dSAndroid Build Coastguard Worker '\n' 10587*cda5da8dSAndroid Build Coastguard Worker ' from inspect import isclass\n' 10588*cda5da8dSAndroid Build Coastguard Worker '\n' 10589*cda5da8dSAndroid Build Coastguard Worker ' def subscribe(obj, x):\n' 10590*cda5da8dSAndroid Build Coastguard Worker ' """Return the result of the expression \'obj[x]\'"""\n' 10591*cda5da8dSAndroid Build Coastguard Worker '\n' 10592*cda5da8dSAndroid Build Coastguard Worker ' class_of_obj = type(obj)\n' 10593*cda5da8dSAndroid Build Coastguard Worker '\n' 10594*cda5da8dSAndroid Build Coastguard Worker ' # If the class of obj defines __getitem__,\n' 10595*cda5da8dSAndroid Build Coastguard Worker ' # call class_of_obj.__getitem__(obj, x)\n' 10596*cda5da8dSAndroid Build Coastguard Worker " if hasattr(class_of_obj, '__getitem__'):\n" 10597*cda5da8dSAndroid Build Coastguard Worker ' return class_of_obj.__getitem__(obj, x)\n' 10598*cda5da8dSAndroid Build Coastguard Worker '\n' 10599*cda5da8dSAndroid Build Coastguard Worker ' # Else, if obj is a class and defines ' 10600*cda5da8dSAndroid Build Coastguard Worker '__class_getitem__,\n' 10601*cda5da8dSAndroid Build Coastguard Worker ' # call obj.__class_getitem__(x)\n' 10602*cda5da8dSAndroid Build Coastguard Worker ' elif isclass(obj) and hasattr(obj, ' 10603*cda5da8dSAndroid Build Coastguard Worker "'__class_getitem__'):\n" 10604*cda5da8dSAndroid Build Coastguard Worker ' return obj.__class_getitem__(x)\n' 10605*cda5da8dSAndroid Build Coastguard Worker '\n' 10606*cda5da8dSAndroid Build Coastguard Worker ' # Else, raise an exception\n' 10607*cda5da8dSAndroid Build Coastguard Worker ' else:\n' 10608*cda5da8dSAndroid Build Coastguard Worker ' raise TypeError(\n' 10609*cda5da8dSAndroid Build Coastguard Worker ' f"\'{class_of_obj.__name__}\' object is not ' 10610*cda5da8dSAndroid Build Coastguard Worker 'subscriptable"\n' 10611*cda5da8dSAndroid Build Coastguard Worker ' )\n' 10612*cda5da8dSAndroid Build Coastguard Worker '\n' 10613*cda5da8dSAndroid Build Coastguard Worker 'In Python, all classes are themselves instances of other ' 10614*cda5da8dSAndroid Build Coastguard Worker 'classes. The\n' 10615*cda5da8dSAndroid Build Coastguard Worker 'class of a class is known as that class’s *metaclass*, and ' 10616*cda5da8dSAndroid Build Coastguard Worker 'most\n' 10617*cda5da8dSAndroid Build Coastguard Worker 'classes have the "type" class as their metaclass. "type" ' 10618*cda5da8dSAndroid Build Coastguard Worker 'does not\n' 10619*cda5da8dSAndroid Build Coastguard Worker 'define "__getitem__()", meaning that expressions such as ' 10620*cda5da8dSAndroid Build Coastguard Worker '"list[int]",\n' 10621*cda5da8dSAndroid Build Coastguard Worker '"dict[str, float]" and "tuple[str, bytes]" all result in\n' 10622*cda5da8dSAndroid Build Coastguard Worker '"__class_getitem__()" being called:\n' 10623*cda5da8dSAndroid Build Coastguard Worker '\n' 10624*cda5da8dSAndroid Build Coastguard Worker ' >>> # list has class "type" as its metaclass, like most ' 10625*cda5da8dSAndroid Build Coastguard Worker 'classes:\n' 10626*cda5da8dSAndroid Build Coastguard Worker ' >>> type(list)\n' 10627*cda5da8dSAndroid Build Coastguard Worker " <class 'type'>\n" 10628*cda5da8dSAndroid Build Coastguard Worker ' >>> type(dict) == type(list) == type(tuple) == type(str) ' 10629*cda5da8dSAndroid Build Coastguard Worker '== type(bytes)\n' 10630*cda5da8dSAndroid Build Coastguard Worker ' True\n' 10631*cda5da8dSAndroid Build Coastguard Worker ' >>> # "list[int]" calls "list.__class_getitem__(int)"\n' 10632*cda5da8dSAndroid Build Coastguard Worker ' >>> list[int]\n' 10633*cda5da8dSAndroid Build Coastguard Worker ' list[int]\n' 10634*cda5da8dSAndroid Build Coastguard Worker ' >>> # list.__class_getitem__ returns a GenericAlias ' 10635*cda5da8dSAndroid Build Coastguard Worker 'object:\n' 10636*cda5da8dSAndroid Build Coastguard Worker ' >>> type(list[int])\n' 10637*cda5da8dSAndroid Build Coastguard Worker " <class 'types.GenericAlias'>\n" 10638*cda5da8dSAndroid Build Coastguard Worker '\n' 10639*cda5da8dSAndroid Build Coastguard Worker 'However, if a class has a custom metaclass that defines\n' 10640*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()", subscribing the class may result in ' 10641*cda5da8dSAndroid Build Coastguard Worker 'different\n' 10642*cda5da8dSAndroid Build Coastguard Worker 'behaviour. An example of this can be found in the "enum" ' 10643*cda5da8dSAndroid Build Coastguard Worker 'module:\n' 10644*cda5da8dSAndroid Build Coastguard Worker '\n' 10645*cda5da8dSAndroid Build Coastguard Worker ' >>> from enum import Enum\n' 10646*cda5da8dSAndroid Build Coastguard Worker ' >>> class Menu(Enum):\n' 10647*cda5da8dSAndroid Build Coastguard Worker ' ... """A breakfast menu"""\n' 10648*cda5da8dSAndroid Build Coastguard Worker " ... SPAM = 'spam'\n" 10649*cda5da8dSAndroid Build Coastguard Worker " ... BACON = 'bacon'\n" 10650*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 10651*cda5da8dSAndroid Build Coastguard Worker ' >>> # Enum classes have a custom metaclass:\n' 10652*cda5da8dSAndroid Build Coastguard Worker ' >>> type(Menu)\n' 10653*cda5da8dSAndroid Build Coastguard Worker " <class 'enum.EnumMeta'>\n" 10654*cda5da8dSAndroid Build Coastguard Worker ' >>> # EnumMeta defines __getitem__,\n' 10655*cda5da8dSAndroid Build Coastguard Worker ' >>> # so __class_getitem__ is not called,\n' 10656*cda5da8dSAndroid Build Coastguard Worker ' >>> # and the result is not a GenericAlias object:\n' 10657*cda5da8dSAndroid Build Coastguard Worker " >>> Menu['SPAM']\n" 10658*cda5da8dSAndroid Build Coastguard Worker " <Menu.SPAM: 'spam'>\n" 10659*cda5da8dSAndroid Build Coastguard Worker " >>> type(Menu['SPAM'])\n" 10660*cda5da8dSAndroid Build Coastguard Worker " <enum 'Menu'>\n" 10661*cda5da8dSAndroid Build Coastguard Worker '\n' 10662*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 10663*cda5da8dSAndroid Build Coastguard Worker '\n' 10664*cda5da8dSAndroid Build Coastguard Worker ' **PEP 560** - Core Support for typing module and generic ' 10665*cda5da8dSAndroid Build Coastguard Worker 'types\n' 10666*cda5da8dSAndroid Build Coastguard Worker ' Introducing "__class_getitem__()", and outlining when ' 10667*cda5da8dSAndroid Build Coastguard Worker 'a\n' 10668*cda5da8dSAndroid Build Coastguard Worker ' subscription results in "__class_getitem__()" being ' 10669*cda5da8dSAndroid Build Coastguard Worker 'called\n' 10670*cda5da8dSAndroid Build Coastguard Worker ' instead of "__getitem__()"\n' 10671*cda5da8dSAndroid Build Coastguard Worker '\n' 10672*cda5da8dSAndroid Build Coastguard Worker '\n' 10673*cda5da8dSAndroid Build Coastguard Worker 'Emulating callable objects\n' 10674*cda5da8dSAndroid Build Coastguard Worker '==========================\n' 10675*cda5da8dSAndroid Build Coastguard Worker '\n' 10676*cda5da8dSAndroid Build Coastguard Worker 'object.__call__(self[, args...])\n' 10677*cda5da8dSAndroid Build Coastguard Worker '\n' 10678*cda5da8dSAndroid Build Coastguard Worker ' Called when the instance is “called” as a function; if ' 10679*cda5da8dSAndroid Build Coastguard Worker 'this method\n' 10680*cda5da8dSAndroid Build Coastguard Worker ' is defined, "x(arg1, arg2, ...)" roughly translates to\n' 10681*cda5da8dSAndroid Build Coastguard Worker ' "type(x).__call__(x, arg1, ...)".\n' 10682*cda5da8dSAndroid Build Coastguard Worker '\n' 10683*cda5da8dSAndroid Build Coastguard Worker '\n' 10684*cda5da8dSAndroid Build Coastguard Worker 'Emulating container types\n' 10685*cda5da8dSAndroid Build Coastguard Worker '=========================\n' 10686*cda5da8dSAndroid Build Coastguard Worker '\n' 10687*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to implement container ' 10688*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 10689*cda5da8dSAndroid Build Coastguard Worker 'Containers usually are *sequences* (such as "lists" or ' 10690*cda5da8dSAndroid Build Coastguard Worker '"tuples") or\n' 10691*cda5da8dSAndroid Build Coastguard Worker '*mappings* (like "dictionaries"), but can represent other ' 10692*cda5da8dSAndroid Build Coastguard Worker 'containers\n' 10693*cda5da8dSAndroid Build Coastguard Worker 'as well. The first set of methods is used either to emulate ' 10694*cda5da8dSAndroid Build Coastguard Worker 'a\n' 10695*cda5da8dSAndroid Build Coastguard Worker 'sequence or to emulate a mapping; the difference is that for ' 10696*cda5da8dSAndroid Build Coastguard Worker 'a\n' 10697*cda5da8dSAndroid Build Coastguard Worker 'sequence, the allowable keys should be the integers *k* for ' 10698*cda5da8dSAndroid Build Coastguard Worker 'which "0\n' 10699*cda5da8dSAndroid Build Coastguard Worker '<= k < N" where *N* is the length of the sequence, or ' 10700*cda5da8dSAndroid Build Coastguard Worker '"slice" objects,\n' 10701*cda5da8dSAndroid Build Coastguard Worker 'which define a range of items. It is also recommended that ' 10702*cda5da8dSAndroid Build Coastguard Worker 'mappings\n' 10703*cda5da8dSAndroid Build Coastguard Worker 'provide the methods "keys()", "values()", "items()", ' 10704*cda5da8dSAndroid Build Coastguard Worker '"get()",\n' 10705*cda5da8dSAndroid Build Coastguard Worker '"clear()", "setdefault()", "pop()", "popitem()", "copy()", ' 10706*cda5da8dSAndroid Build Coastguard Worker 'and\n' 10707*cda5da8dSAndroid Build Coastguard Worker '"update()" behaving similar to those for Python’s standard\n' 10708*cda5da8dSAndroid Build Coastguard Worker '"dictionary" objects. The "collections.abc" module provides ' 10709*cda5da8dSAndroid Build Coastguard Worker 'a\n' 10710*cda5da8dSAndroid Build Coastguard Worker '"MutableMapping" *abstract base class* to help create those ' 10711*cda5da8dSAndroid Build Coastguard Worker 'methods\n' 10712*cda5da8dSAndroid Build Coastguard Worker 'from a base set of "__getitem__()", "__setitem__()", ' 10713*cda5da8dSAndroid Build Coastguard Worker '"__delitem__()",\n' 10714*cda5da8dSAndroid Build Coastguard Worker 'and "keys()". Mutable sequences should provide methods ' 10715*cda5da8dSAndroid Build Coastguard Worker '"append()",\n' 10716*cda5da8dSAndroid Build Coastguard Worker '"count()", "index()", "extend()", "insert()", "pop()", ' 10717*cda5da8dSAndroid Build Coastguard Worker '"remove()",\n' 10718*cda5da8dSAndroid Build Coastguard Worker '"reverse()" and "sort()", like Python standard "list" ' 10719*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 10720*cda5da8dSAndroid Build Coastguard Worker 'Finally, sequence types should implement addition (meaning\n' 10721*cda5da8dSAndroid Build Coastguard Worker 'concatenation) and multiplication (meaning repetition) by ' 10722*cda5da8dSAndroid Build Coastguard Worker 'defining the\n' 10723*cda5da8dSAndroid Build Coastguard Worker 'methods "__add__()", "__radd__()", "__iadd__()", ' 10724*cda5da8dSAndroid Build Coastguard Worker '"__mul__()",\n' 10725*cda5da8dSAndroid Build Coastguard Worker '"__rmul__()" and "__imul__()" described below; they should ' 10726*cda5da8dSAndroid Build Coastguard Worker 'not define\n' 10727*cda5da8dSAndroid Build Coastguard Worker 'other numerical operators. It is recommended that both ' 10728*cda5da8dSAndroid Build Coastguard Worker 'mappings and\n' 10729*cda5da8dSAndroid Build Coastguard Worker 'sequences implement the "__contains__()" method to allow ' 10730*cda5da8dSAndroid Build Coastguard Worker 'efficient use\n' 10731*cda5da8dSAndroid Build Coastguard Worker 'of the "in" operator; for mappings, "in" should search the ' 10732*cda5da8dSAndroid Build Coastguard Worker 'mapping’s\n' 10733*cda5da8dSAndroid Build Coastguard Worker 'keys; for sequences, it should search through the values. ' 10734*cda5da8dSAndroid Build Coastguard Worker 'It is\n' 10735*cda5da8dSAndroid Build Coastguard Worker 'further recommended that both mappings and sequences ' 10736*cda5da8dSAndroid Build Coastguard Worker 'implement the\n' 10737*cda5da8dSAndroid Build Coastguard Worker '"__iter__()" method to allow efficient iteration through ' 10738*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10739*cda5da8dSAndroid Build Coastguard Worker 'container; for mappings, "__iter__()" should iterate through ' 10740*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10741*cda5da8dSAndroid Build Coastguard Worker 'object’s keys; for sequences, it should iterate through the ' 10742*cda5da8dSAndroid Build Coastguard Worker 'values.\n' 10743*cda5da8dSAndroid Build Coastguard Worker '\n' 10744*cda5da8dSAndroid Build Coastguard Worker 'object.__len__(self)\n' 10745*cda5da8dSAndroid Build Coastguard Worker '\n' 10746*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in function "len()". ' 10747*cda5da8dSAndroid Build Coastguard Worker 'Should return\n' 10748*cda5da8dSAndroid Build Coastguard Worker ' the length of the object, an integer ">=" 0. Also, an ' 10749*cda5da8dSAndroid Build Coastguard Worker 'object that\n' 10750*cda5da8dSAndroid Build Coastguard Worker ' doesn’t define a "__bool__()" method and whose ' 10751*cda5da8dSAndroid Build Coastguard Worker '"__len__()" method\n' 10752*cda5da8dSAndroid Build Coastguard Worker ' returns zero is considered to be false in a Boolean ' 10753*cda5da8dSAndroid Build Coastguard Worker 'context.\n' 10754*cda5da8dSAndroid Build Coastguard Worker '\n' 10755*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** In CPython, the length ' 10756*cda5da8dSAndroid Build Coastguard Worker 'is\n' 10757*cda5da8dSAndroid Build Coastguard Worker ' required to be at most "sys.maxsize". If the length is ' 10758*cda5da8dSAndroid Build Coastguard Worker 'larger than\n' 10759*cda5da8dSAndroid Build Coastguard Worker ' "sys.maxsize" some features (such as "len()") may raise\n' 10760*cda5da8dSAndroid Build Coastguard Worker ' "OverflowError". To prevent raising "OverflowError" by ' 10761*cda5da8dSAndroid Build Coastguard Worker 'truth value\n' 10762*cda5da8dSAndroid Build Coastguard Worker ' testing, an object must define a "__bool__()" method.\n' 10763*cda5da8dSAndroid Build Coastguard Worker '\n' 10764*cda5da8dSAndroid Build Coastguard Worker 'object.__length_hint__(self)\n' 10765*cda5da8dSAndroid Build Coastguard Worker '\n' 10766*cda5da8dSAndroid Build Coastguard Worker ' Called to implement "operator.length_hint()". Should ' 10767*cda5da8dSAndroid Build Coastguard Worker 'return an\n' 10768*cda5da8dSAndroid Build Coastguard Worker ' estimated length for the object (which may be greater or ' 10769*cda5da8dSAndroid Build Coastguard Worker 'less than\n' 10770*cda5da8dSAndroid Build Coastguard Worker ' the actual length). The length must be an integer ">=" 0. ' 10771*cda5da8dSAndroid Build Coastguard Worker 'The\n' 10772*cda5da8dSAndroid Build Coastguard Worker ' return value may also be "NotImplemented", which is ' 10773*cda5da8dSAndroid Build Coastguard Worker 'treated the\n' 10774*cda5da8dSAndroid Build Coastguard Worker ' same as if the "__length_hint__" method didn’t exist at ' 10775*cda5da8dSAndroid Build Coastguard Worker 'all. This\n' 10776*cda5da8dSAndroid Build Coastguard Worker ' method is purely an optimization and is never required ' 10777*cda5da8dSAndroid Build Coastguard Worker 'for\n' 10778*cda5da8dSAndroid Build Coastguard Worker ' correctness.\n' 10779*cda5da8dSAndroid Build Coastguard Worker '\n' 10780*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.4.\n' 10781*cda5da8dSAndroid Build Coastguard Worker '\n' 10782*cda5da8dSAndroid Build Coastguard Worker 'Note:\n' 10783*cda5da8dSAndroid Build Coastguard Worker '\n' 10784*cda5da8dSAndroid Build Coastguard Worker ' Slicing is done exclusively with the following three ' 10785*cda5da8dSAndroid Build Coastguard Worker 'methods. A\n' 10786*cda5da8dSAndroid Build Coastguard Worker ' call like\n' 10787*cda5da8dSAndroid Build Coastguard Worker '\n' 10788*cda5da8dSAndroid Build Coastguard Worker ' a[1:2] = b\n' 10789*cda5da8dSAndroid Build Coastguard Worker '\n' 10790*cda5da8dSAndroid Build Coastguard Worker ' is translated to\n' 10791*cda5da8dSAndroid Build Coastguard Worker '\n' 10792*cda5da8dSAndroid Build Coastguard Worker ' a[slice(1, 2, None)] = b\n' 10793*cda5da8dSAndroid Build Coastguard Worker '\n' 10794*cda5da8dSAndroid Build Coastguard Worker ' and so forth. Missing slice items are always filled in ' 10795*cda5da8dSAndroid Build Coastguard Worker 'with "None".\n' 10796*cda5da8dSAndroid Build Coastguard Worker '\n' 10797*cda5da8dSAndroid Build Coastguard Worker 'object.__getitem__(self, key)\n' 10798*cda5da8dSAndroid Build Coastguard Worker '\n' 10799*cda5da8dSAndroid Build Coastguard Worker ' Called to implement evaluation of "self[key]". For ' 10800*cda5da8dSAndroid Build Coastguard Worker '*sequence*\n' 10801*cda5da8dSAndroid Build Coastguard Worker ' types, the accepted keys should be integers and slice ' 10802*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 10803*cda5da8dSAndroid Build Coastguard Worker ' Note that the special interpretation of negative indexes ' 10804*cda5da8dSAndroid Build Coastguard Worker '(if the\n' 10805*cda5da8dSAndroid Build Coastguard Worker ' class wishes to emulate a *sequence* type) is up to the\n' 10806*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()" method. If *key* is of an inappropriate ' 10807*cda5da8dSAndroid Build Coastguard Worker 'type,\n' 10808*cda5da8dSAndroid Build Coastguard Worker ' "TypeError" may be raised; if of a value outside the set ' 10809*cda5da8dSAndroid Build Coastguard Worker 'of indexes\n' 10810*cda5da8dSAndroid Build Coastguard Worker ' for the sequence (after any special interpretation of ' 10811*cda5da8dSAndroid Build Coastguard Worker 'negative\n' 10812*cda5da8dSAndroid Build Coastguard Worker ' values), "IndexError" should be raised. For *mapping* ' 10813*cda5da8dSAndroid Build Coastguard Worker 'types, if\n' 10814*cda5da8dSAndroid Build Coastguard Worker ' *key* is missing (not in the container), "KeyError" ' 10815*cda5da8dSAndroid Build Coastguard Worker 'should be\n' 10816*cda5da8dSAndroid Build Coastguard Worker ' raised.\n' 10817*cda5da8dSAndroid Build Coastguard Worker '\n' 10818*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 10819*cda5da8dSAndroid Build Coastguard Worker '\n' 10820*cda5da8dSAndroid Build Coastguard Worker ' "for" loops expect that an "IndexError" will be raised ' 10821*cda5da8dSAndroid Build Coastguard Worker 'for\n' 10822*cda5da8dSAndroid Build Coastguard Worker ' illegal indexes to allow proper detection of the end of ' 10823*cda5da8dSAndroid Build Coastguard Worker 'the\n' 10824*cda5da8dSAndroid Build Coastguard Worker ' sequence.\n' 10825*cda5da8dSAndroid Build Coastguard Worker '\n' 10826*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 10827*cda5da8dSAndroid Build Coastguard Worker '\n' 10828*cda5da8dSAndroid Build Coastguard Worker ' When subscripting a *class*, the special class method\n' 10829*cda5da8dSAndroid Build Coastguard Worker ' "__class_getitem__()" may be called instead of ' 10830*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()".\n' 10831*cda5da8dSAndroid Build Coastguard Worker ' See __class_getitem__ versus __getitem__ for more ' 10832*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 10833*cda5da8dSAndroid Build Coastguard Worker '\n' 10834*cda5da8dSAndroid Build Coastguard Worker 'object.__setitem__(self, key, value)\n' 10835*cda5da8dSAndroid Build Coastguard Worker '\n' 10836*cda5da8dSAndroid Build Coastguard Worker ' Called to implement assignment to "self[key]". Same note ' 10837*cda5da8dSAndroid Build Coastguard Worker 'as for\n' 10838*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()". This should only be implemented for ' 10839*cda5da8dSAndroid Build Coastguard Worker 'mappings if\n' 10840*cda5da8dSAndroid Build Coastguard Worker ' the objects support changes to the values for keys, or if ' 10841*cda5da8dSAndroid Build Coastguard Worker 'new keys\n' 10842*cda5da8dSAndroid Build Coastguard Worker ' can be added, or for sequences if elements can be ' 10843*cda5da8dSAndroid Build Coastguard Worker 'replaced. The\n' 10844*cda5da8dSAndroid Build Coastguard Worker ' same exceptions should be raised for improper *key* ' 10845*cda5da8dSAndroid Build Coastguard Worker 'values as for\n' 10846*cda5da8dSAndroid Build Coastguard Worker ' the "__getitem__()" method.\n' 10847*cda5da8dSAndroid Build Coastguard Worker '\n' 10848*cda5da8dSAndroid Build Coastguard Worker 'object.__delitem__(self, key)\n' 10849*cda5da8dSAndroid Build Coastguard Worker '\n' 10850*cda5da8dSAndroid Build Coastguard Worker ' Called to implement deletion of "self[key]". Same note ' 10851*cda5da8dSAndroid Build Coastguard Worker 'as for\n' 10852*cda5da8dSAndroid Build Coastguard Worker ' "__getitem__()". This should only be implemented for ' 10853*cda5da8dSAndroid Build Coastguard Worker 'mappings if\n' 10854*cda5da8dSAndroid Build Coastguard Worker ' the objects support removal of keys, or for sequences if ' 10855*cda5da8dSAndroid Build Coastguard Worker 'elements\n' 10856*cda5da8dSAndroid Build Coastguard Worker ' can be removed from the sequence. The same exceptions ' 10857*cda5da8dSAndroid Build Coastguard Worker 'should be\n' 10858*cda5da8dSAndroid Build Coastguard Worker ' raised for improper *key* values as for the ' 10859*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()" method.\n' 10860*cda5da8dSAndroid Build Coastguard Worker '\n' 10861*cda5da8dSAndroid Build Coastguard Worker 'object.__missing__(self, key)\n' 10862*cda5da8dSAndroid Build Coastguard Worker '\n' 10863*cda5da8dSAndroid Build Coastguard Worker ' Called by "dict"."__getitem__()" to implement "self[key]" ' 10864*cda5da8dSAndroid Build Coastguard Worker 'for dict\n' 10865*cda5da8dSAndroid Build Coastguard Worker ' subclasses when key is not in the dictionary.\n' 10866*cda5da8dSAndroid Build Coastguard Worker '\n' 10867*cda5da8dSAndroid Build Coastguard Worker 'object.__iter__(self)\n' 10868*cda5da8dSAndroid Build Coastguard Worker '\n' 10869*cda5da8dSAndroid Build Coastguard Worker ' This method is called when an *iterator* is required for ' 10870*cda5da8dSAndroid Build Coastguard Worker 'a\n' 10871*cda5da8dSAndroid Build Coastguard Worker ' container. This method should return a new iterator ' 10872*cda5da8dSAndroid Build Coastguard Worker 'object that can\n' 10873*cda5da8dSAndroid Build Coastguard Worker ' iterate over all the objects in the container. For ' 10874*cda5da8dSAndroid Build Coastguard Worker 'mappings, it\n' 10875*cda5da8dSAndroid Build Coastguard Worker ' should iterate over the keys of the container.\n' 10876*cda5da8dSAndroid Build Coastguard Worker '\n' 10877*cda5da8dSAndroid Build Coastguard Worker 'object.__reversed__(self)\n' 10878*cda5da8dSAndroid Build Coastguard Worker '\n' 10879*cda5da8dSAndroid Build Coastguard Worker ' Called (if present) by the "reversed()" built-in to ' 10880*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 10881*cda5da8dSAndroid Build Coastguard Worker ' reverse iteration. It should return a new iterator ' 10882*cda5da8dSAndroid Build Coastguard Worker 'object that\n' 10883*cda5da8dSAndroid Build Coastguard Worker ' iterates over all the objects in the container in reverse ' 10884*cda5da8dSAndroid Build Coastguard Worker 'order.\n' 10885*cda5da8dSAndroid Build Coastguard Worker '\n' 10886*cda5da8dSAndroid Build Coastguard Worker ' If the "__reversed__()" method is not provided, the ' 10887*cda5da8dSAndroid Build Coastguard Worker '"reversed()"\n' 10888*cda5da8dSAndroid Build Coastguard Worker ' built-in will fall back to using the sequence protocol ' 10889*cda5da8dSAndroid Build Coastguard Worker '("__len__()"\n' 10890*cda5da8dSAndroid Build Coastguard Worker ' and "__getitem__()"). Objects that support the sequence ' 10891*cda5da8dSAndroid Build Coastguard Worker 'protocol\n' 10892*cda5da8dSAndroid Build Coastguard Worker ' should only provide "__reversed__()" if they can provide ' 10893*cda5da8dSAndroid Build Coastguard Worker 'an\n' 10894*cda5da8dSAndroid Build Coastguard Worker ' implementation that is more efficient than the one ' 10895*cda5da8dSAndroid Build Coastguard Worker 'provided by\n' 10896*cda5da8dSAndroid Build Coastguard Worker ' "reversed()".\n' 10897*cda5da8dSAndroid Build Coastguard Worker '\n' 10898*cda5da8dSAndroid Build Coastguard Worker 'The membership test operators ("in" and "not in") are ' 10899*cda5da8dSAndroid Build Coastguard Worker 'normally\n' 10900*cda5da8dSAndroid Build Coastguard Worker 'implemented as an iteration through a container. However, ' 10901*cda5da8dSAndroid Build Coastguard Worker 'container\n' 10902*cda5da8dSAndroid Build Coastguard Worker 'objects can supply the following special method with a more ' 10903*cda5da8dSAndroid Build Coastguard Worker 'efficient\n' 10904*cda5da8dSAndroid Build Coastguard Worker 'implementation, which also does not require the object be ' 10905*cda5da8dSAndroid Build Coastguard Worker 'iterable.\n' 10906*cda5da8dSAndroid Build Coastguard Worker '\n' 10907*cda5da8dSAndroid Build Coastguard Worker 'object.__contains__(self, item)\n' 10908*cda5da8dSAndroid Build Coastguard Worker '\n' 10909*cda5da8dSAndroid Build Coastguard Worker ' Called to implement membership test operators. Should ' 10910*cda5da8dSAndroid Build Coastguard Worker 'return true\n' 10911*cda5da8dSAndroid Build Coastguard Worker ' if *item* is in *self*, false otherwise. For mapping ' 10912*cda5da8dSAndroid Build Coastguard Worker 'objects, this\n' 10913*cda5da8dSAndroid Build Coastguard Worker ' should consider the keys of the mapping rather than the ' 10914*cda5da8dSAndroid Build Coastguard Worker 'values or\n' 10915*cda5da8dSAndroid Build Coastguard Worker ' the key-item pairs.\n' 10916*cda5da8dSAndroid Build Coastguard Worker '\n' 10917*cda5da8dSAndroid Build Coastguard Worker ' For objects that don’t define "__contains__()", the ' 10918*cda5da8dSAndroid Build Coastguard Worker 'membership test\n' 10919*cda5da8dSAndroid Build Coastguard Worker ' first tries iteration via "__iter__()", then the old ' 10920*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 10921*cda5da8dSAndroid Build Coastguard Worker ' iteration protocol via "__getitem__()", see this section ' 10922*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 10923*cda5da8dSAndroid Build Coastguard Worker ' language reference.\n' 10924*cda5da8dSAndroid Build Coastguard Worker '\n' 10925*cda5da8dSAndroid Build Coastguard Worker '\n' 10926*cda5da8dSAndroid Build Coastguard Worker 'Emulating numeric types\n' 10927*cda5da8dSAndroid Build Coastguard Worker '=======================\n' 10928*cda5da8dSAndroid Build Coastguard Worker '\n' 10929*cda5da8dSAndroid Build Coastguard Worker 'The following methods can be defined to emulate numeric ' 10930*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 10931*cda5da8dSAndroid Build Coastguard Worker 'Methods corresponding to operations that are not supported ' 10932*cda5da8dSAndroid Build Coastguard Worker 'by the\n' 10933*cda5da8dSAndroid Build Coastguard Worker 'particular kind of number implemented (e.g., bitwise ' 10934*cda5da8dSAndroid Build Coastguard Worker 'operations for\n' 10935*cda5da8dSAndroid Build Coastguard Worker 'non-integral numbers) should be left undefined.\n' 10936*cda5da8dSAndroid Build Coastguard Worker '\n' 10937*cda5da8dSAndroid Build Coastguard Worker 'object.__add__(self, other)\n' 10938*cda5da8dSAndroid Build Coastguard Worker 'object.__sub__(self, other)\n' 10939*cda5da8dSAndroid Build Coastguard Worker 'object.__mul__(self, other)\n' 10940*cda5da8dSAndroid Build Coastguard Worker 'object.__matmul__(self, other)\n' 10941*cda5da8dSAndroid Build Coastguard Worker 'object.__truediv__(self, other)\n' 10942*cda5da8dSAndroid Build Coastguard Worker 'object.__floordiv__(self, other)\n' 10943*cda5da8dSAndroid Build Coastguard Worker 'object.__mod__(self, other)\n' 10944*cda5da8dSAndroid Build Coastguard Worker 'object.__divmod__(self, other)\n' 10945*cda5da8dSAndroid Build Coastguard Worker 'object.__pow__(self, other[, modulo])\n' 10946*cda5da8dSAndroid Build Coastguard Worker 'object.__lshift__(self, other)\n' 10947*cda5da8dSAndroid Build Coastguard Worker 'object.__rshift__(self, other)\n' 10948*cda5da8dSAndroid Build Coastguard Worker 'object.__and__(self, other)\n' 10949*cda5da8dSAndroid Build Coastguard Worker 'object.__xor__(self, other)\n' 10950*cda5da8dSAndroid Build Coastguard Worker 'object.__or__(self, other)\n' 10951*cda5da8dSAndroid Build Coastguard Worker '\n' 10952*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the binary ' 10953*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 10954*cda5da8dSAndroid Build Coastguard Worker ' operations ("+", "-", "*", "@", "/", "//", "%", ' 10955*cda5da8dSAndroid Build Coastguard Worker '"divmod()",\n' 10956*cda5da8dSAndroid Build Coastguard Worker ' "pow()", "**", "<<", ">>", "&", "^", "|"). For instance, ' 10957*cda5da8dSAndroid Build Coastguard Worker 'to\n' 10958*cda5da8dSAndroid Build Coastguard Worker ' evaluate the expression "x + y", where *x* is an instance ' 10959*cda5da8dSAndroid Build Coastguard Worker 'of a\n' 10960*cda5da8dSAndroid Build Coastguard Worker ' class that has an "__add__()" method, "type(x).__add__(x, ' 10961*cda5da8dSAndroid Build Coastguard Worker 'y)" is\n' 10962*cda5da8dSAndroid Build Coastguard Worker ' called. The "__divmod__()" method should be the ' 10963*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 10964*cda5da8dSAndroid Build Coastguard Worker ' using "__floordiv__()" and "__mod__()"; it should not be ' 10965*cda5da8dSAndroid Build Coastguard Worker 'related to\n' 10966*cda5da8dSAndroid Build Coastguard Worker ' "__truediv__()". Note that "__pow__()" should be defined ' 10967*cda5da8dSAndroid Build Coastguard Worker 'to accept\n' 10968*cda5da8dSAndroid Build Coastguard Worker ' an optional third argument if the ternary version of the ' 10969*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 10970*cda5da8dSAndroid Build Coastguard Worker ' "pow()" function is to be supported.\n' 10971*cda5da8dSAndroid Build Coastguard Worker '\n' 10972*cda5da8dSAndroid Build Coastguard Worker ' If one of those methods does not support the operation ' 10973*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 10974*cda5da8dSAndroid Build Coastguard Worker ' supplied arguments, it should return "NotImplemented".\n' 10975*cda5da8dSAndroid Build Coastguard Worker '\n' 10976*cda5da8dSAndroid Build Coastguard Worker 'object.__radd__(self, other)\n' 10977*cda5da8dSAndroid Build Coastguard Worker 'object.__rsub__(self, other)\n' 10978*cda5da8dSAndroid Build Coastguard Worker 'object.__rmul__(self, other)\n' 10979*cda5da8dSAndroid Build Coastguard Worker 'object.__rmatmul__(self, other)\n' 10980*cda5da8dSAndroid Build Coastguard Worker 'object.__rtruediv__(self, other)\n' 10981*cda5da8dSAndroid Build Coastguard Worker 'object.__rfloordiv__(self, other)\n' 10982*cda5da8dSAndroid Build Coastguard Worker 'object.__rmod__(self, other)\n' 10983*cda5da8dSAndroid Build Coastguard Worker 'object.__rdivmod__(self, other)\n' 10984*cda5da8dSAndroid Build Coastguard Worker 'object.__rpow__(self, other[, modulo])\n' 10985*cda5da8dSAndroid Build Coastguard Worker 'object.__rlshift__(self, other)\n' 10986*cda5da8dSAndroid Build Coastguard Worker 'object.__rrshift__(self, other)\n' 10987*cda5da8dSAndroid Build Coastguard Worker 'object.__rand__(self, other)\n' 10988*cda5da8dSAndroid Build Coastguard Worker 'object.__rxor__(self, other)\n' 10989*cda5da8dSAndroid Build Coastguard Worker 'object.__ror__(self, other)\n' 10990*cda5da8dSAndroid Build Coastguard Worker '\n' 10991*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the binary ' 10992*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 10993*cda5da8dSAndroid Build Coastguard Worker ' operations ("+", "-", "*", "@", "/", "//", "%", ' 10994*cda5da8dSAndroid Build Coastguard Worker '"divmod()",\n' 10995*cda5da8dSAndroid Build Coastguard Worker ' "pow()", "**", "<<", ">>", "&", "^", "|") with reflected ' 10996*cda5da8dSAndroid Build Coastguard Worker '(swapped)\n' 10997*cda5da8dSAndroid Build Coastguard Worker ' operands. These functions are only called if the left ' 10998*cda5da8dSAndroid Build Coastguard Worker 'operand does\n' 10999*cda5da8dSAndroid Build Coastguard Worker ' not support the corresponding operation [3] and the ' 11000*cda5da8dSAndroid Build Coastguard Worker 'operands are of\n' 11001*cda5da8dSAndroid Build Coastguard Worker ' different types. [4] For instance, to evaluate the ' 11002*cda5da8dSAndroid Build Coastguard Worker 'expression "x -\n' 11003*cda5da8dSAndroid Build Coastguard Worker ' y", where *y* is an instance of a class that has an ' 11004*cda5da8dSAndroid Build Coastguard Worker '"__rsub__()"\n' 11005*cda5da8dSAndroid Build Coastguard Worker ' method, "type(y).__rsub__(y, x)" is called if ' 11006*cda5da8dSAndroid Build Coastguard Worker '"type(x).__sub__(x,\n' 11007*cda5da8dSAndroid Build Coastguard Worker ' y)" returns *NotImplemented*.\n' 11008*cda5da8dSAndroid Build Coastguard Worker '\n' 11009*cda5da8dSAndroid Build Coastguard Worker ' Note that ternary "pow()" will not try calling ' 11010*cda5da8dSAndroid Build Coastguard Worker '"__rpow__()" (the\n' 11011*cda5da8dSAndroid Build Coastguard Worker ' coercion rules would become too complicated).\n' 11012*cda5da8dSAndroid Build Coastguard Worker '\n' 11013*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 11014*cda5da8dSAndroid Build Coastguard Worker '\n' 11015*cda5da8dSAndroid Build Coastguard Worker ' If the right operand’s type is a subclass of the left ' 11016*cda5da8dSAndroid Build Coastguard Worker 'operand’s\n' 11017*cda5da8dSAndroid Build Coastguard Worker ' type and that subclass provides a different ' 11018*cda5da8dSAndroid Build Coastguard Worker 'implementation of the\n' 11019*cda5da8dSAndroid Build Coastguard Worker ' reflected method for the operation, this method will be ' 11020*cda5da8dSAndroid Build Coastguard Worker 'called\n' 11021*cda5da8dSAndroid Build Coastguard Worker ' before the left operand’s non-reflected method. This ' 11022*cda5da8dSAndroid Build Coastguard Worker 'behavior\n' 11023*cda5da8dSAndroid Build Coastguard Worker ' allows subclasses to override their ancestors’ ' 11024*cda5da8dSAndroid Build Coastguard Worker 'operations.\n' 11025*cda5da8dSAndroid Build Coastguard Worker '\n' 11026*cda5da8dSAndroid Build Coastguard Worker 'object.__iadd__(self, other)\n' 11027*cda5da8dSAndroid Build Coastguard Worker 'object.__isub__(self, other)\n' 11028*cda5da8dSAndroid Build Coastguard Worker 'object.__imul__(self, other)\n' 11029*cda5da8dSAndroid Build Coastguard Worker 'object.__imatmul__(self, other)\n' 11030*cda5da8dSAndroid Build Coastguard Worker 'object.__itruediv__(self, other)\n' 11031*cda5da8dSAndroid Build Coastguard Worker 'object.__ifloordiv__(self, other)\n' 11032*cda5da8dSAndroid Build Coastguard Worker 'object.__imod__(self, other)\n' 11033*cda5da8dSAndroid Build Coastguard Worker 'object.__ipow__(self, other[, modulo])\n' 11034*cda5da8dSAndroid Build Coastguard Worker 'object.__ilshift__(self, other)\n' 11035*cda5da8dSAndroid Build Coastguard Worker 'object.__irshift__(self, other)\n' 11036*cda5da8dSAndroid Build Coastguard Worker 'object.__iand__(self, other)\n' 11037*cda5da8dSAndroid Build Coastguard Worker 'object.__ixor__(self, other)\n' 11038*cda5da8dSAndroid Build Coastguard Worker 'object.__ior__(self, other)\n' 11039*cda5da8dSAndroid Build Coastguard Worker '\n' 11040*cda5da8dSAndroid Build Coastguard Worker ' These methods are called to implement the augmented ' 11041*cda5da8dSAndroid Build Coastguard Worker 'arithmetic\n' 11042*cda5da8dSAndroid Build Coastguard Worker ' assignments ("+=", "-=", "*=", "@=", "/=", "//=", "%=", ' 11043*cda5da8dSAndroid Build Coastguard Worker '"**=",\n' 11044*cda5da8dSAndroid Build Coastguard Worker ' "<<=", ">>=", "&=", "^=", "|="). These methods should ' 11045*cda5da8dSAndroid Build Coastguard Worker 'attempt to\n' 11046*cda5da8dSAndroid Build Coastguard Worker ' do the operation in-place (modifying *self*) and return ' 11047*cda5da8dSAndroid Build Coastguard Worker 'the result\n' 11048*cda5da8dSAndroid Build Coastguard Worker ' (which could be, but does not have to be, *self*). If a ' 11049*cda5da8dSAndroid Build Coastguard Worker 'specific\n' 11050*cda5da8dSAndroid Build Coastguard Worker ' method is not defined, the augmented assignment falls ' 11051*cda5da8dSAndroid Build Coastguard Worker 'back to the\n' 11052*cda5da8dSAndroid Build Coastguard Worker ' normal methods. For instance, if *x* is an instance of a ' 11053*cda5da8dSAndroid Build Coastguard Worker 'class\n' 11054*cda5da8dSAndroid Build Coastguard Worker ' with an "__iadd__()" method, "x += y" is equivalent to "x ' 11055*cda5da8dSAndroid Build Coastguard Worker '=\n' 11056*cda5da8dSAndroid Build Coastguard Worker ' x.__iadd__(y)" . Otherwise, "x.__add__(y)" and ' 11057*cda5da8dSAndroid Build Coastguard Worker '"y.__radd__(x)" are\n' 11058*cda5da8dSAndroid Build Coastguard Worker ' considered, as with the evaluation of "x + y". In ' 11059*cda5da8dSAndroid Build Coastguard Worker 'certain\n' 11060*cda5da8dSAndroid Build Coastguard Worker ' situations, augmented assignment can result in unexpected ' 11061*cda5da8dSAndroid Build Coastguard Worker 'errors\n' 11062*cda5da8dSAndroid Build Coastguard Worker ' (see Why does a_tuple[i] += [‘item’] raise an exception ' 11063*cda5da8dSAndroid Build Coastguard Worker 'when the\n' 11064*cda5da8dSAndroid Build Coastguard Worker ' addition works?), but this behavior is in fact part of ' 11065*cda5da8dSAndroid Build Coastguard Worker 'the data\n' 11066*cda5da8dSAndroid Build Coastguard Worker ' model.\n' 11067*cda5da8dSAndroid Build Coastguard Worker '\n' 11068*cda5da8dSAndroid Build Coastguard Worker 'object.__neg__(self)\n' 11069*cda5da8dSAndroid Build Coastguard Worker 'object.__pos__(self)\n' 11070*cda5da8dSAndroid Build Coastguard Worker 'object.__abs__(self)\n' 11071*cda5da8dSAndroid Build Coastguard Worker 'object.__invert__(self)\n' 11072*cda5da8dSAndroid Build Coastguard Worker '\n' 11073*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the unary arithmetic operations ("-", ' 11074*cda5da8dSAndroid Build Coastguard Worker '"+",\n' 11075*cda5da8dSAndroid Build Coastguard Worker ' "abs()" and "~").\n' 11076*cda5da8dSAndroid Build Coastguard Worker '\n' 11077*cda5da8dSAndroid Build Coastguard Worker 'object.__complex__(self)\n' 11078*cda5da8dSAndroid Build Coastguard Worker 'object.__int__(self)\n' 11079*cda5da8dSAndroid Build Coastguard Worker 'object.__float__(self)\n' 11080*cda5da8dSAndroid Build Coastguard Worker '\n' 11081*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in functions "complex()", ' 11082*cda5da8dSAndroid Build Coastguard Worker '"int()" and\n' 11083*cda5da8dSAndroid Build Coastguard Worker ' "float()". Should return a value of the appropriate ' 11084*cda5da8dSAndroid Build Coastguard Worker 'type.\n' 11085*cda5da8dSAndroid Build Coastguard Worker '\n' 11086*cda5da8dSAndroid Build Coastguard Worker 'object.__index__(self)\n' 11087*cda5da8dSAndroid Build Coastguard Worker '\n' 11088*cda5da8dSAndroid Build Coastguard Worker ' Called to implement "operator.index()", and whenever ' 11089*cda5da8dSAndroid Build Coastguard Worker 'Python needs\n' 11090*cda5da8dSAndroid Build Coastguard Worker ' to losslessly convert the numeric object to an integer ' 11091*cda5da8dSAndroid Build Coastguard Worker 'object (such\n' 11092*cda5da8dSAndroid Build Coastguard Worker ' as in slicing, or in the built-in "bin()", "hex()" and ' 11093*cda5da8dSAndroid Build Coastguard Worker '"oct()"\n' 11094*cda5da8dSAndroid Build Coastguard Worker ' functions). Presence of this method indicates that the ' 11095*cda5da8dSAndroid Build Coastguard Worker 'numeric\n' 11096*cda5da8dSAndroid Build Coastguard Worker ' object is an integer type. Must return an integer.\n' 11097*cda5da8dSAndroid Build Coastguard Worker '\n' 11098*cda5da8dSAndroid Build Coastguard Worker ' If "__int__()", "__float__()" and "__complex__()" are not ' 11099*cda5da8dSAndroid Build Coastguard Worker 'defined\n' 11100*cda5da8dSAndroid Build Coastguard Worker ' then corresponding built-in functions "int()", "float()" ' 11101*cda5da8dSAndroid Build Coastguard Worker 'and\n' 11102*cda5da8dSAndroid Build Coastguard Worker ' "complex()" fall back to "__index__()".\n' 11103*cda5da8dSAndroid Build Coastguard Worker '\n' 11104*cda5da8dSAndroid Build Coastguard Worker 'object.__round__(self[, ndigits])\n' 11105*cda5da8dSAndroid Build Coastguard Worker 'object.__trunc__(self)\n' 11106*cda5da8dSAndroid Build Coastguard Worker 'object.__floor__(self)\n' 11107*cda5da8dSAndroid Build Coastguard Worker 'object.__ceil__(self)\n' 11108*cda5da8dSAndroid Build Coastguard Worker '\n' 11109*cda5da8dSAndroid Build Coastguard Worker ' Called to implement the built-in function "round()" and ' 11110*cda5da8dSAndroid Build Coastguard Worker '"math"\n' 11111*cda5da8dSAndroid Build Coastguard Worker ' functions "trunc()", "floor()" and "ceil()". Unless ' 11112*cda5da8dSAndroid Build Coastguard Worker '*ndigits* is\n' 11113*cda5da8dSAndroid Build Coastguard Worker ' passed to "__round__()" all these methods should return ' 11114*cda5da8dSAndroid Build Coastguard Worker 'the value\n' 11115*cda5da8dSAndroid Build Coastguard Worker ' of the object truncated to an "Integral" (typically an ' 11116*cda5da8dSAndroid Build Coastguard Worker '"int").\n' 11117*cda5da8dSAndroid Build Coastguard Worker '\n' 11118*cda5da8dSAndroid Build Coastguard Worker ' The built-in function "int()" falls back to "__trunc__()" ' 11119*cda5da8dSAndroid Build Coastguard Worker 'if\n' 11120*cda5da8dSAndroid Build Coastguard Worker ' neither "__int__()" nor "__index__()" is defined.\n' 11121*cda5da8dSAndroid Build Coastguard Worker '\n' 11122*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.11: The delegation of "int()" to ' 11123*cda5da8dSAndroid Build Coastguard Worker '"__trunc__()"\n' 11124*cda5da8dSAndroid Build Coastguard Worker ' is deprecated.\n' 11125*cda5da8dSAndroid Build Coastguard Worker '\n' 11126*cda5da8dSAndroid Build Coastguard Worker '\n' 11127*cda5da8dSAndroid Build Coastguard Worker 'With Statement Context Managers\n' 11128*cda5da8dSAndroid Build Coastguard Worker '===============================\n' 11129*cda5da8dSAndroid Build Coastguard Worker '\n' 11130*cda5da8dSAndroid Build Coastguard Worker 'A *context manager* is an object that defines the runtime ' 11131*cda5da8dSAndroid Build Coastguard Worker 'context to\n' 11132*cda5da8dSAndroid Build Coastguard Worker 'be established when executing a "with" statement. The ' 11133*cda5da8dSAndroid Build Coastguard Worker 'context manager\n' 11134*cda5da8dSAndroid Build Coastguard Worker 'handles the entry into, and the exit from, the desired ' 11135*cda5da8dSAndroid Build Coastguard Worker 'runtime context\n' 11136*cda5da8dSAndroid Build Coastguard Worker 'for the execution of the block of code. Context managers ' 11137*cda5da8dSAndroid Build Coastguard Worker 'are normally\n' 11138*cda5da8dSAndroid Build Coastguard Worker 'invoked using the "with" statement (described in section The ' 11139*cda5da8dSAndroid Build Coastguard Worker 'with\n' 11140*cda5da8dSAndroid Build Coastguard Worker 'statement), but can also be used by directly invoking their ' 11141*cda5da8dSAndroid Build Coastguard Worker 'methods.\n' 11142*cda5da8dSAndroid Build Coastguard Worker '\n' 11143*cda5da8dSAndroid Build Coastguard Worker 'Typical uses of context managers include saving and ' 11144*cda5da8dSAndroid Build Coastguard Worker 'restoring various\n' 11145*cda5da8dSAndroid Build Coastguard Worker 'kinds of global state, locking and unlocking resources, ' 11146*cda5da8dSAndroid Build Coastguard Worker 'closing opened\n' 11147*cda5da8dSAndroid Build Coastguard Worker 'files, etc.\n' 11148*cda5da8dSAndroid Build Coastguard Worker '\n' 11149*cda5da8dSAndroid Build Coastguard Worker 'For more information on context managers, see Context ' 11150*cda5da8dSAndroid Build Coastguard Worker 'Manager Types.\n' 11151*cda5da8dSAndroid Build Coastguard Worker '\n' 11152*cda5da8dSAndroid Build Coastguard Worker 'object.__enter__(self)\n' 11153*cda5da8dSAndroid Build Coastguard Worker '\n' 11154*cda5da8dSAndroid Build Coastguard Worker ' Enter the runtime context related to this object. The ' 11155*cda5da8dSAndroid Build Coastguard Worker '"with"\n' 11156*cda5da8dSAndroid Build Coastguard Worker ' statement will bind this method’s return value to the ' 11157*cda5da8dSAndroid Build Coastguard Worker 'target(s)\n' 11158*cda5da8dSAndroid Build Coastguard Worker ' specified in the "as" clause of the statement, if any.\n' 11159*cda5da8dSAndroid Build Coastguard Worker '\n' 11160*cda5da8dSAndroid Build Coastguard Worker 'object.__exit__(self, exc_type, exc_value, traceback)\n' 11161*cda5da8dSAndroid Build Coastguard Worker '\n' 11162*cda5da8dSAndroid Build Coastguard Worker ' Exit the runtime context related to this object. The ' 11163*cda5da8dSAndroid Build Coastguard Worker 'parameters\n' 11164*cda5da8dSAndroid Build Coastguard Worker ' describe the exception that caused the context to be ' 11165*cda5da8dSAndroid Build Coastguard Worker 'exited. If the\n' 11166*cda5da8dSAndroid Build Coastguard Worker ' context was exited without an exception, all three ' 11167*cda5da8dSAndroid Build Coastguard Worker 'arguments will\n' 11168*cda5da8dSAndroid Build Coastguard Worker ' be "None".\n' 11169*cda5da8dSAndroid Build Coastguard Worker '\n' 11170*cda5da8dSAndroid Build Coastguard Worker ' If an exception is supplied, and the method wishes to ' 11171*cda5da8dSAndroid Build Coastguard Worker 'suppress the\n' 11172*cda5da8dSAndroid Build Coastguard Worker ' exception (i.e., prevent it from being propagated), it ' 11173*cda5da8dSAndroid Build Coastguard Worker 'should\n' 11174*cda5da8dSAndroid Build Coastguard Worker ' return a true value. Otherwise, the exception will be ' 11175*cda5da8dSAndroid Build Coastguard Worker 'processed\n' 11176*cda5da8dSAndroid Build Coastguard Worker ' normally upon exit from this method.\n' 11177*cda5da8dSAndroid Build Coastguard Worker '\n' 11178*cda5da8dSAndroid Build Coastguard Worker ' Note that "__exit__()" methods should not reraise the ' 11179*cda5da8dSAndroid Build Coastguard Worker 'passed-in\n' 11180*cda5da8dSAndroid Build Coastguard Worker ' exception; this is the caller’s responsibility.\n' 11181*cda5da8dSAndroid Build Coastguard Worker '\n' 11182*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 11183*cda5da8dSAndroid Build Coastguard Worker '\n' 11184*cda5da8dSAndroid Build Coastguard Worker ' **PEP 343** - The “with” statement\n' 11185*cda5da8dSAndroid Build Coastguard Worker ' The specification, background, and examples for the ' 11186*cda5da8dSAndroid Build Coastguard Worker 'Python "with"\n' 11187*cda5da8dSAndroid Build Coastguard Worker ' statement.\n' 11188*cda5da8dSAndroid Build Coastguard Worker '\n' 11189*cda5da8dSAndroid Build Coastguard Worker '\n' 11190*cda5da8dSAndroid Build Coastguard Worker 'Customizing positional arguments in class pattern matching\n' 11191*cda5da8dSAndroid Build Coastguard Worker '==========================================================\n' 11192*cda5da8dSAndroid Build Coastguard Worker '\n' 11193*cda5da8dSAndroid Build Coastguard Worker 'When using a class name in a pattern, positional arguments ' 11194*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 11195*cda5da8dSAndroid Build Coastguard Worker 'pattern are not allowed by default, i.e. "case MyClass(x, ' 11196*cda5da8dSAndroid Build Coastguard Worker 'y)" is\n' 11197*cda5da8dSAndroid Build Coastguard Worker 'typically invalid without special support in "MyClass". To ' 11198*cda5da8dSAndroid Build Coastguard Worker 'be able to\n' 11199*cda5da8dSAndroid Build Coastguard Worker 'use that kind of pattern, the class needs to define a ' 11200*cda5da8dSAndroid Build Coastguard Worker '*__match_args__*\n' 11201*cda5da8dSAndroid Build Coastguard Worker 'attribute.\n' 11202*cda5da8dSAndroid Build Coastguard Worker '\n' 11203*cda5da8dSAndroid Build Coastguard Worker 'object.__match_args__\n' 11204*cda5da8dSAndroid Build Coastguard Worker '\n' 11205*cda5da8dSAndroid Build Coastguard Worker ' This class variable can be assigned a tuple of strings. ' 11206*cda5da8dSAndroid Build Coastguard Worker 'When this\n' 11207*cda5da8dSAndroid Build Coastguard Worker ' class is used in a class pattern with positional ' 11208*cda5da8dSAndroid Build Coastguard Worker 'arguments, each\n' 11209*cda5da8dSAndroid Build Coastguard Worker ' positional argument will be converted into a keyword ' 11210*cda5da8dSAndroid Build Coastguard Worker 'argument,\n' 11211*cda5da8dSAndroid Build Coastguard Worker ' using the corresponding value in *__match_args__* as the ' 11212*cda5da8dSAndroid Build Coastguard Worker 'keyword.\n' 11213*cda5da8dSAndroid Build Coastguard Worker ' The absence of this attribute is equivalent to setting it ' 11214*cda5da8dSAndroid Build Coastguard Worker 'to "()".\n' 11215*cda5da8dSAndroid Build Coastguard Worker '\n' 11216*cda5da8dSAndroid Build Coastguard Worker 'For example, if "MyClass.__match_args__" is "("left", ' 11217*cda5da8dSAndroid Build Coastguard Worker '"center",\n' 11218*cda5da8dSAndroid Build Coastguard Worker '"right")" that means that "case MyClass(x, y)" is equivalent ' 11219*cda5da8dSAndroid Build Coastguard Worker 'to "case\n' 11220*cda5da8dSAndroid Build Coastguard Worker 'MyClass(left=x, center=y)". Note that the number of ' 11221*cda5da8dSAndroid Build Coastguard Worker 'arguments in the\n' 11222*cda5da8dSAndroid Build Coastguard Worker 'pattern must be smaller than or equal to the number of ' 11223*cda5da8dSAndroid Build Coastguard Worker 'elements in\n' 11224*cda5da8dSAndroid Build Coastguard Worker '*__match_args__*; if it is larger, the pattern match attempt ' 11225*cda5da8dSAndroid Build Coastguard Worker 'will\n' 11226*cda5da8dSAndroid Build Coastguard Worker 'raise a "TypeError".\n' 11227*cda5da8dSAndroid Build Coastguard Worker '\n' 11228*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.10.\n' 11229*cda5da8dSAndroid Build Coastguard Worker '\n' 11230*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 11231*cda5da8dSAndroid Build Coastguard Worker '\n' 11232*cda5da8dSAndroid Build Coastguard Worker ' **PEP 634** - Structural Pattern Matching\n' 11233*cda5da8dSAndroid Build Coastguard Worker ' The specification for the Python "match" statement.\n' 11234*cda5da8dSAndroid Build Coastguard Worker '\n' 11235*cda5da8dSAndroid Build Coastguard Worker '\n' 11236*cda5da8dSAndroid Build Coastguard Worker 'Special method lookup\n' 11237*cda5da8dSAndroid Build Coastguard Worker '=====================\n' 11238*cda5da8dSAndroid Build Coastguard Worker '\n' 11239*cda5da8dSAndroid Build Coastguard Worker 'For custom classes, implicit invocations of special methods ' 11240*cda5da8dSAndroid Build Coastguard Worker 'are only\n' 11241*cda5da8dSAndroid Build Coastguard Worker 'guaranteed to work correctly if defined on an object’s type, ' 11242*cda5da8dSAndroid Build Coastguard Worker 'not in\n' 11243*cda5da8dSAndroid Build Coastguard Worker 'the object’s instance dictionary. That behaviour is the ' 11244*cda5da8dSAndroid Build Coastguard Worker 'reason why\n' 11245*cda5da8dSAndroid Build Coastguard Worker 'the following code raises an exception:\n' 11246*cda5da8dSAndroid Build Coastguard Worker '\n' 11247*cda5da8dSAndroid Build Coastguard Worker ' >>> class C:\n' 11248*cda5da8dSAndroid Build Coastguard Worker ' ... pass\n' 11249*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 11250*cda5da8dSAndroid Build Coastguard Worker ' >>> c = C()\n' 11251*cda5da8dSAndroid Build Coastguard Worker ' >>> c.__len__ = lambda: 5\n' 11252*cda5da8dSAndroid Build Coastguard Worker ' >>> len(c)\n' 11253*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 11254*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 1, in <module>\n' 11255*cda5da8dSAndroid Build Coastguard Worker " TypeError: object of type 'C' has no len()\n" 11256*cda5da8dSAndroid Build Coastguard Worker '\n' 11257*cda5da8dSAndroid Build Coastguard Worker 'The rationale behind this behaviour lies with a number of ' 11258*cda5da8dSAndroid Build Coastguard Worker 'special\n' 11259*cda5da8dSAndroid Build Coastguard Worker 'methods such as "__hash__()" and "__repr__()" that are ' 11260*cda5da8dSAndroid Build Coastguard Worker 'implemented by\n' 11261*cda5da8dSAndroid Build Coastguard Worker 'all objects, including type objects. If the implicit lookup ' 11262*cda5da8dSAndroid Build Coastguard Worker 'of these\n' 11263*cda5da8dSAndroid Build Coastguard Worker 'methods used the conventional lookup process, they would ' 11264*cda5da8dSAndroid Build Coastguard Worker 'fail when\n' 11265*cda5da8dSAndroid Build Coastguard Worker 'invoked on the type object itself:\n' 11266*cda5da8dSAndroid Build Coastguard Worker '\n' 11267*cda5da8dSAndroid Build Coastguard Worker ' >>> 1 .__hash__() == hash(1)\n' 11268*cda5da8dSAndroid Build Coastguard Worker ' True\n' 11269*cda5da8dSAndroid Build Coastguard Worker ' >>> int.__hash__() == hash(int)\n' 11270*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 11271*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 1, in <module>\n' 11272*cda5da8dSAndroid Build Coastguard Worker " TypeError: descriptor '__hash__' of 'int' object needs an " 11273*cda5da8dSAndroid Build Coastguard Worker 'argument\n' 11274*cda5da8dSAndroid Build Coastguard Worker '\n' 11275*cda5da8dSAndroid Build Coastguard Worker 'Incorrectly attempting to invoke an unbound method of a ' 11276*cda5da8dSAndroid Build Coastguard Worker 'class in this\n' 11277*cda5da8dSAndroid Build Coastguard Worker 'way is sometimes referred to as ‘metaclass confusion’, and ' 11278*cda5da8dSAndroid Build Coastguard Worker 'is avoided\n' 11279*cda5da8dSAndroid Build Coastguard Worker 'by bypassing the instance when looking up special methods:\n' 11280*cda5da8dSAndroid Build Coastguard Worker '\n' 11281*cda5da8dSAndroid Build Coastguard Worker ' >>> type(1).__hash__(1) == hash(1)\n' 11282*cda5da8dSAndroid Build Coastguard Worker ' True\n' 11283*cda5da8dSAndroid Build Coastguard Worker ' >>> type(int).__hash__(int) == hash(int)\n' 11284*cda5da8dSAndroid Build Coastguard Worker ' True\n' 11285*cda5da8dSAndroid Build Coastguard Worker '\n' 11286*cda5da8dSAndroid Build Coastguard Worker 'In addition to bypassing any instance attributes in the ' 11287*cda5da8dSAndroid Build Coastguard Worker 'interest of\n' 11288*cda5da8dSAndroid Build Coastguard Worker 'correctness, implicit special method lookup generally also ' 11289*cda5da8dSAndroid Build Coastguard Worker 'bypasses\n' 11290*cda5da8dSAndroid Build Coastguard Worker 'the "__getattribute__()" method even of the object’s ' 11291*cda5da8dSAndroid Build Coastguard Worker 'metaclass:\n' 11292*cda5da8dSAndroid Build Coastguard Worker '\n' 11293*cda5da8dSAndroid Build Coastguard Worker ' >>> class Meta(type):\n' 11294*cda5da8dSAndroid Build Coastguard Worker ' ... def __getattribute__(*args):\n' 11295*cda5da8dSAndroid Build Coastguard Worker ' ... print("Metaclass getattribute invoked")\n' 11296*cda5da8dSAndroid Build Coastguard Worker ' ... return type.__getattribute__(*args)\n' 11297*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 11298*cda5da8dSAndroid Build Coastguard Worker ' >>> class C(object, metaclass=Meta):\n' 11299*cda5da8dSAndroid Build Coastguard Worker ' ... def __len__(self):\n' 11300*cda5da8dSAndroid Build Coastguard Worker ' ... return 10\n' 11301*cda5da8dSAndroid Build Coastguard Worker ' ... def __getattribute__(*args):\n' 11302*cda5da8dSAndroid Build Coastguard Worker ' ... print("Class getattribute invoked")\n' 11303*cda5da8dSAndroid Build Coastguard Worker ' ... return object.__getattribute__(*args)\n' 11304*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 11305*cda5da8dSAndroid Build Coastguard Worker ' >>> c = C()\n' 11306*cda5da8dSAndroid Build Coastguard Worker ' >>> c.__len__() # Explicit lookup via ' 11307*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 11308*cda5da8dSAndroid Build Coastguard Worker ' Class getattribute invoked\n' 11309*cda5da8dSAndroid Build Coastguard Worker ' 10\n' 11310*cda5da8dSAndroid Build Coastguard Worker ' >>> type(c).__len__(c) # Explicit lookup via ' 11311*cda5da8dSAndroid Build Coastguard Worker 'type\n' 11312*cda5da8dSAndroid Build Coastguard Worker ' Metaclass getattribute invoked\n' 11313*cda5da8dSAndroid Build Coastguard Worker ' 10\n' 11314*cda5da8dSAndroid Build Coastguard Worker ' >>> len(c) # Implicit lookup\n' 11315*cda5da8dSAndroid Build Coastguard Worker ' 10\n' 11316*cda5da8dSAndroid Build Coastguard Worker '\n' 11317*cda5da8dSAndroid Build Coastguard Worker 'Bypassing the "__getattribute__()" machinery in this fashion ' 11318*cda5da8dSAndroid Build Coastguard Worker 'provides\n' 11319*cda5da8dSAndroid Build Coastguard Worker 'significant scope for speed optimisations within the ' 11320*cda5da8dSAndroid Build Coastguard Worker 'interpreter, at\n' 11321*cda5da8dSAndroid Build Coastguard Worker 'the cost of some flexibility in the handling of special ' 11322*cda5da8dSAndroid Build Coastguard Worker 'methods (the\n' 11323*cda5da8dSAndroid Build Coastguard Worker 'special method *must* be set on the class object itself in ' 11324*cda5da8dSAndroid Build Coastguard Worker 'order to be\n' 11325*cda5da8dSAndroid Build Coastguard Worker 'consistently invoked by the interpreter).\n', 11326*cda5da8dSAndroid Build Coastguard Worker 'string-methods': 'String Methods\n' 11327*cda5da8dSAndroid Build Coastguard Worker '**************\n' 11328*cda5da8dSAndroid Build Coastguard Worker '\n' 11329*cda5da8dSAndroid Build Coastguard Worker 'Strings implement all of the common sequence operations, ' 11330*cda5da8dSAndroid Build Coastguard Worker 'along with\n' 11331*cda5da8dSAndroid Build Coastguard Worker 'the additional methods described below.\n' 11332*cda5da8dSAndroid Build Coastguard Worker '\n' 11333*cda5da8dSAndroid Build Coastguard Worker 'Strings also support two styles of string formatting, one ' 11334*cda5da8dSAndroid Build Coastguard Worker 'providing a\n' 11335*cda5da8dSAndroid Build Coastguard Worker 'large degree of flexibility and customization (see ' 11336*cda5da8dSAndroid Build Coastguard Worker '"str.format()",\n' 11337*cda5da8dSAndroid Build Coastguard Worker 'Format String Syntax and Custom String Formatting) and the ' 11338*cda5da8dSAndroid Build Coastguard Worker 'other based\n' 11339*cda5da8dSAndroid Build Coastguard Worker 'on C "printf" style formatting that handles a narrower ' 11340*cda5da8dSAndroid Build Coastguard Worker 'range of types\n' 11341*cda5da8dSAndroid Build Coastguard Worker 'and is slightly harder to use correctly, but is often ' 11342*cda5da8dSAndroid Build Coastguard Worker 'faster for the\n' 11343*cda5da8dSAndroid Build Coastguard Worker 'cases it can handle (printf-style String Formatting).\n' 11344*cda5da8dSAndroid Build Coastguard Worker '\n' 11345*cda5da8dSAndroid Build Coastguard Worker 'The Text Processing Services section of the standard ' 11346*cda5da8dSAndroid Build Coastguard Worker 'library covers a\n' 11347*cda5da8dSAndroid Build Coastguard Worker 'number of other modules that provide various text related ' 11348*cda5da8dSAndroid Build Coastguard Worker 'utilities\n' 11349*cda5da8dSAndroid Build Coastguard Worker '(including regular expression support in the "re" ' 11350*cda5da8dSAndroid Build Coastguard Worker 'module).\n' 11351*cda5da8dSAndroid Build Coastguard Worker '\n' 11352*cda5da8dSAndroid Build Coastguard Worker 'str.capitalize()\n' 11353*cda5da8dSAndroid Build Coastguard Worker '\n' 11354*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with its first character ' 11355*cda5da8dSAndroid Build Coastguard Worker 'capitalized\n' 11356*cda5da8dSAndroid Build Coastguard Worker ' and the rest lowercased.\n' 11357*cda5da8dSAndroid Build Coastguard Worker '\n' 11358*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.8: The first character is now put ' 11359*cda5da8dSAndroid Build Coastguard Worker 'into\n' 11360*cda5da8dSAndroid Build Coastguard Worker ' titlecase rather than uppercase. This means that ' 11361*cda5da8dSAndroid Build Coastguard Worker 'characters like\n' 11362*cda5da8dSAndroid Build Coastguard Worker ' digraphs will only have their first letter capitalized, ' 11363*cda5da8dSAndroid Build Coastguard Worker 'instead of\n' 11364*cda5da8dSAndroid Build Coastguard Worker ' the full character.\n' 11365*cda5da8dSAndroid Build Coastguard Worker '\n' 11366*cda5da8dSAndroid Build Coastguard Worker 'str.casefold()\n' 11367*cda5da8dSAndroid Build Coastguard Worker '\n' 11368*cda5da8dSAndroid Build Coastguard Worker ' Return a casefolded copy of the string. Casefolded ' 11369*cda5da8dSAndroid Build Coastguard Worker 'strings may be\n' 11370*cda5da8dSAndroid Build Coastguard Worker ' used for caseless matching.\n' 11371*cda5da8dSAndroid Build Coastguard Worker '\n' 11372*cda5da8dSAndroid Build Coastguard Worker ' Casefolding is similar to lowercasing but more ' 11373*cda5da8dSAndroid Build Coastguard Worker 'aggressive because\n' 11374*cda5da8dSAndroid Build Coastguard Worker ' it is intended to remove all case distinctions in a ' 11375*cda5da8dSAndroid Build Coastguard Worker 'string. For\n' 11376*cda5da8dSAndroid Build Coastguard Worker ' example, the German lowercase letter "\'ß\'" is ' 11377*cda5da8dSAndroid Build Coastguard Worker 'equivalent to ""ss"".\n' 11378*cda5da8dSAndroid Build Coastguard Worker ' Since it is already lowercase, "lower()" would do ' 11379*cda5da8dSAndroid Build Coastguard Worker 'nothing to "\'ß\'";\n' 11380*cda5da8dSAndroid Build Coastguard Worker ' "casefold()" converts it to ""ss"".\n' 11381*cda5da8dSAndroid Build Coastguard Worker '\n' 11382*cda5da8dSAndroid Build Coastguard Worker ' The casefolding algorithm is described in section 3.13 ' 11383*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 11384*cda5da8dSAndroid Build Coastguard Worker ' Unicode Standard.\n' 11385*cda5da8dSAndroid Build Coastguard Worker '\n' 11386*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.3.\n' 11387*cda5da8dSAndroid Build Coastguard Worker '\n' 11388*cda5da8dSAndroid Build Coastguard Worker 'str.center(width[, fillchar])\n' 11389*cda5da8dSAndroid Build Coastguard Worker '\n' 11390*cda5da8dSAndroid Build Coastguard Worker ' Return centered in a string of length *width*. Padding ' 11391*cda5da8dSAndroid Build Coastguard Worker 'is done\n' 11392*cda5da8dSAndroid Build Coastguard Worker ' using the specified *fillchar* (default is an ASCII ' 11393*cda5da8dSAndroid Build Coastguard Worker 'space). The\n' 11394*cda5da8dSAndroid Build Coastguard Worker ' original string is returned if *width* is less than or ' 11395*cda5da8dSAndroid Build Coastguard Worker 'equal to\n' 11396*cda5da8dSAndroid Build Coastguard Worker ' "len(s)".\n' 11397*cda5da8dSAndroid Build Coastguard Worker '\n' 11398*cda5da8dSAndroid Build Coastguard Worker 'str.count(sub[, start[, end]])\n' 11399*cda5da8dSAndroid Build Coastguard Worker '\n' 11400*cda5da8dSAndroid Build Coastguard Worker ' Return the number of non-overlapping occurrences of ' 11401*cda5da8dSAndroid Build Coastguard Worker 'substring *sub*\n' 11402*cda5da8dSAndroid Build Coastguard Worker ' in the range [*start*, *end*]. Optional arguments ' 11403*cda5da8dSAndroid Build Coastguard Worker '*start* and\n' 11404*cda5da8dSAndroid Build Coastguard Worker ' *end* are interpreted as in slice notation.\n' 11405*cda5da8dSAndroid Build Coastguard Worker '\n' 11406*cda5da8dSAndroid Build Coastguard Worker ' If *sub* is empty, returns the number of empty strings ' 11407*cda5da8dSAndroid Build Coastguard Worker 'between\n' 11408*cda5da8dSAndroid Build Coastguard Worker ' characters which is the length of the string plus one.\n' 11409*cda5da8dSAndroid Build Coastguard Worker '\n' 11410*cda5da8dSAndroid Build Coastguard Worker "str.encode(encoding='utf-8', errors='strict')\n" 11411*cda5da8dSAndroid Build Coastguard Worker '\n' 11412*cda5da8dSAndroid Build Coastguard Worker ' Return the string encoded to "bytes".\n' 11413*cda5da8dSAndroid Build Coastguard Worker '\n' 11414*cda5da8dSAndroid Build Coastguard Worker ' *encoding* defaults to "\'utf-8\'"; see Standard ' 11415*cda5da8dSAndroid Build Coastguard Worker 'Encodings for\n' 11416*cda5da8dSAndroid Build Coastguard Worker ' possible values.\n' 11417*cda5da8dSAndroid Build Coastguard Worker '\n' 11418*cda5da8dSAndroid Build Coastguard Worker ' *errors* controls how encoding errors are handled. If ' 11419*cda5da8dSAndroid Build Coastguard Worker '"\'strict\'"\n' 11420*cda5da8dSAndroid Build Coastguard Worker ' (the default), a "UnicodeError" exception is raised. ' 11421*cda5da8dSAndroid Build Coastguard Worker 'Other possible\n' 11422*cda5da8dSAndroid Build Coastguard Worker ' values are "\'ignore\'", "\'replace\'", ' 11423*cda5da8dSAndroid Build Coastguard Worker '"\'xmlcharrefreplace\'",\n' 11424*cda5da8dSAndroid Build Coastguard Worker ' "\'backslashreplace\'" and any other name registered ' 11425*cda5da8dSAndroid Build Coastguard Worker 'via\n' 11426*cda5da8dSAndroid Build Coastguard Worker ' "codecs.register_error()". See Error Handlers for ' 11427*cda5da8dSAndroid Build Coastguard Worker 'details.\n' 11428*cda5da8dSAndroid Build Coastguard Worker '\n' 11429*cda5da8dSAndroid Build Coastguard Worker ' For performance reasons, the value of *errors* is not ' 11430*cda5da8dSAndroid Build Coastguard Worker 'checked for\n' 11431*cda5da8dSAndroid Build Coastguard Worker ' validity unless an encoding error actually occurs, ' 11432*cda5da8dSAndroid Build Coastguard Worker 'Python\n' 11433*cda5da8dSAndroid Build Coastguard Worker ' Development Mode is enabled or a debug build is used.\n' 11434*cda5da8dSAndroid Build Coastguard Worker '\n' 11435*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.1: Added support for keyword ' 11436*cda5da8dSAndroid Build Coastguard Worker 'arguments.\n' 11437*cda5da8dSAndroid Build Coastguard Worker '\n' 11438*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.9: The value of the *errors* ' 11439*cda5da8dSAndroid Build Coastguard Worker 'argument is now\n' 11440*cda5da8dSAndroid Build Coastguard Worker ' checked in Python Development Mode and in debug mode.\n' 11441*cda5da8dSAndroid Build Coastguard Worker '\n' 11442*cda5da8dSAndroid Build Coastguard Worker 'str.endswith(suffix[, start[, end]])\n' 11443*cda5da8dSAndroid Build Coastguard Worker '\n' 11444*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if the string ends with the specified ' 11445*cda5da8dSAndroid Build Coastguard Worker '*suffix*,\n' 11446*cda5da8dSAndroid Build Coastguard Worker ' otherwise return "False". *suffix* can also be a tuple ' 11447*cda5da8dSAndroid Build Coastguard Worker 'of suffixes\n' 11448*cda5da8dSAndroid Build Coastguard Worker ' to look for. With optional *start*, test beginning at ' 11449*cda5da8dSAndroid Build Coastguard Worker 'that\n' 11450*cda5da8dSAndroid Build Coastguard Worker ' position. With optional *end*, stop comparing at that ' 11451*cda5da8dSAndroid Build Coastguard Worker 'position.\n' 11452*cda5da8dSAndroid Build Coastguard Worker '\n' 11453*cda5da8dSAndroid Build Coastguard Worker 'str.expandtabs(tabsize=8)\n' 11454*cda5da8dSAndroid Build Coastguard Worker '\n' 11455*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string where all tab characters ' 11456*cda5da8dSAndroid Build Coastguard Worker 'are replaced\n' 11457*cda5da8dSAndroid Build Coastguard Worker ' by one or more spaces, depending on the current column ' 11458*cda5da8dSAndroid Build Coastguard Worker 'and the\n' 11459*cda5da8dSAndroid Build Coastguard Worker ' given tab size. Tab positions occur every *tabsize* ' 11460*cda5da8dSAndroid Build Coastguard Worker 'characters\n' 11461*cda5da8dSAndroid Build Coastguard Worker ' (default is 8, giving tab positions at columns 0, 8, 16 ' 11462*cda5da8dSAndroid Build Coastguard Worker 'and so on).\n' 11463*cda5da8dSAndroid Build Coastguard Worker ' To expand the string, the current column is set to zero ' 11464*cda5da8dSAndroid Build Coastguard Worker 'and the\n' 11465*cda5da8dSAndroid Build Coastguard Worker ' string is examined character by character. If the ' 11466*cda5da8dSAndroid Build Coastguard Worker 'character is a\n' 11467*cda5da8dSAndroid Build Coastguard Worker ' tab ("\\t"), one or more space characters are inserted ' 11468*cda5da8dSAndroid Build Coastguard Worker 'in the result\n' 11469*cda5da8dSAndroid Build Coastguard Worker ' until the current column is equal to the next tab ' 11470*cda5da8dSAndroid Build Coastguard Worker 'position. (The\n' 11471*cda5da8dSAndroid Build Coastguard Worker ' tab character itself is not copied.) If the character ' 11472*cda5da8dSAndroid Build Coastguard Worker 'is a newline\n' 11473*cda5da8dSAndroid Build Coastguard Worker ' ("\\n") or return ("\\r"), it is copied and the current ' 11474*cda5da8dSAndroid Build Coastguard Worker 'column is\n' 11475*cda5da8dSAndroid Build Coastguard Worker ' reset to zero. Any other character is copied unchanged ' 11476*cda5da8dSAndroid Build Coastguard Worker 'and the\n' 11477*cda5da8dSAndroid Build Coastguard Worker ' current column is incremented by one regardless of how ' 11478*cda5da8dSAndroid Build Coastguard Worker 'the\n' 11479*cda5da8dSAndroid Build Coastguard Worker ' character is represented when printed.\n' 11480*cda5da8dSAndroid Build Coastguard Worker '\n' 11481*cda5da8dSAndroid Build Coastguard Worker " >>> '01\\t012\\t0123\\t01234'.expandtabs()\n" 11482*cda5da8dSAndroid Build Coastguard Worker " '01 012 0123 01234'\n" 11483*cda5da8dSAndroid Build Coastguard Worker " >>> '01\\t012\\t0123\\t01234'.expandtabs(4)\n" 11484*cda5da8dSAndroid Build Coastguard Worker " '01 012 0123 01234'\n" 11485*cda5da8dSAndroid Build Coastguard Worker '\n' 11486*cda5da8dSAndroid Build Coastguard Worker 'str.find(sub[, start[, end]])\n' 11487*cda5da8dSAndroid Build Coastguard Worker '\n' 11488*cda5da8dSAndroid Build Coastguard Worker ' Return the lowest index in the string where substring ' 11489*cda5da8dSAndroid Build Coastguard Worker '*sub* is\n' 11490*cda5da8dSAndroid Build Coastguard Worker ' found within the slice "s[start:end]". Optional ' 11491*cda5da8dSAndroid Build Coastguard Worker 'arguments *start*\n' 11492*cda5da8dSAndroid Build Coastguard Worker ' and *end* are interpreted as in slice notation. Return ' 11493*cda5da8dSAndroid Build Coastguard Worker '"-1" if\n' 11494*cda5da8dSAndroid Build Coastguard Worker ' *sub* is not found.\n' 11495*cda5da8dSAndroid Build Coastguard Worker '\n' 11496*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 11497*cda5da8dSAndroid Build Coastguard Worker '\n' 11498*cda5da8dSAndroid Build Coastguard Worker ' The "find()" method should be used only if you need ' 11499*cda5da8dSAndroid Build Coastguard Worker 'to know the\n' 11500*cda5da8dSAndroid Build Coastguard Worker ' position of *sub*. To check if *sub* is a substring ' 11501*cda5da8dSAndroid Build Coastguard Worker 'or not, use\n' 11502*cda5da8dSAndroid Build Coastguard Worker ' the "in" operator:\n' 11503*cda5da8dSAndroid Build Coastguard Worker '\n' 11504*cda5da8dSAndroid Build Coastguard Worker " >>> 'Py' in 'Python'\n" 11505*cda5da8dSAndroid Build Coastguard Worker ' True\n' 11506*cda5da8dSAndroid Build Coastguard Worker '\n' 11507*cda5da8dSAndroid Build Coastguard Worker 'str.format(*args, **kwargs)\n' 11508*cda5da8dSAndroid Build Coastguard Worker '\n' 11509*cda5da8dSAndroid Build Coastguard Worker ' Perform a string formatting operation. The string on ' 11510*cda5da8dSAndroid Build Coastguard Worker 'which this\n' 11511*cda5da8dSAndroid Build Coastguard Worker ' method is called can contain literal text or ' 11512*cda5da8dSAndroid Build Coastguard Worker 'replacement fields\n' 11513*cda5da8dSAndroid Build Coastguard Worker ' delimited by braces "{}". Each replacement field ' 11514*cda5da8dSAndroid Build Coastguard Worker 'contains either\n' 11515*cda5da8dSAndroid Build Coastguard Worker ' the numeric index of a positional argument, or the name ' 11516*cda5da8dSAndroid Build Coastguard Worker 'of a\n' 11517*cda5da8dSAndroid Build Coastguard Worker ' keyword argument. Returns a copy of the string where ' 11518*cda5da8dSAndroid Build Coastguard Worker 'each\n' 11519*cda5da8dSAndroid Build Coastguard Worker ' replacement field is replaced with the string value of ' 11520*cda5da8dSAndroid Build Coastguard Worker 'the\n' 11521*cda5da8dSAndroid Build Coastguard Worker ' corresponding argument.\n' 11522*cda5da8dSAndroid Build Coastguard Worker '\n' 11523*cda5da8dSAndroid Build Coastguard Worker ' >>> "The sum of 1 + 2 is {0}".format(1+2)\n' 11524*cda5da8dSAndroid Build Coastguard Worker " 'The sum of 1 + 2 is 3'\n" 11525*cda5da8dSAndroid Build Coastguard Worker '\n' 11526*cda5da8dSAndroid Build Coastguard Worker ' See Format String Syntax for a description of the ' 11527*cda5da8dSAndroid Build Coastguard Worker 'various\n' 11528*cda5da8dSAndroid Build Coastguard Worker ' formatting options that can be specified in format ' 11529*cda5da8dSAndroid Build Coastguard Worker 'strings.\n' 11530*cda5da8dSAndroid Build Coastguard Worker '\n' 11531*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 11532*cda5da8dSAndroid Build Coastguard Worker '\n' 11533*cda5da8dSAndroid Build Coastguard Worker ' When formatting a number ("int", "float", "complex",\n' 11534*cda5da8dSAndroid Build Coastguard Worker ' "decimal.Decimal" and subclasses) with the "n" type ' 11535*cda5da8dSAndroid Build Coastguard Worker '(ex:\n' 11536*cda5da8dSAndroid Build Coastguard Worker ' "\'{:n}\'.format(1234)"), the function temporarily ' 11537*cda5da8dSAndroid Build Coastguard Worker 'sets the\n' 11538*cda5da8dSAndroid Build Coastguard Worker ' "LC_CTYPE" locale to the "LC_NUMERIC" locale to ' 11539*cda5da8dSAndroid Build Coastguard Worker 'decode\n' 11540*cda5da8dSAndroid Build Coastguard Worker ' "decimal_point" and "thousands_sep" fields of ' 11541*cda5da8dSAndroid Build Coastguard Worker '"localeconv()" if\n' 11542*cda5da8dSAndroid Build Coastguard Worker ' they are non-ASCII or longer than 1 byte, and the ' 11543*cda5da8dSAndroid Build Coastguard Worker '"LC_NUMERIC"\n' 11544*cda5da8dSAndroid Build Coastguard Worker ' locale is different than the "LC_CTYPE" locale. This ' 11545*cda5da8dSAndroid Build Coastguard Worker 'temporary\n' 11546*cda5da8dSAndroid Build Coastguard Worker ' change affects other threads.\n' 11547*cda5da8dSAndroid Build Coastguard Worker '\n' 11548*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: When formatting a number with ' 11549*cda5da8dSAndroid Build Coastguard Worker 'the "n" type,\n' 11550*cda5da8dSAndroid Build Coastguard Worker ' the function sets temporarily the "LC_CTYPE" locale to ' 11551*cda5da8dSAndroid Build Coastguard Worker 'the\n' 11552*cda5da8dSAndroid Build Coastguard Worker ' "LC_NUMERIC" locale in some cases.\n' 11553*cda5da8dSAndroid Build Coastguard Worker '\n' 11554*cda5da8dSAndroid Build Coastguard Worker 'str.format_map(mapping)\n' 11555*cda5da8dSAndroid Build Coastguard Worker '\n' 11556*cda5da8dSAndroid Build Coastguard Worker ' Similar to "str.format(**mapping)", except that ' 11557*cda5da8dSAndroid Build Coastguard Worker '"mapping" is used\n' 11558*cda5da8dSAndroid Build Coastguard Worker ' directly and not copied to a "dict". This is useful if ' 11559*cda5da8dSAndroid Build Coastguard Worker 'for example\n' 11560*cda5da8dSAndroid Build Coastguard Worker ' "mapping" is a dict subclass:\n' 11561*cda5da8dSAndroid Build Coastguard Worker '\n' 11562*cda5da8dSAndroid Build Coastguard Worker ' >>> class Default(dict):\n' 11563*cda5da8dSAndroid Build Coastguard Worker ' ... def __missing__(self, key):\n' 11564*cda5da8dSAndroid Build Coastguard Worker ' ... return key\n' 11565*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 11566*cda5da8dSAndroid Build Coastguard Worker " >>> '{name} was born in " 11567*cda5da8dSAndroid Build Coastguard Worker "{country}'.format_map(Default(name='Guido'))\n" 11568*cda5da8dSAndroid Build Coastguard Worker " 'Guido was born in country'\n" 11569*cda5da8dSAndroid Build Coastguard Worker '\n' 11570*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.2.\n' 11571*cda5da8dSAndroid Build Coastguard Worker '\n' 11572*cda5da8dSAndroid Build Coastguard Worker 'str.index(sub[, start[, end]])\n' 11573*cda5da8dSAndroid Build Coastguard Worker '\n' 11574*cda5da8dSAndroid Build Coastguard Worker ' Like "find()", but raise "ValueError" when the ' 11575*cda5da8dSAndroid Build Coastguard Worker 'substring is not\n' 11576*cda5da8dSAndroid Build Coastguard Worker ' found.\n' 11577*cda5da8dSAndroid Build Coastguard Worker '\n' 11578*cda5da8dSAndroid Build Coastguard Worker 'str.isalnum()\n' 11579*cda5da8dSAndroid Build Coastguard Worker '\n' 11580*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11581*cda5da8dSAndroid Build Coastguard Worker 'alphanumeric and\n' 11582*cda5da8dSAndroid Build Coastguard Worker ' there is at least one character, "False" otherwise. A ' 11583*cda5da8dSAndroid Build Coastguard Worker 'character\n' 11584*cda5da8dSAndroid Build Coastguard Worker ' "c" is alphanumeric if one of the following returns ' 11585*cda5da8dSAndroid Build Coastguard Worker '"True":\n' 11586*cda5da8dSAndroid Build Coastguard Worker ' "c.isalpha()", "c.isdecimal()", "c.isdigit()", or ' 11587*cda5da8dSAndroid Build Coastguard Worker '"c.isnumeric()".\n' 11588*cda5da8dSAndroid Build Coastguard Worker '\n' 11589*cda5da8dSAndroid Build Coastguard Worker 'str.isalpha()\n' 11590*cda5da8dSAndroid Build Coastguard Worker '\n' 11591*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11592*cda5da8dSAndroid Build Coastguard Worker 'alphabetic and\n' 11593*cda5da8dSAndroid Build Coastguard Worker ' there is at least one character, "False" otherwise. ' 11594*cda5da8dSAndroid Build Coastguard Worker 'Alphabetic\n' 11595*cda5da8dSAndroid Build Coastguard Worker ' characters are those characters defined in the Unicode ' 11596*cda5da8dSAndroid Build Coastguard Worker 'character\n' 11597*cda5da8dSAndroid Build Coastguard Worker ' database as “Letter”, i.e., those with general category ' 11598*cda5da8dSAndroid Build Coastguard Worker 'property\n' 11599*cda5da8dSAndroid Build Coastguard Worker ' being one of “Lm”, “Lt”, “Lu”, “Ll”, or “Lo”. Note ' 11600*cda5da8dSAndroid Build Coastguard Worker 'that this is\n' 11601*cda5da8dSAndroid Build Coastguard Worker ' different from the “Alphabetic” property defined in the ' 11602*cda5da8dSAndroid Build Coastguard Worker 'Unicode\n' 11603*cda5da8dSAndroid Build Coastguard Worker ' Standard.\n' 11604*cda5da8dSAndroid Build Coastguard Worker '\n' 11605*cda5da8dSAndroid Build Coastguard Worker 'str.isascii()\n' 11606*cda5da8dSAndroid Build Coastguard Worker '\n' 11607*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if the string is empty or all characters ' 11608*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 11609*cda5da8dSAndroid Build Coastguard Worker ' string are ASCII, "False" otherwise. ASCII characters ' 11610*cda5da8dSAndroid Build Coastguard Worker 'have code\n' 11611*cda5da8dSAndroid Build Coastguard Worker ' points in the range U+0000-U+007F.\n' 11612*cda5da8dSAndroid Build Coastguard Worker '\n' 11613*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.7.\n' 11614*cda5da8dSAndroid Build Coastguard Worker '\n' 11615*cda5da8dSAndroid Build Coastguard Worker 'str.isdecimal()\n' 11616*cda5da8dSAndroid Build Coastguard Worker '\n' 11617*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11618*cda5da8dSAndroid Build Coastguard Worker 'decimal\n' 11619*cda5da8dSAndroid Build Coastguard Worker ' characters and there is at least one character, "False" ' 11620*cda5da8dSAndroid Build Coastguard Worker 'otherwise.\n' 11621*cda5da8dSAndroid Build Coastguard Worker ' Decimal characters are those that can be used to form ' 11622*cda5da8dSAndroid Build Coastguard Worker 'numbers in\n' 11623*cda5da8dSAndroid Build Coastguard Worker ' base 10, e.g. U+0660, ARABIC-INDIC DIGIT ZERO. ' 11624*cda5da8dSAndroid Build Coastguard Worker 'Formally a decimal\n' 11625*cda5da8dSAndroid Build Coastguard Worker ' character is a character in the Unicode General ' 11626*cda5da8dSAndroid Build Coastguard Worker 'Category “Nd”.\n' 11627*cda5da8dSAndroid Build Coastguard Worker '\n' 11628*cda5da8dSAndroid Build Coastguard Worker 'str.isdigit()\n' 11629*cda5da8dSAndroid Build Coastguard Worker '\n' 11630*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11631*cda5da8dSAndroid Build Coastguard Worker 'digits and there\n' 11632*cda5da8dSAndroid Build Coastguard Worker ' is at least one character, "False" otherwise. Digits ' 11633*cda5da8dSAndroid Build Coastguard Worker 'include\n' 11634*cda5da8dSAndroid Build Coastguard Worker ' decimal characters and digits that need special ' 11635*cda5da8dSAndroid Build Coastguard Worker 'handling, such as\n' 11636*cda5da8dSAndroid Build Coastguard Worker ' the compatibility superscript digits. This covers ' 11637*cda5da8dSAndroid Build Coastguard Worker 'digits which\n' 11638*cda5da8dSAndroid Build Coastguard Worker ' cannot be used to form numbers in base 10, like the ' 11639*cda5da8dSAndroid Build Coastguard Worker 'Kharosthi\n' 11640*cda5da8dSAndroid Build Coastguard Worker ' numbers. Formally, a digit is a character that has the ' 11641*cda5da8dSAndroid Build Coastguard Worker 'property\n' 11642*cda5da8dSAndroid Build Coastguard Worker ' value Numeric_Type=Digit or Numeric_Type=Decimal.\n' 11643*cda5da8dSAndroid Build Coastguard Worker '\n' 11644*cda5da8dSAndroid Build Coastguard Worker 'str.isidentifier()\n' 11645*cda5da8dSAndroid Build Coastguard Worker '\n' 11646*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if the string is a valid identifier ' 11647*cda5da8dSAndroid Build Coastguard Worker 'according to the\n' 11648*cda5da8dSAndroid Build Coastguard Worker ' language definition, section Identifiers and keywords.\n' 11649*cda5da8dSAndroid Build Coastguard Worker '\n' 11650*cda5da8dSAndroid Build Coastguard Worker ' Call "keyword.iskeyword()" to test whether string "s" ' 11651*cda5da8dSAndroid Build Coastguard Worker 'is a reserved\n' 11652*cda5da8dSAndroid Build Coastguard Worker ' identifier, such as "def" and "class".\n' 11653*cda5da8dSAndroid Build Coastguard Worker '\n' 11654*cda5da8dSAndroid Build Coastguard Worker ' Example:\n' 11655*cda5da8dSAndroid Build Coastguard Worker '\n' 11656*cda5da8dSAndroid Build Coastguard Worker ' >>> from keyword import iskeyword\n' 11657*cda5da8dSAndroid Build Coastguard Worker '\n' 11658*cda5da8dSAndroid Build Coastguard Worker " >>> 'hello'.isidentifier(), iskeyword('hello')\n" 11659*cda5da8dSAndroid Build Coastguard Worker ' (True, False)\n' 11660*cda5da8dSAndroid Build Coastguard Worker " >>> 'def'.isidentifier(), iskeyword('def')\n" 11661*cda5da8dSAndroid Build Coastguard Worker ' (True, True)\n' 11662*cda5da8dSAndroid Build Coastguard Worker '\n' 11663*cda5da8dSAndroid Build Coastguard Worker 'str.islower()\n' 11664*cda5da8dSAndroid Build Coastguard Worker '\n' 11665*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all cased characters [4] in the string ' 11666*cda5da8dSAndroid Build Coastguard Worker 'are\n' 11667*cda5da8dSAndroid Build Coastguard Worker ' lowercase and there is at least one cased character, ' 11668*cda5da8dSAndroid Build Coastguard Worker '"False"\n' 11669*cda5da8dSAndroid Build Coastguard Worker ' otherwise.\n' 11670*cda5da8dSAndroid Build Coastguard Worker '\n' 11671*cda5da8dSAndroid Build Coastguard Worker 'str.isnumeric()\n' 11672*cda5da8dSAndroid Build Coastguard Worker '\n' 11673*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11674*cda5da8dSAndroid Build Coastguard Worker 'numeric\n' 11675*cda5da8dSAndroid Build Coastguard Worker ' characters, and there is at least one character, ' 11676*cda5da8dSAndroid Build Coastguard Worker '"False" otherwise.\n' 11677*cda5da8dSAndroid Build Coastguard Worker ' Numeric characters include digit characters, and all ' 11678*cda5da8dSAndroid Build Coastguard Worker 'characters\n' 11679*cda5da8dSAndroid Build Coastguard Worker ' that have the Unicode numeric value property, e.g. ' 11680*cda5da8dSAndroid Build Coastguard Worker 'U+2155, VULGAR\n' 11681*cda5da8dSAndroid Build Coastguard Worker ' FRACTION ONE FIFTH. Formally, numeric characters are ' 11682*cda5da8dSAndroid Build Coastguard Worker 'those with\n' 11683*cda5da8dSAndroid Build Coastguard Worker ' the property value Numeric_Type=Digit, ' 11684*cda5da8dSAndroid Build Coastguard Worker 'Numeric_Type=Decimal or\n' 11685*cda5da8dSAndroid Build Coastguard Worker ' Numeric_Type=Numeric.\n' 11686*cda5da8dSAndroid Build Coastguard Worker '\n' 11687*cda5da8dSAndroid Build Coastguard Worker 'str.isprintable()\n' 11688*cda5da8dSAndroid Build Coastguard Worker '\n' 11689*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all characters in the string are ' 11690*cda5da8dSAndroid Build Coastguard Worker 'printable or the\n' 11691*cda5da8dSAndroid Build Coastguard Worker ' string is empty, "False" otherwise. Nonprintable ' 11692*cda5da8dSAndroid Build Coastguard Worker 'characters are\n' 11693*cda5da8dSAndroid Build Coastguard Worker ' those characters defined in the Unicode character ' 11694*cda5da8dSAndroid Build Coastguard Worker 'database as\n' 11695*cda5da8dSAndroid Build Coastguard Worker ' “Other” or “Separator”, excepting the ASCII space ' 11696*cda5da8dSAndroid Build Coastguard Worker '(0x20) which is\n' 11697*cda5da8dSAndroid Build Coastguard Worker ' considered printable. (Note that printable characters ' 11698*cda5da8dSAndroid Build Coastguard Worker 'in this\n' 11699*cda5da8dSAndroid Build Coastguard Worker ' context are those which should not be escaped when ' 11700*cda5da8dSAndroid Build Coastguard Worker '"repr()" is\n' 11701*cda5da8dSAndroid Build Coastguard Worker ' invoked on a string. It has no bearing on the handling ' 11702*cda5da8dSAndroid Build Coastguard Worker 'of strings\n' 11703*cda5da8dSAndroid Build Coastguard Worker ' written to "sys.stdout" or "sys.stderr".)\n' 11704*cda5da8dSAndroid Build Coastguard Worker '\n' 11705*cda5da8dSAndroid Build Coastguard Worker 'str.isspace()\n' 11706*cda5da8dSAndroid Build Coastguard Worker '\n' 11707*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if there are only whitespace characters ' 11708*cda5da8dSAndroid Build Coastguard Worker 'in the string\n' 11709*cda5da8dSAndroid Build Coastguard Worker ' and there is at least one character, "False" ' 11710*cda5da8dSAndroid Build Coastguard Worker 'otherwise.\n' 11711*cda5da8dSAndroid Build Coastguard Worker '\n' 11712*cda5da8dSAndroid Build Coastguard Worker ' A character is *whitespace* if in the Unicode character ' 11713*cda5da8dSAndroid Build Coastguard Worker 'database\n' 11714*cda5da8dSAndroid Build Coastguard Worker ' (see "unicodedata"), either its general category is ' 11715*cda5da8dSAndroid Build Coastguard Worker '"Zs"\n' 11716*cda5da8dSAndroid Build Coastguard Worker ' (“Separator, space”), or its bidirectional class is one ' 11717*cda5da8dSAndroid Build Coastguard Worker 'of "WS",\n' 11718*cda5da8dSAndroid Build Coastguard Worker ' "B", or "S".\n' 11719*cda5da8dSAndroid Build Coastguard Worker '\n' 11720*cda5da8dSAndroid Build Coastguard Worker 'str.istitle()\n' 11721*cda5da8dSAndroid Build Coastguard Worker '\n' 11722*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if the string is a titlecased string and ' 11723*cda5da8dSAndroid Build Coastguard Worker 'there is at\n' 11724*cda5da8dSAndroid Build Coastguard Worker ' least one character, for example uppercase characters ' 11725*cda5da8dSAndroid Build Coastguard Worker 'may only\n' 11726*cda5da8dSAndroid Build Coastguard Worker ' follow uncased characters and lowercase characters only ' 11727*cda5da8dSAndroid Build Coastguard Worker 'cased ones.\n' 11728*cda5da8dSAndroid Build Coastguard Worker ' Return "False" otherwise.\n' 11729*cda5da8dSAndroid Build Coastguard Worker '\n' 11730*cda5da8dSAndroid Build Coastguard Worker 'str.isupper()\n' 11731*cda5da8dSAndroid Build Coastguard Worker '\n' 11732*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if all cased characters [4] in the string ' 11733*cda5da8dSAndroid Build Coastguard Worker 'are\n' 11734*cda5da8dSAndroid Build Coastguard Worker ' uppercase and there is at least one cased character, ' 11735*cda5da8dSAndroid Build Coastguard Worker '"False"\n' 11736*cda5da8dSAndroid Build Coastguard Worker ' otherwise.\n' 11737*cda5da8dSAndroid Build Coastguard Worker '\n' 11738*cda5da8dSAndroid Build Coastguard Worker " >>> 'BANANA'.isupper()\n" 11739*cda5da8dSAndroid Build Coastguard Worker ' True\n' 11740*cda5da8dSAndroid Build Coastguard Worker " >>> 'banana'.isupper()\n" 11741*cda5da8dSAndroid Build Coastguard Worker ' False\n' 11742*cda5da8dSAndroid Build Coastguard Worker " >>> 'baNana'.isupper()\n" 11743*cda5da8dSAndroid Build Coastguard Worker ' False\n' 11744*cda5da8dSAndroid Build Coastguard Worker " >>> ' '.isupper()\n" 11745*cda5da8dSAndroid Build Coastguard Worker ' False\n' 11746*cda5da8dSAndroid Build Coastguard Worker '\n' 11747*cda5da8dSAndroid Build Coastguard Worker 'str.join(iterable)\n' 11748*cda5da8dSAndroid Build Coastguard Worker '\n' 11749*cda5da8dSAndroid Build Coastguard Worker ' Return a string which is the concatenation of the ' 11750*cda5da8dSAndroid Build Coastguard Worker 'strings in\n' 11751*cda5da8dSAndroid Build Coastguard Worker ' *iterable*. A "TypeError" will be raised if there are ' 11752*cda5da8dSAndroid Build Coastguard Worker 'any non-\n' 11753*cda5da8dSAndroid Build Coastguard Worker ' string values in *iterable*, including "bytes" ' 11754*cda5da8dSAndroid Build Coastguard Worker 'objects. The\n' 11755*cda5da8dSAndroid Build Coastguard Worker ' separator between elements is the string providing this ' 11756*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 11757*cda5da8dSAndroid Build Coastguard Worker '\n' 11758*cda5da8dSAndroid Build Coastguard Worker 'str.ljust(width[, fillchar])\n' 11759*cda5da8dSAndroid Build Coastguard Worker '\n' 11760*cda5da8dSAndroid Build Coastguard Worker ' Return the string left justified in a string of length ' 11761*cda5da8dSAndroid Build Coastguard Worker '*width*.\n' 11762*cda5da8dSAndroid Build Coastguard Worker ' Padding is done using the specified *fillchar* (default ' 11763*cda5da8dSAndroid Build Coastguard Worker 'is an ASCII\n' 11764*cda5da8dSAndroid Build Coastguard Worker ' space). The original string is returned if *width* is ' 11765*cda5da8dSAndroid Build Coastguard Worker 'less than or\n' 11766*cda5da8dSAndroid Build Coastguard Worker ' equal to "len(s)".\n' 11767*cda5da8dSAndroid Build Coastguard Worker '\n' 11768*cda5da8dSAndroid Build Coastguard Worker 'str.lower()\n' 11769*cda5da8dSAndroid Build Coastguard Worker '\n' 11770*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with all the cased ' 11771*cda5da8dSAndroid Build Coastguard Worker 'characters [4]\n' 11772*cda5da8dSAndroid Build Coastguard Worker ' converted to lowercase.\n' 11773*cda5da8dSAndroid Build Coastguard Worker '\n' 11774*cda5da8dSAndroid Build Coastguard Worker ' The lowercasing algorithm used is described in section ' 11775*cda5da8dSAndroid Build Coastguard Worker '3.13 of the\n' 11776*cda5da8dSAndroid Build Coastguard Worker ' Unicode Standard.\n' 11777*cda5da8dSAndroid Build Coastguard Worker '\n' 11778*cda5da8dSAndroid Build Coastguard Worker 'str.lstrip([chars])\n' 11779*cda5da8dSAndroid Build Coastguard Worker '\n' 11780*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with leading characters ' 11781*cda5da8dSAndroid Build Coastguard Worker 'removed. The\n' 11782*cda5da8dSAndroid Build Coastguard Worker ' *chars* argument is a string specifying the set of ' 11783*cda5da8dSAndroid Build Coastguard Worker 'characters to be\n' 11784*cda5da8dSAndroid Build Coastguard Worker ' removed. If omitted or "None", the *chars* argument ' 11785*cda5da8dSAndroid Build Coastguard Worker 'defaults to\n' 11786*cda5da8dSAndroid Build Coastguard Worker ' removing whitespace. The *chars* argument is not a ' 11787*cda5da8dSAndroid Build Coastguard Worker 'prefix; rather,\n' 11788*cda5da8dSAndroid Build Coastguard Worker ' all combinations of its values are stripped:\n' 11789*cda5da8dSAndroid Build Coastguard Worker '\n' 11790*cda5da8dSAndroid Build Coastguard Worker " >>> ' spacious '.lstrip()\n" 11791*cda5da8dSAndroid Build Coastguard Worker " 'spacious '\n" 11792*cda5da8dSAndroid Build Coastguard Worker " >>> 'www.example.com'.lstrip('cmowz.')\n" 11793*cda5da8dSAndroid Build Coastguard Worker " 'example.com'\n" 11794*cda5da8dSAndroid Build Coastguard Worker '\n' 11795*cda5da8dSAndroid Build Coastguard Worker ' See "str.removeprefix()" for a method that will remove ' 11796*cda5da8dSAndroid Build Coastguard Worker 'a single\n' 11797*cda5da8dSAndroid Build Coastguard Worker ' prefix string rather than all of a set of characters. ' 11798*cda5da8dSAndroid Build Coastguard Worker 'For example:\n' 11799*cda5da8dSAndroid Build Coastguard Worker '\n' 11800*cda5da8dSAndroid Build Coastguard Worker " >>> 'Arthur: three!'.lstrip('Arthur: ')\n" 11801*cda5da8dSAndroid Build Coastguard Worker " 'ee!'\n" 11802*cda5da8dSAndroid Build Coastguard Worker " >>> 'Arthur: three!'.removeprefix('Arthur: ')\n" 11803*cda5da8dSAndroid Build Coastguard Worker " 'three!'\n" 11804*cda5da8dSAndroid Build Coastguard Worker '\n' 11805*cda5da8dSAndroid Build Coastguard Worker 'static str.maketrans(x[, y[, z]])\n' 11806*cda5da8dSAndroid Build Coastguard Worker '\n' 11807*cda5da8dSAndroid Build Coastguard Worker ' This static method returns a translation table usable ' 11808*cda5da8dSAndroid Build Coastguard Worker 'for\n' 11809*cda5da8dSAndroid Build Coastguard Worker ' "str.translate()".\n' 11810*cda5da8dSAndroid Build Coastguard Worker '\n' 11811*cda5da8dSAndroid Build Coastguard Worker ' If there is only one argument, it must be a dictionary ' 11812*cda5da8dSAndroid Build Coastguard Worker 'mapping\n' 11813*cda5da8dSAndroid Build Coastguard Worker ' Unicode ordinals (integers) or characters (strings of ' 11814*cda5da8dSAndroid Build Coastguard Worker 'length 1) to\n' 11815*cda5da8dSAndroid Build Coastguard Worker ' Unicode ordinals, strings (of arbitrary lengths) or ' 11816*cda5da8dSAndroid Build Coastguard Worker '"None".\n' 11817*cda5da8dSAndroid Build Coastguard Worker ' Character keys will then be converted to ordinals.\n' 11818*cda5da8dSAndroid Build Coastguard Worker '\n' 11819*cda5da8dSAndroid Build Coastguard Worker ' If there are two arguments, they must be strings of ' 11820*cda5da8dSAndroid Build Coastguard Worker 'equal length,\n' 11821*cda5da8dSAndroid Build Coastguard Worker ' and in the resulting dictionary, each character in x ' 11822*cda5da8dSAndroid Build Coastguard Worker 'will be mapped\n' 11823*cda5da8dSAndroid Build Coastguard Worker ' to the character at the same position in y. If there ' 11824*cda5da8dSAndroid Build Coastguard Worker 'is a third\n' 11825*cda5da8dSAndroid Build Coastguard Worker ' argument, it must be a string, whose characters will be ' 11826*cda5da8dSAndroid Build Coastguard Worker 'mapped to\n' 11827*cda5da8dSAndroid Build Coastguard Worker ' "None" in the result.\n' 11828*cda5da8dSAndroid Build Coastguard Worker '\n' 11829*cda5da8dSAndroid Build Coastguard Worker 'str.partition(sep)\n' 11830*cda5da8dSAndroid Build Coastguard Worker '\n' 11831*cda5da8dSAndroid Build Coastguard Worker ' Split the string at the first occurrence of *sep*, and ' 11832*cda5da8dSAndroid Build Coastguard Worker 'return a\n' 11833*cda5da8dSAndroid Build Coastguard Worker ' 3-tuple containing the part before the separator, the ' 11834*cda5da8dSAndroid Build Coastguard Worker 'separator\n' 11835*cda5da8dSAndroid Build Coastguard Worker ' itself, and the part after the separator. If the ' 11836*cda5da8dSAndroid Build Coastguard Worker 'separator is not\n' 11837*cda5da8dSAndroid Build Coastguard Worker ' found, return a 3-tuple containing the string itself, ' 11838*cda5da8dSAndroid Build Coastguard Worker 'followed by\n' 11839*cda5da8dSAndroid Build Coastguard Worker ' two empty strings.\n' 11840*cda5da8dSAndroid Build Coastguard Worker '\n' 11841*cda5da8dSAndroid Build Coastguard Worker 'str.removeprefix(prefix, /)\n' 11842*cda5da8dSAndroid Build Coastguard Worker '\n' 11843*cda5da8dSAndroid Build Coastguard Worker ' If the string starts with the *prefix* string, return\n' 11844*cda5da8dSAndroid Build Coastguard Worker ' "string[len(prefix):]". Otherwise, return a copy of the ' 11845*cda5da8dSAndroid Build Coastguard Worker 'original\n' 11846*cda5da8dSAndroid Build Coastguard Worker ' string:\n' 11847*cda5da8dSAndroid Build Coastguard Worker '\n' 11848*cda5da8dSAndroid Build Coastguard Worker " >>> 'TestHook'.removeprefix('Test')\n" 11849*cda5da8dSAndroid Build Coastguard Worker " 'Hook'\n" 11850*cda5da8dSAndroid Build Coastguard Worker " >>> 'BaseTestCase'.removeprefix('Test')\n" 11851*cda5da8dSAndroid Build Coastguard Worker " 'BaseTestCase'\n" 11852*cda5da8dSAndroid Build Coastguard Worker '\n' 11853*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.9.\n' 11854*cda5da8dSAndroid Build Coastguard Worker '\n' 11855*cda5da8dSAndroid Build Coastguard Worker 'str.removesuffix(suffix, /)\n' 11856*cda5da8dSAndroid Build Coastguard Worker '\n' 11857*cda5da8dSAndroid Build Coastguard Worker ' If the string ends with the *suffix* string and that ' 11858*cda5da8dSAndroid Build Coastguard Worker '*suffix* is\n' 11859*cda5da8dSAndroid Build Coastguard Worker ' not empty, return "string[:-len(suffix)]". Otherwise, ' 11860*cda5da8dSAndroid Build Coastguard Worker 'return a copy\n' 11861*cda5da8dSAndroid Build Coastguard Worker ' of the original string:\n' 11862*cda5da8dSAndroid Build Coastguard Worker '\n' 11863*cda5da8dSAndroid Build Coastguard Worker " >>> 'MiscTests'.removesuffix('Tests')\n" 11864*cda5da8dSAndroid Build Coastguard Worker " 'Misc'\n" 11865*cda5da8dSAndroid Build Coastguard Worker " >>> 'TmpDirMixin'.removesuffix('Tests')\n" 11866*cda5da8dSAndroid Build Coastguard Worker " 'TmpDirMixin'\n" 11867*cda5da8dSAndroid Build Coastguard Worker '\n' 11868*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.9.\n' 11869*cda5da8dSAndroid Build Coastguard Worker '\n' 11870*cda5da8dSAndroid Build Coastguard Worker 'str.replace(old, new[, count])\n' 11871*cda5da8dSAndroid Build Coastguard Worker '\n' 11872*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with all occurrences of ' 11873*cda5da8dSAndroid Build Coastguard Worker 'substring *old*\n' 11874*cda5da8dSAndroid Build Coastguard Worker ' replaced by *new*. If the optional argument *count* is ' 11875*cda5da8dSAndroid Build Coastguard Worker 'given, only\n' 11876*cda5da8dSAndroid Build Coastguard Worker ' the first *count* occurrences are replaced.\n' 11877*cda5da8dSAndroid Build Coastguard Worker '\n' 11878*cda5da8dSAndroid Build Coastguard Worker 'str.rfind(sub[, start[, end]])\n' 11879*cda5da8dSAndroid Build Coastguard Worker '\n' 11880*cda5da8dSAndroid Build Coastguard Worker ' Return the highest index in the string where substring ' 11881*cda5da8dSAndroid Build Coastguard Worker '*sub* is\n' 11882*cda5da8dSAndroid Build Coastguard Worker ' found, such that *sub* is contained within ' 11883*cda5da8dSAndroid Build Coastguard Worker '"s[start:end]".\n' 11884*cda5da8dSAndroid Build Coastguard Worker ' Optional arguments *start* and *end* are interpreted as ' 11885*cda5da8dSAndroid Build Coastguard Worker 'in slice\n' 11886*cda5da8dSAndroid Build Coastguard Worker ' notation. Return "-1" on failure.\n' 11887*cda5da8dSAndroid Build Coastguard Worker '\n' 11888*cda5da8dSAndroid Build Coastguard Worker 'str.rindex(sub[, start[, end]])\n' 11889*cda5da8dSAndroid Build Coastguard Worker '\n' 11890*cda5da8dSAndroid Build Coastguard Worker ' Like "rfind()" but raises "ValueError" when the ' 11891*cda5da8dSAndroid Build Coastguard Worker 'substring *sub* is\n' 11892*cda5da8dSAndroid Build Coastguard Worker ' not found.\n' 11893*cda5da8dSAndroid Build Coastguard Worker '\n' 11894*cda5da8dSAndroid Build Coastguard Worker 'str.rjust(width[, fillchar])\n' 11895*cda5da8dSAndroid Build Coastguard Worker '\n' 11896*cda5da8dSAndroid Build Coastguard Worker ' Return the string right justified in a string of length ' 11897*cda5da8dSAndroid Build Coastguard Worker '*width*.\n' 11898*cda5da8dSAndroid Build Coastguard Worker ' Padding is done using the specified *fillchar* (default ' 11899*cda5da8dSAndroid Build Coastguard Worker 'is an ASCII\n' 11900*cda5da8dSAndroid Build Coastguard Worker ' space). The original string is returned if *width* is ' 11901*cda5da8dSAndroid Build Coastguard Worker 'less than or\n' 11902*cda5da8dSAndroid Build Coastguard Worker ' equal to "len(s)".\n' 11903*cda5da8dSAndroid Build Coastguard Worker '\n' 11904*cda5da8dSAndroid Build Coastguard Worker 'str.rpartition(sep)\n' 11905*cda5da8dSAndroid Build Coastguard Worker '\n' 11906*cda5da8dSAndroid Build Coastguard Worker ' Split the string at the last occurrence of *sep*, and ' 11907*cda5da8dSAndroid Build Coastguard Worker 'return a\n' 11908*cda5da8dSAndroid Build Coastguard Worker ' 3-tuple containing the part before the separator, the ' 11909*cda5da8dSAndroid Build Coastguard Worker 'separator\n' 11910*cda5da8dSAndroid Build Coastguard Worker ' itself, and the part after the separator. If the ' 11911*cda5da8dSAndroid Build Coastguard Worker 'separator is not\n' 11912*cda5da8dSAndroid Build Coastguard Worker ' found, return a 3-tuple containing two empty strings, ' 11913*cda5da8dSAndroid Build Coastguard Worker 'followed by\n' 11914*cda5da8dSAndroid Build Coastguard Worker ' the string itself.\n' 11915*cda5da8dSAndroid Build Coastguard Worker '\n' 11916*cda5da8dSAndroid Build Coastguard Worker 'str.rsplit(sep=None, maxsplit=- 1)\n' 11917*cda5da8dSAndroid Build Coastguard Worker '\n' 11918*cda5da8dSAndroid Build Coastguard Worker ' Return a list of the words in the string, using *sep* ' 11919*cda5da8dSAndroid Build Coastguard Worker 'as the\n' 11920*cda5da8dSAndroid Build Coastguard Worker ' delimiter string. If *maxsplit* is given, at most ' 11921*cda5da8dSAndroid Build Coastguard Worker '*maxsplit* splits\n' 11922*cda5da8dSAndroid Build Coastguard Worker ' are done, the *rightmost* ones. If *sep* is not ' 11923*cda5da8dSAndroid Build Coastguard Worker 'specified or\n' 11924*cda5da8dSAndroid Build Coastguard Worker ' "None", any whitespace string is a separator. Except ' 11925*cda5da8dSAndroid Build Coastguard Worker 'for splitting\n' 11926*cda5da8dSAndroid Build Coastguard Worker ' from the right, "rsplit()" behaves like "split()" which ' 11927*cda5da8dSAndroid Build Coastguard Worker 'is\n' 11928*cda5da8dSAndroid Build Coastguard Worker ' described in detail below.\n' 11929*cda5da8dSAndroid Build Coastguard Worker '\n' 11930*cda5da8dSAndroid Build Coastguard Worker 'str.rstrip([chars])\n' 11931*cda5da8dSAndroid Build Coastguard Worker '\n' 11932*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with trailing characters ' 11933*cda5da8dSAndroid Build Coastguard Worker 'removed. The\n' 11934*cda5da8dSAndroid Build Coastguard Worker ' *chars* argument is a string specifying the set of ' 11935*cda5da8dSAndroid Build Coastguard Worker 'characters to be\n' 11936*cda5da8dSAndroid Build Coastguard Worker ' removed. If omitted or "None", the *chars* argument ' 11937*cda5da8dSAndroid Build Coastguard Worker 'defaults to\n' 11938*cda5da8dSAndroid Build Coastguard Worker ' removing whitespace. The *chars* argument is not a ' 11939*cda5da8dSAndroid Build Coastguard Worker 'suffix; rather,\n' 11940*cda5da8dSAndroid Build Coastguard Worker ' all combinations of its values are stripped:\n' 11941*cda5da8dSAndroid Build Coastguard Worker '\n' 11942*cda5da8dSAndroid Build Coastguard Worker " >>> ' spacious '.rstrip()\n" 11943*cda5da8dSAndroid Build Coastguard Worker " ' spacious'\n" 11944*cda5da8dSAndroid Build Coastguard Worker " >>> 'mississippi'.rstrip('ipz')\n" 11945*cda5da8dSAndroid Build Coastguard Worker " 'mississ'\n" 11946*cda5da8dSAndroid Build Coastguard Worker '\n' 11947*cda5da8dSAndroid Build Coastguard Worker ' See "str.removesuffix()" for a method that will remove ' 11948*cda5da8dSAndroid Build Coastguard Worker 'a single\n' 11949*cda5da8dSAndroid Build Coastguard Worker ' suffix string rather than all of a set of characters. ' 11950*cda5da8dSAndroid Build Coastguard Worker 'For example:\n' 11951*cda5da8dSAndroid Build Coastguard Worker '\n' 11952*cda5da8dSAndroid Build Coastguard Worker " >>> 'Monty Python'.rstrip(' Python')\n" 11953*cda5da8dSAndroid Build Coastguard Worker " 'M'\n" 11954*cda5da8dSAndroid Build Coastguard Worker " >>> 'Monty Python'.removesuffix(' Python')\n" 11955*cda5da8dSAndroid Build Coastguard Worker " 'Monty'\n" 11956*cda5da8dSAndroid Build Coastguard Worker '\n' 11957*cda5da8dSAndroid Build Coastguard Worker 'str.split(sep=None, maxsplit=- 1)\n' 11958*cda5da8dSAndroid Build Coastguard Worker '\n' 11959*cda5da8dSAndroid Build Coastguard Worker ' Return a list of the words in the string, using *sep* ' 11960*cda5da8dSAndroid Build Coastguard Worker 'as the\n' 11961*cda5da8dSAndroid Build Coastguard Worker ' delimiter string. If *maxsplit* is given, at most ' 11962*cda5da8dSAndroid Build Coastguard Worker '*maxsplit*\n' 11963*cda5da8dSAndroid Build Coastguard Worker ' splits are done (thus, the list will have at most ' 11964*cda5da8dSAndroid Build Coastguard Worker '"maxsplit+1"\n' 11965*cda5da8dSAndroid Build Coastguard Worker ' elements). If *maxsplit* is not specified or "-1", ' 11966*cda5da8dSAndroid Build Coastguard Worker 'then there is\n' 11967*cda5da8dSAndroid Build Coastguard Worker ' no limit on the number of splits (all possible splits ' 11968*cda5da8dSAndroid Build Coastguard Worker 'are made).\n' 11969*cda5da8dSAndroid Build Coastguard Worker '\n' 11970*cda5da8dSAndroid Build Coastguard Worker ' If *sep* is given, consecutive delimiters are not ' 11971*cda5da8dSAndroid Build Coastguard Worker 'grouped together\n' 11972*cda5da8dSAndroid Build Coastguard Worker ' and are deemed to delimit empty strings (for example,\n' 11973*cda5da8dSAndroid Build Coastguard Worker ' "\'1,,2\'.split(\',\')" returns "[\'1\', \'\', ' 11974*cda5da8dSAndroid Build Coastguard Worker '\'2\']"). The *sep* argument\n' 11975*cda5da8dSAndroid Build Coastguard Worker ' may consist of multiple characters (for example,\n' 11976*cda5da8dSAndroid Build Coastguard Worker ' "\'1<>2<>3\'.split(\'<>\')" returns "[\'1\', \'2\', ' 11977*cda5da8dSAndroid Build Coastguard Worker '\'3\']"). Splitting an\n' 11978*cda5da8dSAndroid Build Coastguard Worker ' empty string with a specified separator returns ' 11979*cda5da8dSAndroid Build Coastguard Worker '"[\'\']".\n' 11980*cda5da8dSAndroid Build Coastguard Worker '\n' 11981*cda5da8dSAndroid Build Coastguard Worker ' For example:\n' 11982*cda5da8dSAndroid Build Coastguard Worker '\n' 11983*cda5da8dSAndroid Build Coastguard Worker " >>> '1,2,3'.split(',')\n" 11984*cda5da8dSAndroid Build Coastguard Worker " ['1', '2', '3']\n" 11985*cda5da8dSAndroid Build Coastguard Worker " >>> '1,2,3'.split(',', maxsplit=1)\n" 11986*cda5da8dSAndroid Build Coastguard Worker " ['1', '2,3']\n" 11987*cda5da8dSAndroid Build Coastguard Worker " >>> '1,2,,3,'.split(',')\n" 11988*cda5da8dSAndroid Build Coastguard Worker " ['1', '2', '', '3', '']\n" 11989*cda5da8dSAndroid Build Coastguard Worker '\n' 11990*cda5da8dSAndroid Build Coastguard Worker ' If *sep* is not specified or is "None", a different ' 11991*cda5da8dSAndroid Build Coastguard Worker 'splitting\n' 11992*cda5da8dSAndroid Build Coastguard Worker ' algorithm is applied: runs of consecutive whitespace ' 11993*cda5da8dSAndroid Build Coastguard Worker 'are regarded\n' 11994*cda5da8dSAndroid Build Coastguard Worker ' as a single separator, and the result will contain no ' 11995*cda5da8dSAndroid Build Coastguard Worker 'empty strings\n' 11996*cda5da8dSAndroid Build Coastguard Worker ' at the start or end if the string has leading or ' 11997*cda5da8dSAndroid Build Coastguard Worker 'trailing\n' 11998*cda5da8dSAndroid Build Coastguard Worker ' whitespace. Consequently, splitting an empty string or ' 11999*cda5da8dSAndroid Build Coastguard Worker 'a string\n' 12000*cda5da8dSAndroid Build Coastguard Worker ' consisting of just whitespace with a "None" separator ' 12001*cda5da8dSAndroid Build Coastguard Worker 'returns "[]".\n' 12002*cda5da8dSAndroid Build Coastguard Worker '\n' 12003*cda5da8dSAndroid Build Coastguard Worker ' For example:\n' 12004*cda5da8dSAndroid Build Coastguard Worker '\n' 12005*cda5da8dSAndroid Build Coastguard Worker " >>> '1 2 3'.split()\n" 12006*cda5da8dSAndroid Build Coastguard Worker " ['1', '2', '3']\n" 12007*cda5da8dSAndroid Build Coastguard Worker " >>> '1 2 3'.split(maxsplit=1)\n" 12008*cda5da8dSAndroid Build Coastguard Worker " ['1', '2 3']\n" 12009*cda5da8dSAndroid Build Coastguard Worker " >>> ' 1 2 3 '.split()\n" 12010*cda5da8dSAndroid Build Coastguard Worker " ['1', '2', '3']\n" 12011*cda5da8dSAndroid Build Coastguard Worker '\n' 12012*cda5da8dSAndroid Build Coastguard Worker 'str.splitlines(keepends=False)\n' 12013*cda5da8dSAndroid Build Coastguard Worker '\n' 12014*cda5da8dSAndroid Build Coastguard Worker ' Return a list of the lines in the string, breaking at ' 12015*cda5da8dSAndroid Build Coastguard Worker 'line\n' 12016*cda5da8dSAndroid Build Coastguard Worker ' boundaries. Line breaks are not included in the ' 12017*cda5da8dSAndroid Build Coastguard Worker 'resulting list\n' 12018*cda5da8dSAndroid Build Coastguard Worker ' unless *keepends* is given and true.\n' 12019*cda5da8dSAndroid Build Coastguard Worker '\n' 12020*cda5da8dSAndroid Build Coastguard Worker ' This method splits on the following line boundaries. ' 12021*cda5da8dSAndroid Build Coastguard Worker 'In\n' 12022*cda5da8dSAndroid Build Coastguard Worker ' particular, the boundaries are a superset of *universal ' 12023*cda5da8dSAndroid Build Coastguard Worker 'newlines*.\n' 12024*cda5da8dSAndroid Build Coastguard Worker '\n' 12025*cda5da8dSAndroid Build Coastguard Worker ' ' 12026*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12027*cda5da8dSAndroid Build Coastguard Worker ' | Representation | ' 12028*cda5da8dSAndroid Build Coastguard Worker 'Description |\n' 12029*cda5da8dSAndroid Build Coastguard Worker ' ' 12030*cda5da8dSAndroid Build Coastguard Worker '|=========================|===============================|\n' 12031*cda5da8dSAndroid Build Coastguard Worker ' | "\\n" | Line ' 12032*cda5da8dSAndroid Build Coastguard Worker 'Feed |\n' 12033*cda5da8dSAndroid Build Coastguard Worker ' ' 12034*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12035*cda5da8dSAndroid Build Coastguard Worker ' | "\\r" | Carriage ' 12036*cda5da8dSAndroid Build Coastguard Worker 'Return |\n' 12037*cda5da8dSAndroid Build Coastguard Worker ' ' 12038*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12039*cda5da8dSAndroid Build Coastguard Worker ' | "\\r\\n" | Carriage Return + Line ' 12040*cda5da8dSAndroid Build Coastguard Worker 'Feed |\n' 12041*cda5da8dSAndroid Build Coastguard Worker ' ' 12042*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12043*cda5da8dSAndroid Build Coastguard Worker ' | "\\v" or "\\x0b" | Line ' 12044*cda5da8dSAndroid Build Coastguard Worker 'Tabulation |\n' 12045*cda5da8dSAndroid Build Coastguard Worker ' ' 12046*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12047*cda5da8dSAndroid Build Coastguard Worker ' | "\\f" or "\\x0c" | Form ' 12048*cda5da8dSAndroid Build Coastguard Worker 'Feed |\n' 12049*cda5da8dSAndroid Build Coastguard Worker ' ' 12050*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12051*cda5da8dSAndroid Build Coastguard Worker ' | "\\x1c" | File ' 12052*cda5da8dSAndroid Build Coastguard Worker 'Separator |\n' 12053*cda5da8dSAndroid Build Coastguard Worker ' ' 12054*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12055*cda5da8dSAndroid Build Coastguard Worker ' | "\\x1d" | Group ' 12056*cda5da8dSAndroid Build Coastguard Worker 'Separator |\n' 12057*cda5da8dSAndroid Build Coastguard Worker ' ' 12058*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12059*cda5da8dSAndroid Build Coastguard Worker ' | "\\x1e" | Record ' 12060*cda5da8dSAndroid Build Coastguard Worker 'Separator |\n' 12061*cda5da8dSAndroid Build Coastguard Worker ' ' 12062*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12063*cda5da8dSAndroid Build Coastguard Worker ' | "\\x85" | Next Line (C1 Control ' 12064*cda5da8dSAndroid Build Coastguard Worker 'Code) |\n' 12065*cda5da8dSAndroid Build Coastguard Worker ' ' 12066*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12067*cda5da8dSAndroid Build Coastguard Worker ' | "\\u2028" | Line ' 12068*cda5da8dSAndroid Build Coastguard Worker 'Separator |\n' 12069*cda5da8dSAndroid Build Coastguard Worker ' ' 12070*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12071*cda5da8dSAndroid Build Coastguard Worker ' | "\\u2029" | Paragraph ' 12072*cda5da8dSAndroid Build Coastguard Worker 'Separator |\n' 12073*cda5da8dSAndroid Build Coastguard Worker ' ' 12074*cda5da8dSAndroid Build Coastguard Worker '+-------------------------+-------------------------------+\n' 12075*cda5da8dSAndroid Build Coastguard Worker '\n' 12076*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.2: "\\v" and "\\f" added to list ' 12077*cda5da8dSAndroid Build Coastguard Worker 'of line\n' 12078*cda5da8dSAndroid Build Coastguard Worker ' boundaries.\n' 12079*cda5da8dSAndroid Build Coastguard Worker '\n' 12080*cda5da8dSAndroid Build Coastguard Worker ' For example:\n' 12081*cda5da8dSAndroid Build Coastguard Worker '\n' 12082*cda5da8dSAndroid Build Coastguard Worker " >>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n" 12083*cda5da8dSAndroid Build Coastguard Worker " ['ab c', '', 'de fg', 'kl']\n" 12084*cda5da8dSAndroid Build Coastguard Worker " >>> 'ab c\\n\\nde " 12085*cda5da8dSAndroid Build Coastguard Worker "fg\\rkl\\r\\n'.splitlines(keepends=True)\n" 12086*cda5da8dSAndroid Build Coastguard Worker " ['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']\n" 12087*cda5da8dSAndroid Build Coastguard Worker '\n' 12088*cda5da8dSAndroid Build Coastguard Worker ' Unlike "split()" when a delimiter string *sep* is ' 12089*cda5da8dSAndroid Build Coastguard Worker 'given, this\n' 12090*cda5da8dSAndroid Build Coastguard Worker ' method returns an empty list for the empty string, and ' 12091*cda5da8dSAndroid Build Coastguard Worker 'a terminal\n' 12092*cda5da8dSAndroid Build Coastguard Worker ' line break does not result in an extra line:\n' 12093*cda5da8dSAndroid Build Coastguard Worker '\n' 12094*cda5da8dSAndroid Build Coastguard Worker ' >>> "".splitlines()\n' 12095*cda5da8dSAndroid Build Coastguard Worker ' []\n' 12096*cda5da8dSAndroid Build Coastguard Worker ' >>> "One line\\n".splitlines()\n' 12097*cda5da8dSAndroid Build Coastguard Worker " ['One line']\n" 12098*cda5da8dSAndroid Build Coastguard Worker '\n' 12099*cda5da8dSAndroid Build Coastguard Worker ' For comparison, "split(\'\\n\')" gives:\n' 12100*cda5da8dSAndroid Build Coastguard Worker '\n' 12101*cda5da8dSAndroid Build Coastguard Worker " >>> ''.split('\\n')\n" 12102*cda5da8dSAndroid Build Coastguard Worker " ['']\n" 12103*cda5da8dSAndroid Build Coastguard Worker " >>> 'Two lines\\n'.split('\\n')\n" 12104*cda5da8dSAndroid Build Coastguard Worker " ['Two lines', '']\n" 12105*cda5da8dSAndroid Build Coastguard Worker '\n' 12106*cda5da8dSAndroid Build Coastguard Worker 'str.startswith(prefix[, start[, end]])\n' 12107*cda5da8dSAndroid Build Coastguard Worker '\n' 12108*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if string starts with the *prefix*, ' 12109*cda5da8dSAndroid Build Coastguard Worker 'otherwise return\n' 12110*cda5da8dSAndroid Build Coastguard Worker ' "False". *prefix* can also be a tuple of prefixes to ' 12111*cda5da8dSAndroid Build Coastguard Worker 'look for.\n' 12112*cda5da8dSAndroid Build Coastguard Worker ' With optional *start*, test string beginning at that ' 12113*cda5da8dSAndroid Build Coastguard Worker 'position.\n' 12114*cda5da8dSAndroid Build Coastguard Worker ' With optional *end*, stop comparing string at that ' 12115*cda5da8dSAndroid Build Coastguard Worker 'position.\n' 12116*cda5da8dSAndroid Build Coastguard Worker '\n' 12117*cda5da8dSAndroid Build Coastguard Worker 'str.strip([chars])\n' 12118*cda5da8dSAndroid Build Coastguard Worker '\n' 12119*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with the leading and ' 12120*cda5da8dSAndroid Build Coastguard Worker 'trailing\n' 12121*cda5da8dSAndroid Build Coastguard Worker ' characters removed. The *chars* argument is a string ' 12122*cda5da8dSAndroid Build Coastguard Worker 'specifying the\n' 12123*cda5da8dSAndroid Build Coastguard Worker ' set of characters to be removed. If omitted or "None", ' 12124*cda5da8dSAndroid Build Coastguard Worker 'the *chars*\n' 12125*cda5da8dSAndroid Build Coastguard Worker ' argument defaults to removing whitespace. The *chars* ' 12126*cda5da8dSAndroid Build Coastguard Worker 'argument is\n' 12127*cda5da8dSAndroid Build Coastguard Worker ' not a prefix or suffix; rather, all combinations of its ' 12128*cda5da8dSAndroid Build Coastguard Worker 'values are\n' 12129*cda5da8dSAndroid Build Coastguard Worker ' stripped:\n' 12130*cda5da8dSAndroid Build Coastguard Worker '\n' 12131*cda5da8dSAndroid Build Coastguard Worker " >>> ' spacious '.strip()\n" 12132*cda5da8dSAndroid Build Coastguard Worker " 'spacious'\n" 12133*cda5da8dSAndroid Build Coastguard Worker " >>> 'www.example.com'.strip('cmowz.')\n" 12134*cda5da8dSAndroid Build Coastguard Worker " 'example'\n" 12135*cda5da8dSAndroid Build Coastguard Worker '\n' 12136*cda5da8dSAndroid Build Coastguard Worker ' The outermost leading and trailing *chars* argument ' 12137*cda5da8dSAndroid Build Coastguard Worker 'values are\n' 12138*cda5da8dSAndroid Build Coastguard Worker ' stripped from the string. Characters are removed from ' 12139*cda5da8dSAndroid Build Coastguard Worker 'the leading\n' 12140*cda5da8dSAndroid Build Coastguard Worker ' end until reaching a string character that is not ' 12141*cda5da8dSAndroid Build Coastguard Worker 'contained in the\n' 12142*cda5da8dSAndroid Build Coastguard Worker ' set of characters in *chars*. A similar action takes ' 12143*cda5da8dSAndroid Build Coastguard Worker 'place on the\n' 12144*cda5da8dSAndroid Build Coastguard Worker ' trailing end. For example:\n' 12145*cda5da8dSAndroid Build Coastguard Worker '\n' 12146*cda5da8dSAndroid Build Coastguard Worker " >>> comment_string = '#....... Section 3.2.1 Issue " 12147*cda5da8dSAndroid Build Coastguard Worker "#32 .......'\n" 12148*cda5da8dSAndroid Build Coastguard Worker " >>> comment_string.strip('.#! ')\n" 12149*cda5da8dSAndroid Build Coastguard Worker " 'Section 3.2.1 Issue #32'\n" 12150*cda5da8dSAndroid Build Coastguard Worker '\n' 12151*cda5da8dSAndroid Build Coastguard Worker 'str.swapcase()\n' 12152*cda5da8dSAndroid Build Coastguard Worker '\n' 12153*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with uppercase characters ' 12154*cda5da8dSAndroid Build Coastguard Worker 'converted to\n' 12155*cda5da8dSAndroid Build Coastguard Worker ' lowercase and vice versa. Note that it is not ' 12156*cda5da8dSAndroid Build Coastguard Worker 'necessarily true that\n' 12157*cda5da8dSAndroid Build Coastguard Worker ' "s.swapcase().swapcase() == s".\n' 12158*cda5da8dSAndroid Build Coastguard Worker '\n' 12159*cda5da8dSAndroid Build Coastguard Worker 'str.title()\n' 12160*cda5da8dSAndroid Build Coastguard Worker '\n' 12161*cda5da8dSAndroid Build Coastguard Worker ' Return a titlecased version of the string where words ' 12162*cda5da8dSAndroid Build Coastguard Worker 'start with an\n' 12163*cda5da8dSAndroid Build Coastguard Worker ' uppercase character and the remaining characters are ' 12164*cda5da8dSAndroid Build Coastguard Worker 'lowercase.\n' 12165*cda5da8dSAndroid Build Coastguard Worker '\n' 12166*cda5da8dSAndroid Build Coastguard Worker ' For example:\n' 12167*cda5da8dSAndroid Build Coastguard Worker '\n' 12168*cda5da8dSAndroid Build Coastguard Worker " >>> 'Hello world'.title()\n" 12169*cda5da8dSAndroid Build Coastguard Worker " 'Hello World'\n" 12170*cda5da8dSAndroid Build Coastguard Worker '\n' 12171*cda5da8dSAndroid Build Coastguard Worker ' The algorithm uses a simple language-independent ' 12172*cda5da8dSAndroid Build Coastguard Worker 'definition of a\n' 12173*cda5da8dSAndroid Build Coastguard Worker ' word as groups of consecutive letters. The definition ' 12174*cda5da8dSAndroid Build Coastguard Worker 'works in\n' 12175*cda5da8dSAndroid Build Coastguard Worker ' many contexts but it means that apostrophes in ' 12176*cda5da8dSAndroid Build Coastguard Worker 'contractions and\n' 12177*cda5da8dSAndroid Build Coastguard Worker ' possessives form word boundaries, which may not be the ' 12178*cda5da8dSAndroid Build Coastguard Worker 'desired\n' 12179*cda5da8dSAndroid Build Coastguard Worker ' result:\n' 12180*cda5da8dSAndroid Build Coastguard Worker '\n' 12181*cda5da8dSAndroid Build Coastguard Worker ' >>> "they\'re bill\'s friends from the UK".title()\n' 12182*cda5da8dSAndroid Build Coastguard Worker ' "They\'Re Bill\'S Friends From The Uk"\n' 12183*cda5da8dSAndroid Build Coastguard Worker '\n' 12184*cda5da8dSAndroid Build Coastguard Worker ' The "string.capwords()" function does not have this ' 12185*cda5da8dSAndroid Build Coastguard Worker 'problem, as it\n' 12186*cda5da8dSAndroid Build Coastguard Worker ' splits words on spaces only.\n' 12187*cda5da8dSAndroid Build Coastguard Worker '\n' 12188*cda5da8dSAndroid Build Coastguard Worker ' Alternatively, a workaround for apostrophes can be ' 12189*cda5da8dSAndroid Build Coastguard Worker 'constructed\n' 12190*cda5da8dSAndroid Build Coastguard Worker ' using regular expressions:\n' 12191*cda5da8dSAndroid Build Coastguard Worker '\n' 12192*cda5da8dSAndroid Build Coastguard Worker ' >>> import re\n' 12193*cda5da8dSAndroid Build Coastguard Worker ' >>> def titlecase(s):\n' 12194*cda5da8dSAndroid Build Coastguard Worker ' ... return re.sub(r"[A-Za-z]+(\'[A-Za-z]+)?",\n' 12195*cda5da8dSAndroid Build Coastguard Worker ' ... lambda mo: ' 12196*cda5da8dSAndroid Build Coastguard Worker 'mo.group(0).capitalize(),\n' 12197*cda5da8dSAndroid Build Coastguard Worker ' ... s)\n' 12198*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12199*cda5da8dSAndroid Build Coastguard Worker ' >>> titlecase("they\'re bill\'s friends.")\n' 12200*cda5da8dSAndroid Build Coastguard Worker ' "They\'re Bill\'s Friends."\n' 12201*cda5da8dSAndroid Build Coastguard Worker '\n' 12202*cda5da8dSAndroid Build Coastguard Worker 'str.translate(table)\n' 12203*cda5da8dSAndroid Build Coastguard Worker '\n' 12204*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string in which each character has ' 12205*cda5da8dSAndroid Build Coastguard Worker 'been mapped\n' 12206*cda5da8dSAndroid Build Coastguard Worker ' through the given translation table. The table must be ' 12207*cda5da8dSAndroid Build Coastguard Worker 'an object\n' 12208*cda5da8dSAndroid Build Coastguard Worker ' that implements indexing via "__getitem__()", typically ' 12209*cda5da8dSAndroid Build Coastguard Worker 'a *mapping*\n' 12210*cda5da8dSAndroid Build Coastguard Worker ' or *sequence*. When indexed by a Unicode ordinal (an ' 12211*cda5da8dSAndroid Build Coastguard Worker 'integer), the\n' 12212*cda5da8dSAndroid Build Coastguard Worker ' table object can do any of the following: return a ' 12213*cda5da8dSAndroid Build Coastguard Worker 'Unicode ordinal\n' 12214*cda5da8dSAndroid Build Coastguard Worker ' or a string, to map the character to one or more other ' 12215*cda5da8dSAndroid Build Coastguard Worker 'characters;\n' 12216*cda5da8dSAndroid Build Coastguard Worker ' return "None", to delete the character from the return ' 12217*cda5da8dSAndroid Build Coastguard Worker 'string; or\n' 12218*cda5da8dSAndroid Build Coastguard Worker ' raise a "LookupError" exception, to map the character ' 12219*cda5da8dSAndroid Build Coastguard Worker 'to itself.\n' 12220*cda5da8dSAndroid Build Coastguard Worker '\n' 12221*cda5da8dSAndroid Build Coastguard Worker ' You can use "str.maketrans()" to create a translation ' 12222*cda5da8dSAndroid Build Coastguard Worker 'map from\n' 12223*cda5da8dSAndroid Build Coastguard Worker ' character-to-character mappings in different formats.\n' 12224*cda5da8dSAndroid Build Coastguard Worker '\n' 12225*cda5da8dSAndroid Build Coastguard Worker ' See also the "codecs" module for a more flexible ' 12226*cda5da8dSAndroid Build Coastguard Worker 'approach to custom\n' 12227*cda5da8dSAndroid Build Coastguard Worker ' character mappings.\n' 12228*cda5da8dSAndroid Build Coastguard Worker '\n' 12229*cda5da8dSAndroid Build Coastguard Worker 'str.upper()\n' 12230*cda5da8dSAndroid Build Coastguard Worker '\n' 12231*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string with all the cased ' 12232*cda5da8dSAndroid Build Coastguard Worker 'characters [4]\n' 12233*cda5da8dSAndroid Build Coastguard Worker ' converted to uppercase. Note that ' 12234*cda5da8dSAndroid Build Coastguard Worker '"s.upper().isupper()" might be\n' 12235*cda5da8dSAndroid Build Coastguard Worker ' "False" if "s" contains uncased characters or if the ' 12236*cda5da8dSAndroid Build Coastguard Worker 'Unicode\n' 12237*cda5da8dSAndroid Build Coastguard Worker ' category of the resulting character(s) is not “Lu” ' 12238*cda5da8dSAndroid Build Coastguard Worker '(Letter,\n' 12239*cda5da8dSAndroid Build Coastguard Worker ' uppercase), but e.g. “Lt” (Letter, titlecase).\n' 12240*cda5da8dSAndroid Build Coastguard Worker '\n' 12241*cda5da8dSAndroid Build Coastguard Worker ' The uppercasing algorithm used is described in section ' 12242*cda5da8dSAndroid Build Coastguard Worker '3.13 of the\n' 12243*cda5da8dSAndroid Build Coastguard Worker ' Unicode Standard.\n' 12244*cda5da8dSAndroid Build Coastguard Worker '\n' 12245*cda5da8dSAndroid Build Coastguard Worker 'str.zfill(width)\n' 12246*cda5da8dSAndroid Build Coastguard Worker '\n' 12247*cda5da8dSAndroid Build Coastguard Worker ' Return a copy of the string left filled with ASCII ' 12248*cda5da8dSAndroid Build Coastguard Worker '"\'0\'" digits to\n' 12249*cda5da8dSAndroid Build Coastguard Worker ' make a string of length *width*. A leading sign prefix\n' 12250*cda5da8dSAndroid Build Coastguard Worker ' ("\'+\'"/"\'-\'") is handled by inserting the padding ' 12251*cda5da8dSAndroid Build Coastguard Worker '*after* the sign\n' 12252*cda5da8dSAndroid Build Coastguard Worker ' character rather than before. The original string is ' 12253*cda5da8dSAndroid Build Coastguard Worker 'returned if\n' 12254*cda5da8dSAndroid Build Coastguard Worker ' *width* is less than or equal to "len(s)".\n' 12255*cda5da8dSAndroid Build Coastguard Worker '\n' 12256*cda5da8dSAndroid Build Coastguard Worker ' For example:\n' 12257*cda5da8dSAndroid Build Coastguard Worker '\n' 12258*cda5da8dSAndroid Build Coastguard Worker ' >>> "42".zfill(5)\n' 12259*cda5da8dSAndroid Build Coastguard Worker " '00042'\n" 12260*cda5da8dSAndroid Build Coastguard Worker ' >>> "-42".zfill(5)\n' 12261*cda5da8dSAndroid Build Coastguard Worker " '-0042'\n", 12262*cda5da8dSAndroid Build Coastguard Worker 'strings': 'String and Bytes literals\n' 12263*cda5da8dSAndroid Build Coastguard Worker '*************************\n' 12264*cda5da8dSAndroid Build Coastguard Worker '\n' 12265*cda5da8dSAndroid Build Coastguard Worker 'String literals are described by the following lexical ' 12266*cda5da8dSAndroid Build Coastguard Worker 'definitions:\n' 12267*cda5da8dSAndroid Build Coastguard Worker '\n' 12268*cda5da8dSAndroid Build Coastguard Worker ' stringliteral ::= [stringprefix](shortstring | longstring)\n' 12269*cda5da8dSAndroid Build Coastguard Worker ' stringprefix ::= "r" | "u" | "R" | "U" | "f" | "F"\n' 12270*cda5da8dSAndroid Build Coastguard Worker ' | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | ' 12271*cda5da8dSAndroid Build Coastguard Worker '"Rf" | "RF"\n' 12272*cda5da8dSAndroid Build Coastguard Worker ' shortstring ::= "\'" shortstringitem* "\'" | \'"\' ' 12273*cda5da8dSAndroid Build Coastguard Worker 'shortstringitem* \'"\'\n' 12274*cda5da8dSAndroid Build Coastguard Worker ' longstring ::= "\'\'\'" longstringitem* "\'\'\'" | ' 12275*cda5da8dSAndroid Build Coastguard Worker '\'"""\' longstringitem* \'"""\'\n' 12276*cda5da8dSAndroid Build Coastguard Worker ' shortstringitem ::= shortstringchar | stringescapeseq\n' 12277*cda5da8dSAndroid Build Coastguard Worker ' longstringitem ::= longstringchar | stringescapeseq\n' 12278*cda5da8dSAndroid Build Coastguard Worker ' shortstringchar ::= <any source character except "\\" or ' 12279*cda5da8dSAndroid Build Coastguard Worker 'newline or the quote>\n' 12280*cda5da8dSAndroid Build Coastguard Worker ' longstringchar ::= <any source character except "\\">\n' 12281*cda5da8dSAndroid Build Coastguard Worker ' stringescapeseq ::= "\\" <any source character>\n' 12282*cda5da8dSAndroid Build Coastguard Worker '\n' 12283*cda5da8dSAndroid Build Coastguard Worker ' bytesliteral ::= bytesprefix(shortbytes | longbytes)\n' 12284*cda5da8dSAndroid Build Coastguard Worker ' bytesprefix ::= "b" | "B" | "br" | "Br" | "bR" | "BR" | ' 12285*cda5da8dSAndroid Build Coastguard Worker '"rb" | "rB" | "Rb" | "RB"\n' 12286*cda5da8dSAndroid Build Coastguard Worker ' shortbytes ::= "\'" shortbytesitem* "\'" | \'"\' ' 12287*cda5da8dSAndroid Build Coastguard Worker 'shortbytesitem* \'"\'\n' 12288*cda5da8dSAndroid Build Coastguard Worker ' longbytes ::= "\'\'\'" longbytesitem* "\'\'\'" | \'"""\' ' 12289*cda5da8dSAndroid Build Coastguard Worker 'longbytesitem* \'"""\'\n' 12290*cda5da8dSAndroid Build Coastguard Worker ' shortbytesitem ::= shortbyteschar | bytesescapeseq\n' 12291*cda5da8dSAndroid Build Coastguard Worker ' longbytesitem ::= longbyteschar | bytesescapeseq\n' 12292*cda5da8dSAndroid Build Coastguard Worker ' shortbyteschar ::= <any ASCII character except "\\" or newline ' 12293*cda5da8dSAndroid Build Coastguard Worker 'or the quote>\n' 12294*cda5da8dSAndroid Build Coastguard Worker ' longbyteschar ::= <any ASCII character except "\\">\n' 12295*cda5da8dSAndroid Build Coastguard Worker ' bytesescapeseq ::= "\\" <any ASCII character>\n' 12296*cda5da8dSAndroid Build Coastguard Worker '\n' 12297*cda5da8dSAndroid Build Coastguard Worker 'One syntactic restriction not indicated by these productions is ' 12298*cda5da8dSAndroid Build Coastguard Worker 'that\n' 12299*cda5da8dSAndroid Build Coastguard Worker 'whitespace is not allowed between the "stringprefix" or ' 12300*cda5da8dSAndroid Build Coastguard Worker '"bytesprefix"\n' 12301*cda5da8dSAndroid Build Coastguard Worker 'and the rest of the literal. The source character set is defined ' 12302*cda5da8dSAndroid Build Coastguard Worker 'by\n' 12303*cda5da8dSAndroid Build Coastguard Worker 'the encoding declaration; it is UTF-8 if no encoding declaration ' 12304*cda5da8dSAndroid Build Coastguard Worker 'is\n' 12305*cda5da8dSAndroid Build Coastguard Worker 'given in the source file; see section Encoding declarations.\n' 12306*cda5da8dSAndroid Build Coastguard Worker '\n' 12307*cda5da8dSAndroid Build Coastguard Worker 'In plain English: Both types of literals can be enclosed in ' 12308*cda5da8dSAndroid Build Coastguard Worker 'matching\n' 12309*cda5da8dSAndroid Build Coastguard Worker 'single quotes ("\'") or double quotes ("""). They can also be ' 12310*cda5da8dSAndroid Build Coastguard Worker 'enclosed\n' 12311*cda5da8dSAndroid Build Coastguard Worker 'in matching groups of three single or double quotes (these are\n' 12312*cda5da8dSAndroid Build Coastguard Worker 'generally referred to as *triple-quoted strings*). The ' 12313*cda5da8dSAndroid Build Coastguard Worker 'backslash\n' 12314*cda5da8dSAndroid Build Coastguard Worker '("\\") character is used to escape characters that otherwise have ' 12315*cda5da8dSAndroid Build Coastguard Worker 'a\n' 12316*cda5da8dSAndroid Build Coastguard Worker 'special meaning, such as newline, backslash itself, or the quote\n' 12317*cda5da8dSAndroid Build Coastguard Worker 'character.\n' 12318*cda5da8dSAndroid Build Coastguard Worker '\n' 12319*cda5da8dSAndroid Build Coastguard Worker 'Bytes literals are always prefixed with "\'b\'" or "\'B\'"; they ' 12320*cda5da8dSAndroid Build Coastguard Worker 'produce\n' 12321*cda5da8dSAndroid Build Coastguard Worker 'an instance of the "bytes" type instead of the "str" type. They ' 12322*cda5da8dSAndroid Build Coastguard Worker 'may\n' 12323*cda5da8dSAndroid Build Coastguard Worker 'only contain ASCII characters; bytes with a numeric value of 128 ' 12324*cda5da8dSAndroid Build Coastguard Worker 'or\n' 12325*cda5da8dSAndroid Build Coastguard Worker 'greater must be expressed with escapes.\n' 12326*cda5da8dSAndroid Build Coastguard Worker '\n' 12327*cda5da8dSAndroid Build Coastguard Worker 'Both string and bytes literals may optionally be prefixed with a\n' 12328*cda5da8dSAndroid Build Coastguard Worker 'letter "\'r\'" or "\'R\'"; such strings are called *raw strings* ' 12329*cda5da8dSAndroid Build Coastguard Worker 'and treat\n' 12330*cda5da8dSAndroid Build Coastguard Worker 'backslashes as literal characters. As a result, in string ' 12331*cda5da8dSAndroid Build Coastguard Worker 'literals,\n' 12332*cda5da8dSAndroid Build Coastguard Worker '"\'\\U\'" and "\'\\u\'" escapes in raw strings are not treated ' 12333*cda5da8dSAndroid Build Coastguard Worker 'specially.\n' 12334*cda5da8dSAndroid Build Coastguard Worker 'Given that Python 2.x’s raw unicode literals behave differently ' 12335*cda5da8dSAndroid Build Coastguard Worker 'than\n' 12336*cda5da8dSAndroid Build Coastguard Worker 'Python 3.x’s the "\'ur\'" syntax is not supported.\n' 12337*cda5da8dSAndroid Build Coastguard Worker '\n' 12338*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.3: The "\'rb\'" prefix of raw bytes literals has ' 12339*cda5da8dSAndroid Build Coastguard Worker 'been\n' 12340*cda5da8dSAndroid Build Coastguard Worker 'added as a synonym of "\'br\'".\n' 12341*cda5da8dSAndroid Build Coastguard Worker '\n' 12342*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.3: Support for the unicode legacy literal\n' 12343*cda5da8dSAndroid Build Coastguard Worker '("u\'value\'") was reintroduced to simplify the maintenance of ' 12344*cda5da8dSAndroid Build Coastguard Worker 'dual\n' 12345*cda5da8dSAndroid Build Coastguard Worker 'Python 2.x and 3.x codebases. See **PEP 414** for more ' 12346*cda5da8dSAndroid Build Coastguard Worker 'information.\n' 12347*cda5da8dSAndroid Build Coastguard Worker '\n' 12348*cda5da8dSAndroid Build Coastguard Worker 'A string literal with "\'f\'" or "\'F\'" in its prefix is a ' 12349*cda5da8dSAndroid Build Coastguard Worker '*formatted\n' 12350*cda5da8dSAndroid Build Coastguard Worker 'string literal*; see Formatted string literals. The "\'f\'" may ' 12351*cda5da8dSAndroid Build Coastguard Worker 'be\n' 12352*cda5da8dSAndroid Build Coastguard Worker 'combined with "\'r\'", but not with "\'b\'" or "\'u\'", therefore ' 12353*cda5da8dSAndroid Build Coastguard Worker 'raw\n' 12354*cda5da8dSAndroid Build Coastguard Worker 'formatted strings are possible, but formatted bytes literals are ' 12355*cda5da8dSAndroid Build Coastguard Worker 'not.\n' 12356*cda5da8dSAndroid Build Coastguard Worker '\n' 12357*cda5da8dSAndroid Build Coastguard Worker 'In triple-quoted literals, unescaped newlines and quotes are ' 12358*cda5da8dSAndroid Build Coastguard Worker 'allowed\n' 12359*cda5da8dSAndroid Build Coastguard Worker '(and are retained), except that three unescaped quotes in a row\n' 12360*cda5da8dSAndroid Build Coastguard Worker 'terminate the literal. (A “quote” is the character used to open ' 12361*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12362*cda5da8dSAndroid Build Coastguard Worker 'literal, i.e. either "\'" or """.)\n' 12363*cda5da8dSAndroid Build Coastguard Worker '\n' 12364*cda5da8dSAndroid Build Coastguard Worker 'Unless an "\'r\'" or "\'R\'" prefix is present, escape sequences ' 12365*cda5da8dSAndroid Build Coastguard Worker 'in string\n' 12366*cda5da8dSAndroid Build Coastguard Worker 'and bytes literals are interpreted according to rules similar to ' 12367*cda5da8dSAndroid Build Coastguard Worker 'those\n' 12368*cda5da8dSAndroid Build Coastguard Worker 'used by Standard C. The recognized escape sequences are:\n' 12369*cda5da8dSAndroid Build Coastguard Worker '\n' 12370*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12371*cda5da8dSAndroid Build Coastguard Worker '| Escape Sequence | Meaning | Notes ' 12372*cda5da8dSAndroid Build Coastguard Worker '|\n' 12373*cda5da8dSAndroid Build Coastguard Worker '|===================|===================================|=========|\n' 12374*cda5da8dSAndroid Build Coastguard Worker '| "\\"<newline> | Backslash and newline ignored | ' 12375*cda5da8dSAndroid Build Coastguard Worker '(1) |\n' 12376*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12377*cda5da8dSAndroid Build Coastguard Worker '| "\\\\" | Backslash ("\\") ' 12378*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12379*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12380*cda5da8dSAndroid Build Coastguard Worker '| "\\\'" | Single quote ("\'") ' 12381*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12382*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12383*cda5da8dSAndroid Build Coastguard Worker '| "\\"" | Double quote (""") ' 12384*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12385*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12386*cda5da8dSAndroid Build Coastguard Worker '| "\\a" | ASCII Bell (BEL) ' 12387*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12388*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12389*cda5da8dSAndroid Build Coastguard Worker '| "\\b" | ASCII Backspace (BS) ' 12390*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12391*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12392*cda5da8dSAndroid Build Coastguard Worker '| "\\f" | ASCII Formfeed (FF) ' 12393*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12394*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12395*cda5da8dSAndroid Build Coastguard Worker '| "\\n" | ASCII Linefeed (LF) ' 12396*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12397*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12398*cda5da8dSAndroid Build Coastguard Worker '| "\\r" | ASCII Carriage Return (CR) ' 12399*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12400*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12401*cda5da8dSAndroid Build Coastguard Worker '| "\\t" | ASCII Horizontal Tab (TAB) ' 12402*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12403*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12404*cda5da8dSAndroid Build Coastguard Worker '| "\\v" | ASCII Vertical Tab (VT) ' 12405*cda5da8dSAndroid Build Coastguard Worker '| |\n' 12406*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12407*cda5da8dSAndroid Build Coastguard Worker '| "\\ooo" | Character with octal value *ooo* | ' 12408*cda5da8dSAndroid Build Coastguard Worker '(2,4) |\n' 12409*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12410*cda5da8dSAndroid Build Coastguard Worker '| "\\xhh" | Character with hex value *hh* | ' 12411*cda5da8dSAndroid Build Coastguard Worker '(3,4) |\n' 12412*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12413*cda5da8dSAndroid Build Coastguard Worker '\n' 12414*cda5da8dSAndroid Build Coastguard Worker 'Escape sequences only recognized in string literals are:\n' 12415*cda5da8dSAndroid Build Coastguard Worker '\n' 12416*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12417*cda5da8dSAndroid Build Coastguard Worker '| Escape Sequence | Meaning | Notes ' 12418*cda5da8dSAndroid Build Coastguard Worker '|\n' 12419*cda5da8dSAndroid Build Coastguard Worker '|===================|===================================|=========|\n' 12420*cda5da8dSAndroid Build Coastguard Worker '| "\\N{name}" | Character named *name* in the | ' 12421*cda5da8dSAndroid Build Coastguard Worker '(5) |\n' 12422*cda5da8dSAndroid Build Coastguard Worker '| | Unicode database | ' 12423*cda5da8dSAndroid Build Coastguard Worker '|\n' 12424*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12425*cda5da8dSAndroid Build Coastguard Worker '| "\\uxxxx" | Character with 16-bit hex value | ' 12426*cda5da8dSAndroid Build Coastguard Worker '(6) |\n' 12427*cda5da8dSAndroid Build Coastguard Worker '| | *xxxx* | ' 12428*cda5da8dSAndroid Build Coastguard Worker '|\n' 12429*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12430*cda5da8dSAndroid Build Coastguard Worker '| "\\Uxxxxxxxx" | Character with 32-bit hex value | ' 12431*cda5da8dSAndroid Build Coastguard Worker '(7) |\n' 12432*cda5da8dSAndroid Build Coastguard Worker '| | *xxxxxxxx* | ' 12433*cda5da8dSAndroid Build Coastguard Worker '|\n' 12434*cda5da8dSAndroid Build Coastguard Worker '+-------------------+-----------------------------------+---------+\n' 12435*cda5da8dSAndroid Build Coastguard Worker '\n' 12436*cda5da8dSAndroid Build Coastguard Worker 'Notes:\n' 12437*cda5da8dSAndroid Build Coastguard Worker '\n' 12438*cda5da8dSAndroid Build Coastguard Worker '1. A backslash can be added at the end of a line to ignore the\n' 12439*cda5da8dSAndroid Build Coastguard Worker ' newline:\n' 12440*cda5da8dSAndroid Build Coastguard Worker '\n' 12441*cda5da8dSAndroid Build Coastguard Worker " >>> 'This string will not include \\\n" 12442*cda5da8dSAndroid Build Coastguard Worker " ... backslashes or newline characters.'\n" 12443*cda5da8dSAndroid Build Coastguard Worker " 'This string will not include backslashes or newline " 12444*cda5da8dSAndroid Build Coastguard Worker "characters.'\n" 12445*cda5da8dSAndroid Build Coastguard Worker '\n' 12446*cda5da8dSAndroid Build Coastguard Worker ' The same result can be achieved using triple-quoted strings, ' 12447*cda5da8dSAndroid Build Coastguard Worker 'or\n' 12448*cda5da8dSAndroid Build Coastguard Worker ' parentheses and string literal concatenation.\n' 12449*cda5da8dSAndroid Build Coastguard Worker '\n' 12450*cda5da8dSAndroid Build Coastguard Worker '2. As in Standard C, up to three octal digits are accepted.\n' 12451*cda5da8dSAndroid Build Coastguard Worker '\n' 12452*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.11: Octal escapes with value larger than\n' 12453*cda5da8dSAndroid Build Coastguard Worker ' "0o377" produce a "DeprecationWarning". In a future Python ' 12454*cda5da8dSAndroid Build Coastguard Worker 'version\n' 12455*cda5da8dSAndroid Build Coastguard Worker ' they will be a "SyntaxWarning" and eventually a ' 12456*cda5da8dSAndroid Build Coastguard Worker '"SyntaxError".\n' 12457*cda5da8dSAndroid Build Coastguard Worker '\n' 12458*cda5da8dSAndroid Build Coastguard Worker '3. Unlike in Standard C, exactly two hex digits are required.\n' 12459*cda5da8dSAndroid Build Coastguard Worker '\n' 12460*cda5da8dSAndroid Build Coastguard Worker '4. In a bytes literal, hexadecimal and octal escapes denote the ' 12461*cda5da8dSAndroid Build Coastguard Worker 'byte\n' 12462*cda5da8dSAndroid Build Coastguard Worker ' with the given value. In a string literal, these escapes ' 12463*cda5da8dSAndroid Build Coastguard Worker 'denote a\n' 12464*cda5da8dSAndroid Build Coastguard Worker ' Unicode character with the given value.\n' 12465*cda5da8dSAndroid Build Coastguard Worker '\n' 12466*cda5da8dSAndroid Build Coastguard Worker '5. Changed in version 3.3: Support for name aliases [1] has been\n' 12467*cda5da8dSAndroid Build Coastguard Worker ' added.\n' 12468*cda5da8dSAndroid Build Coastguard Worker '\n' 12469*cda5da8dSAndroid Build Coastguard Worker '6. Exactly four hex digits are required.\n' 12470*cda5da8dSAndroid Build Coastguard Worker '\n' 12471*cda5da8dSAndroid Build Coastguard Worker '7. Any Unicode character can be encoded this way. Exactly eight ' 12472*cda5da8dSAndroid Build Coastguard Worker 'hex\n' 12473*cda5da8dSAndroid Build Coastguard Worker ' digits are required.\n' 12474*cda5da8dSAndroid Build Coastguard Worker '\n' 12475*cda5da8dSAndroid Build Coastguard Worker 'Unlike Standard C, all unrecognized escape sequences are left in ' 12476*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12477*cda5da8dSAndroid Build Coastguard Worker 'string unchanged, i.e., *the backslash is left in the result*. ' 12478*cda5da8dSAndroid Build Coastguard Worker '(This\n' 12479*cda5da8dSAndroid Build Coastguard Worker 'behavior is useful when debugging: if an escape sequence is ' 12480*cda5da8dSAndroid Build Coastguard Worker 'mistyped,\n' 12481*cda5da8dSAndroid Build Coastguard Worker 'the resulting output is more easily recognized as broken.) It is ' 12482*cda5da8dSAndroid Build Coastguard Worker 'also\n' 12483*cda5da8dSAndroid Build Coastguard Worker 'important to note that the escape sequences only recognized in ' 12484*cda5da8dSAndroid Build Coastguard Worker 'string\n' 12485*cda5da8dSAndroid Build Coastguard Worker 'literals fall into the category of unrecognized escapes for ' 12486*cda5da8dSAndroid Build Coastguard Worker 'bytes\n' 12487*cda5da8dSAndroid Build Coastguard Worker 'literals.\n' 12488*cda5da8dSAndroid Build Coastguard Worker '\n' 12489*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.6: Unrecognized escape sequences produce ' 12490*cda5da8dSAndroid Build Coastguard Worker 'a\n' 12491*cda5da8dSAndroid Build Coastguard Worker ' "DeprecationWarning". In a future Python version they will be ' 12492*cda5da8dSAndroid Build Coastguard Worker 'a\n' 12493*cda5da8dSAndroid Build Coastguard Worker ' "SyntaxWarning" and eventually a "SyntaxError".\n' 12494*cda5da8dSAndroid Build Coastguard Worker '\n' 12495*cda5da8dSAndroid Build Coastguard Worker 'Even in a raw literal, quotes can be escaped with a backslash, ' 12496*cda5da8dSAndroid Build Coastguard Worker 'but the\n' 12497*cda5da8dSAndroid Build Coastguard Worker 'backslash remains in the result; for example, "r"\\""" is a ' 12498*cda5da8dSAndroid Build Coastguard Worker 'valid\n' 12499*cda5da8dSAndroid Build Coastguard Worker 'string literal consisting of two characters: a backslash and a ' 12500*cda5da8dSAndroid Build Coastguard Worker 'double\n' 12501*cda5da8dSAndroid Build Coastguard Worker 'quote; "r"\\"" is not a valid string literal (even a raw string ' 12502*cda5da8dSAndroid Build Coastguard Worker 'cannot\n' 12503*cda5da8dSAndroid Build Coastguard Worker 'end in an odd number of backslashes). Specifically, *a raw ' 12504*cda5da8dSAndroid Build Coastguard Worker 'literal\n' 12505*cda5da8dSAndroid Build Coastguard Worker 'cannot end in a single backslash* (since the backslash would ' 12506*cda5da8dSAndroid Build Coastguard Worker 'escape\n' 12507*cda5da8dSAndroid Build Coastguard Worker 'the following quote character). Note also that a single ' 12508*cda5da8dSAndroid Build Coastguard Worker 'backslash\n' 12509*cda5da8dSAndroid Build Coastguard Worker 'followed by a newline is interpreted as those two characters as ' 12510*cda5da8dSAndroid Build Coastguard Worker 'part\n' 12511*cda5da8dSAndroid Build Coastguard Worker 'of the literal, *not* as a line continuation.\n', 12512*cda5da8dSAndroid Build Coastguard Worker 'subscriptions': 'Subscriptions\n' 12513*cda5da8dSAndroid Build Coastguard Worker '*************\n' 12514*cda5da8dSAndroid Build Coastguard Worker '\n' 12515*cda5da8dSAndroid Build Coastguard Worker 'The subscription of an instance of a container class will ' 12516*cda5da8dSAndroid Build Coastguard Worker 'generally\n' 12517*cda5da8dSAndroid Build Coastguard Worker 'select an element from the container. The subscription of a ' 12518*cda5da8dSAndroid Build Coastguard Worker '*generic\n' 12519*cda5da8dSAndroid Build Coastguard Worker 'class* will generally return a GenericAlias object.\n' 12520*cda5da8dSAndroid Build Coastguard Worker '\n' 12521*cda5da8dSAndroid Build Coastguard Worker ' subscription ::= primary "[" expression_list "]"\n' 12522*cda5da8dSAndroid Build Coastguard Worker '\n' 12523*cda5da8dSAndroid Build Coastguard Worker 'When an object is subscripted, the interpreter will ' 12524*cda5da8dSAndroid Build Coastguard Worker 'evaluate the\n' 12525*cda5da8dSAndroid Build Coastguard Worker 'primary and the expression list.\n' 12526*cda5da8dSAndroid Build Coastguard Worker '\n' 12527*cda5da8dSAndroid Build Coastguard Worker 'The primary must evaluate to an object that supports ' 12528*cda5da8dSAndroid Build Coastguard Worker 'subscription. An\n' 12529*cda5da8dSAndroid Build Coastguard Worker 'object may support subscription through defining one or ' 12530*cda5da8dSAndroid Build Coastguard Worker 'both of\n' 12531*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()" and "__class_getitem__()". When the primary ' 12532*cda5da8dSAndroid Build Coastguard Worker 'is\n' 12533*cda5da8dSAndroid Build Coastguard Worker 'subscripted, the evaluated result of the expression list ' 12534*cda5da8dSAndroid Build Coastguard Worker 'will be\n' 12535*cda5da8dSAndroid Build Coastguard Worker 'passed to one of these methods. For more details on when\n' 12536*cda5da8dSAndroid Build Coastguard Worker '"__class_getitem__" is called instead of "__getitem__", ' 12537*cda5da8dSAndroid Build Coastguard Worker 'see\n' 12538*cda5da8dSAndroid Build Coastguard Worker '__class_getitem__ versus __getitem__.\n' 12539*cda5da8dSAndroid Build Coastguard Worker '\n' 12540*cda5da8dSAndroid Build Coastguard Worker 'If the expression list contains at least one comma, it will ' 12541*cda5da8dSAndroid Build Coastguard Worker 'evaluate\n' 12542*cda5da8dSAndroid Build Coastguard Worker 'to a "tuple" containing the items of the expression list. ' 12543*cda5da8dSAndroid Build Coastguard Worker 'Otherwise,\n' 12544*cda5da8dSAndroid Build Coastguard Worker 'the expression list will evaluate to the value of the ' 12545*cda5da8dSAndroid Build Coastguard Worker 'list’s sole\n' 12546*cda5da8dSAndroid Build Coastguard Worker 'member.\n' 12547*cda5da8dSAndroid Build Coastguard Worker '\n' 12548*cda5da8dSAndroid Build Coastguard Worker 'For built-in objects, there are two types of objects that ' 12549*cda5da8dSAndroid Build Coastguard Worker 'support\n' 12550*cda5da8dSAndroid Build Coastguard Worker 'subscription via "__getitem__()":\n' 12551*cda5da8dSAndroid Build Coastguard Worker '\n' 12552*cda5da8dSAndroid Build Coastguard Worker '1. Mappings. If the primary is a *mapping*, the expression ' 12553*cda5da8dSAndroid Build Coastguard Worker 'list must\n' 12554*cda5da8dSAndroid Build Coastguard Worker ' evaluate to an object whose value is one of the keys of ' 12555*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12556*cda5da8dSAndroid Build Coastguard Worker ' mapping, and the subscription selects the value in the ' 12557*cda5da8dSAndroid Build Coastguard Worker 'mapping that\n' 12558*cda5da8dSAndroid Build Coastguard Worker ' corresponds to that key. An example of a builtin mapping ' 12559*cda5da8dSAndroid Build Coastguard Worker 'class is\n' 12560*cda5da8dSAndroid Build Coastguard Worker ' the "dict" class.\n' 12561*cda5da8dSAndroid Build Coastguard Worker '\n' 12562*cda5da8dSAndroid Build Coastguard Worker '2. Sequences. If the primary is a *sequence*, the ' 12563*cda5da8dSAndroid Build Coastguard Worker 'expression list must\n' 12564*cda5da8dSAndroid Build Coastguard Worker ' evaluate to an "int" or a "slice" (as discussed in the ' 12565*cda5da8dSAndroid Build Coastguard Worker 'following\n' 12566*cda5da8dSAndroid Build Coastguard Worker ' section). Examples of builtin sequence classes include ' 12567*cda5da8dSAndroid Build Coastguard Worker 'the "str",\n' 12568*cda5da8dSAndroid Build Coastguard Worker ' "list" and "tuple" classes.\n' 12569*cda5da8dSAndroid Build Coastguard Worker '\n' 12570*cda5da8dSAndroid Build Coastguard Worker 'The formal syntax makes no special provision for negative ' 12571*cda5da8dSAndroid Build Coastguard Worker 'indices in\n' 12572*cda5da8dSAndroid Build Coastguard Worker '*sequences*. However, built-in sequences all provide a ' 12573*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()"\n' 12574*cda5da8dSAndroid Build Coastguard Worker 'method that interprets negative indices by adding the ' 12575*cda5da8dSAndroid Build Coastguard Worker 'length of the\n' 12576*cda5da8dSAndroid Build Coastguard Worker 'sequence to the index so that, for example, "x[-1]" selects ' 12577*cda5da8dSAndroid Build Coastguard Worker 'the last\n' 12578*cda5da8dSAndroid Build Coastguard Worker 'item of "x". The resulting value must be a nonnegative ' 12579*cda5da8dSAndroid Build Coastguard Worker 'integer less\n' 12580*cda5da8dSAndroid Build Coastguard Worker 'than the number of items in the sequence, and the ' 12581*cda5da8dSAndroid Build Coastguard Worker 'subscription selects\n' 12582*cda5da8dSAndroid Build Coastguard Worker 'the item whose index is that value (counting from zero). ' 12583*cda5da8dSAndroid Build Coastguard Worker 'Since the\n' 12584*cda5da8dSAndroid Build Coastguard Worker 'support for negative indices and slicing occurs in the ' 12585*cda5da8dSAndroid Build Coastguard Worker 'object’s\n' 12586*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()" method, subclasses overriding this method ' 12587*cda5da8dSAndroid Build Coastguard Worker 'will need to\n' 12588*cda5da8dSAndroid Build Coastguard Worker 'explicitly add that support.\n' 12589*cda5da8dSAndroid Build Coastguard Worker '\n' 12590*cda5da8dSAndroid Build Coastguard Worker 'A "string" is a special kind of sequence whose items are ' 12591*cda5da8dSAndroid Build Coastguard Worker '*characters*.\n' 12592*cda5da8dSAndroid Build Coastguard Worker 'A character is not a separate data type but a string of ' 12593*cda5da8dSAndroid Build Coastguard Worker 'exactly one\n' 12594*cda5da8dSAndroid Build Coastguard Worker 'character.\n', 12595*cda5da8dSAndroid Build Coastguard Worker 'truth': 'Truth Value Testing\n' 12596*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 12597*cda5da8dSAndroid Build Coastguard Worker '\n' 12598*cda5da8dSAndroid Build Coastguard Worker 'Any object can be tested for truth value, for use in an "if" or\n' 12599*cda5da8dSAndroid Build Coastguard Worker '"while" condition or as operand of the Boolean operations below.\n' 12600*cda5da8dSAndroid Build Coastguard Worker '\n' 12601*cda5da8dSAndroid Build Coastguard Worker 'By default, an object is considered true unless its class defines\n' 12602*cda5da8dSAndroid Build Coastguard Worker 'either a "__bool__()" method that returns "False" or a "__len__()"\n' 12603*cda5da8dSAndroid Build Coastguard Worker 'method that returns zero, when called with the object. [1] Here ' 12604*cda5da8dSAndroid Build Coastguard Worker 'are\n' 12605*cda5da8dSAndroid Build Coastguard Worker 'most of the built-in objects considered false:\n' 12606*cda5da8dSAndroid Build Coastguard Worker '\n' 12607*cda5da8dSAndroid Build Coastguard Worker '* constants defined to be false: "None" and "False".\n' 12608*cda5da8dSAndroid Build Coastguard Worker '\n' 12609*cda5da8dSAndroid Build Coastguard Worker '* zero of any numeric type: "0", "0.0", "0j", "Decimal(0)",\n' 12610*cda5da8dSAndroid Build Coastguard Worker ' "Fraction(0, 1)"\n' 12611*cda5da8dSAndroid Build Coastguard Worker '\n' 12612*cda5da8dSAndroid Build Coastguard Worker '* empty sequences and collections: "\'\'", "()", "[]", "{}", ' 12613*cda5da8dSAndroid Build Coastguard Worker '"set()",\n' 12614*cda5da8dSAndroid Build Coastguard Worker ' "range(0)"\n' 12615*cda5da8dSAndroid Build Coastguard Worker '\n' 12616*cda5da8dSAndroid Build Coastguard Worker 'Operations and built-in functions that have a Boolean result ' 12617*cda5da8dSAndroid Build Coastguard Worker 'always\n' 12618*cda5da8dSAndroid Build Coastguard Worker 'return "0" or "False" for false and "1" or "True" for true, unless\n' 12619*cda5da8dSAndroid Build Coastguard Worker 'otherwise stated. (Important exception: the Boolean operations ' 12620*cda5da8dSAndroid Build Coastguard Worker '"or"\n' 12621*cda5da8dSAndroid Build Coastguard Worker 'and "and" always return one of their operands.)\n', 12622*cda5da8dSAndroid Build Coastguard Worker 'try': 'The "try" statement\n' 12623*cda5da8dSAndroid Build Coastguard Worker '*******************\n' 12624*cda5da8dSAndroid Build Coastguard Worker '\n' 12625*cda5da8dSAndroid Build Coastguard Worker 'The "try" statement specifies exception handlers and/or cleanup code\n' 12626*cda5da8dSAndroid Build Coastguard Worker 'for a group of statements:\n' 12627*cda5da8dSAndroid Build Coastguard Worker '\n' 12628*cda5da8dSAndroid Build Coastguard Worker ' try_stmt ::= try1_stmt | try2_stmt | try3_stmt\n' 12629*cda5da8dSAndroid Build Coastguard Worker ' try1_stmt ::= "try" ":" suite\n' 12630*cda5da8dSAndroid Build Coastguard Worker ' ("except" [expression ["as" identifier]] ":" ' 12631*cda5da8dSAndroid Build Coastguard Worker 'suite)+\n' 12632*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 12633*cda5da8dSAndroid Build Coastguard Worker ' ["finally" ":" suite]\n' 12634*cda5da8dSAndroid Build Coastguard Worker ' try2_stmt ::= "try" ":" suite\n' 12635*cda5da8dSAndroid Build Coastguard Worker ' ("except" "*" expression ["as" identifier] ":" ' 12636*cda5da8dSAndroid Build Coastguard Worker 'suite)+\n' 12637*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 12638*cda5da8dSAndroid Build Coastguard Worker ' ["finally" ":" suite]\n' 12639*cda5da8dSAndroid Build Coastguard Worker ' try3_stmt ::= "try" ":" suite\n' 12640*cda5da8dSAndroid Build Coastguard Worker ' "finally" ":" suite\n' 12641*cda5da8dSAndroid Build Coastguard Worker '\n' 12642*cda5da8dSAndroid Build Coastguard Worker 'Additional information on exceptions can be found in section\n' 12643*cda5da8dSAndroid Build Coastguard Worker 'Exceptions, and information on using the "raise" statement to ' 12644*cda5da8dSAndroid Build Coastguard Worker 'generate\n' 12645*cda5da8dSAndroid Build Coastguard Worker 'exceptions may be found in section The raise statement.\n' 12646*cda5da8dSAndroid Build Coastguard Worker '\n' 12647*cda5da8dSAndroid Build Coastguard Worker '\n' 12648*cda5da8dSAndroid Build Coastguard Worker '"except" clause\n' 12649*cda5da8dSAndroid Build Coastguard Worker '===============\n' 12650*cda5da8dSAndroid Build Coastguard Worker '\n' 12651*cda5da8dSAndroid Build Coastguard Worker 'The "except" clause(s) specify one or more exception handlers. When ' 12652*cda5da8dSAndroid Build Coastguard Worker 'no\n' 12653*cda5da8dSAndroid Build Coastguard Worker 'exception occurs in the "try" clause, no exception handler is\n' 12654*cda5da8dSAndroid Build Coastguard Worker 'executed. When an exception occurs in the "try" suite, a search for ' 12655*cda5da8dSAndroid Build Coastguard Worker 'an\n' 12656*cda5da8dSAndroid Build Coastguard Worker 'exception handler is started. This search inspects the "except"\n' 12657*cda5da8dSAndroid Build Coastguard Worker 'clauses in turn until one is found that matches the exception. An\n' 12658*cda5da8dSAndroid Build Coastguard Worker 'expression-less "except" clause, if present, must be last; it ' 12659*cda5da8dSAndroid Build Coastguard Worker 'matches\n' 12660*cda5da8dSAndroid Build Coastguard Worker 'any exception. For an "except" clause with an expression, that\n' 12661*cda5da8dSAndroid Build Coastguard Worker 'expression is evaluated, and the clause matches the exception if the\n' 12662*cda5da8dSAndroid Build Coastguard Worker 'resulting object is “compatible” with the exception. An object is\n' 12663*cda5da8dSAndroid Build Coastguard Worker 'compatible with an exception if the object is the class or a *non-\n' 12664*cda5da8dSAndroid Build Coastguard Worker 'virtual base class* of the exception object, or a tuple containing ' 12665*cda5da8dSAndroid Build Coastguard Worker 'an\n' 12666*cda5da8dSAndroid Build Coastguard Worker 'item that is the class or a non-virtual base class of the exception\n' 12667*cda5da8dSAndroid Build Coastguard Worker 'object.\n' 12668*cda5da8dSAndroid Build Coastguard Worker '\n' 12669*cda5da8dSAndroid Build Coastguard Worker 'If no "except" clause matches the exception, the search for an\n' 12670*cda5da8dSAndroid Build Coastguard Worker 'exception handler continues in the surrounding code and on the\n' 12671*cda5da8dSAndroid Build Coastguard Worker 'invocation stack. [1]\n' 12672*cda5da8dSAndroid Build Coastguard Worker '\n' 12673*cda5da8dSAndroid Build Coastguard Worker 'If the evaluation of an expression in the header of an "except" ' 12674*cda5da8dSAndroid Build Coastguard Worker 'clause\n' 12675*cda5da8dSAndroid Build Coastguard Worker 'raises an exception, the original search for a handler is canceled ' 12676*cda5da8dSAndroid Build Coastguard Worker 'and\n' 12677*cda5da8dSAndroid Build Coastguard Worker 'a search starts for the new exception in the surrounding code and on\n' 12678*cda5da8dSAndroid Build Coastguard Worker 'the call stack (it is treated as if the entire "try" statement ' 12679*cda5da8dSAndroid Build Coastguard Worker 'raised\n' 12680*cda5da8dSAndroid Build Coastguard Worker 'the exception).\n' 12681*cda5da8dSAndroid Build Coastguard Worker '\n' 12682*cda5da8dSAndroid Build Coastguard Worker 'When a matching "except" clause is found, the exception is assigned ' 12683*cda5da8dSAndroid Build Coastguard Worker 'to\n' 12684*cda5da8dSAndroid Build Coastguard Worker 'the target specified after the "as" keyword in that "except" clause,\n' 12685*cda5da8dSAndroid Build Coastguard Worker 'if present, and the "except" clause’s suite is executed. All ' 12686*cda5da8dSAndroid Build Coastguard Worker '"except"\n' 12687*cda5da8dSAndroid Build Coastguard Worker 'clauses must have an executable block. When the end of this block is\n' 12688*cda5da8dSAndroid Build Coastguard Worker 'reached, execution continues normally after the entire "try"\n' 12689*cda5da8dSAndroid Build Coastguard Worker 'statement. (This means that if two nested handlers exist for the ' 12690*cda5da8dSAndroid Build Coastguard Worker 'same\n' 12691*cda5da8dSAndroid Build Coastguard Worker 'exception, and the exception occurs in the "try" clause of the inner\n' 12692*cda5da8dSAndroid Build Coastguard Worker 'handler, the outer handler will not handle the exception.)\n' 12693*cda5da8dSAndroid Build Coastguard Worker '\n' 12694*cda5da8dSAndroid Build Coastguard Worker 'When an exception has been assigned using "as target", it is cleared\n' 12695*cda5da8dSAndroid Build Coastguard Worker 'at the end of the "except" clause. This is as if\n' 12696*cda5da8dSAndroid Build Coastguard Worker '\n' 12697*cda5da8dSAndroid Build Coastguard Worker ' except E as N:\n' 12698*cda5da8dSAndroid Build Coastguard Worker ' foo\n' 12699*cda5da8dSAndroid Build Coastguard Worker '\n' 12700*cda5da8dSAndroid Build Coastguard Worker 'was translated to\n' 12701*cda5da8dSAndroid Build Coastguard Worker '\n' 12702*cda5da8dSAndroid Build Coastguard Worker ' except E as N:\n' 12703*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 12704*cda5da8dSAndroid Build Coastguard Worker ' foo\n' 12705*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 12706*cda5da8dSAndroid Build Coastguard Worker ' del N\n' 12707*cda5da8dSAndroid Build Coastguard Worker '\n' 12708*cda5da8dSAndroid Build Coastguard Worker 'This means the exception must be assigned to a different name to be\n' 12709*cda5da8dSAndroid Build Coastguard Worker 'able to refer to it after the "except" clause. Exceptions are ' 12710*cda5da8dSAndroid Build Coastguard Worker 'cleared\n' 12711*cda5da8dSAndroid Build Coastguard Worker 'because with the traceback attached to them, they form a reference\n' 12712*cda5da8dSAndroid Build Coastguard Worker 'cycle with the stack frame, keeping all locals in that frame alive\n' 12713*cda5da8dSAndroid Build Coastguard Worker 'until the next garbage collection occurs.\n' 12714*cda5da8dSAndroid Build Coastguard Worker '\n' 12715*cda5da8dSAndroid Build Coastguard Worker 'Before an "except" clause’s suite is executed, the exception is ' 12716*cda5da8dSAndroid Build Coastguard Worker 'stored\n' 12717*cda5da8dSAndroid Build Coastguard Worker 'in the "sys" module, where it can be accessed from within the body ' 12718*cda5da8dSAndroid Build Coastguard Worker 'of\n' 12719*cda5da8dSAndroid Build Coastguard Worker 'the "except" clause by calling "sys.exception()". When leaving an\n' 12720*cda5da8dSAndroid Build Coastguard Worker 'exception handler, the exception stored in the "sys" module is reset\n' 12721*cda5da8dSAndroid Build Coastguard Worker 'to its previous value:\n' 12722*cda5da8dSAndroid Build Coastguard Worker '\n' 12723*cda5da8dSAndroid Build Coastguard Worker ' >>> print(sys.exception())\n' 12724*cda5da8dSAndroid Build Coastguard Worker ' None\n' 12725*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 12726*cda5da8dSAndroid Build Coastguard Worker ' ... raise TypeError\n' 12727*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 12728*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 12729*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 12730*cda5da8dSAndroid Build Coastguard Worker ' ... raise ValueError\n' 12731*cda5da8dSAndroid Build Coastguard Worker ' ... except:\n' 12732*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 12733*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(sys.exception()))\n' 12734*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12735*cda5da8dSAndroid Build Coastguard Worker ' TypeError()\n' 12736*cda5da8dSAndroid Build Coastguard Worker ' ValueError()\n' 12737*cda5da8dSAndroid Build Coastguard Worker ' TypeError()\n' 12738*cda5da8dSAndroid Build Coastguard Worker ' >>> print(sys.exception())\n' 12739*cda5da8dSAndroid Build Coastguard Worker ' None\n' 12740*cda5da8dSAndroid Build Coastguard Worker '\n' 12741*cda5da8dSAndroid Build Coastguard Worker '\n' 12742*cda5da8dSAndroid Build Coastguard Worker '"except*" clause\n' 12743*cda5da8dSAndroid Build Coastguard Worker '================\n' 12744*cda5da8dSAndroid Build Coastguard Worker '\n' 12745*cda5da8dSAndroid Build Coastguard Worker 'The "except*" clause(s) are used for handling "ExceptionGroup"s. The\n' 12746*cda5da8dSAndroid Build Coastguard Worker 'exception type for matching is interpreted as in the case of ' 12747*cda5da8dSAndroid Build Coastguard Worker '"except",\n' 12748*cda5da8dSAndroid Build Coastguard Worker 'but in the case of exception groups we can have partial matches when\n' 12749*cda5da8dSAndroid Build Coastguard Worker 'the type matches some of the exceptions in the group. This means ' 12750*cda5da8dSAndroid Build Coastguard Worker 'that\n' 12751*cda5da8dSAndroid Build Coastguard Worker 'multiple "except*" clauses can execute, each handling part of the\n' 12752*cda5da8dSAndroid Build Coastguard Worker 'exception group. Each clause executes at most once and handles an\n' 12753*cda5da8dSAndroid Build Coastguard Worker 'exception group of all matching exceptions. Each exception in the\n' 12754*cda5da8dSAndroid Build Coastguard Worker 'group is handled by at most one "except*" clause, the first that\n' 12755*cda5da8dSAndroid Build Coastguard Worker 'matches it.\n' 12756*cda5da8dSAndroid Build Coastguard Worker '\n' 12757*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 12758*cda5da8dSAndroid Build Coastguard Worker ' ... raise ExceptionGroup("eg",\n' 12759*cda5da8dSAndroid Build Coastguard Worker ' ... [ValueError(1), TypeError(2), OSError(3), ' 12760*cda5da8dSAndroid Build Coastguard Worker 'OSError(4)])\n' 12761*cda5da8dSAndroid Build Coastguard Worker ' ... except* TypeError as e:\n' 12762*cda5da8dSAndroid Build Coastguard Worker " ... print(f'caught {type(e)} with nested {e.exceptions}')\n" 12763*cda5da8dSAndroid Build Coastguard Worker ' ... except* OSError as e:\n' 12764*cda5da8dSAndroid Build Coastguard Worker " ... print(f'caught {type(e)} with nested {e.exceptions}')\n" 12765*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12766*cda5da8dSAndroid Build Coastguard Worker " caught <class 'ExceptionGroup'> with nested (TypeError(2),)\n" 12767*cda5da8dSAndroid Build Coastguard Worker " caught <class 'ExceptionGroup'> with nested (OSError(3), " 12768*cda5da8dSAndroid Build Coastguard Worker 'OSError(4))\n' 12769*cda5da8dSAndroid Build Coastguard Worker ' + Exception Group Traceback (most recent call last):\n' 12770*cda5da8dSAndroid Build Coastguard Worker ' | File "<stdin>", line 2, in <module>\n' 12771*cda5da8dSAndroid Build Coastguard Worker ' | ExceptionGroup: eg\n' 12772*cda5da8dSAndroid Build Coastguard Worker ' +-+---------------- 1 ----------------\n' 12773*cda5da8dSAndroid Build Coastguard Worker ' | ValueError: 1\n' 12774*cda5da8dSAndroid Build Coastguard Worker ' +------------------------------------\n' 12775*cda5da8dSAndroid Build Coastguard Worker '\n' 12776*cda5da8dSAndroid Build Coastguard Worker 'Any remaining exceptions that were not handled by any "except*" ' 12777*cda5da8dSAndroid Build Coastguard Worker 'clause\n' 12778*cda5da8dSAndroid Build Coastguard Worker 'are re-raised at the end, combined into an exception group along ' 12779*cda5da8dSAndroid Build Coastguard Worker 'with\n' 12780*cda5da8dSAndroid Build Coastguard Worker 'all exceptions that were raised from within "except*" clauses.\n' 12781*cda5da8dSAndroid Build Coastguard Worker '\n' 12782*cda5da8dSAndroid Build Coastguard Worker 'From version 3.11.4, when the entire "ExceptionGroup" is handled and\n' 12783*cda5da8dSAndroid Build Coastguard Worker 'only one exception is raised from an "except*" clause, this ' 12784*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 12785*cda5da8dSAndroid Build Coastguard Worker 'is no longer wrapped to form a new "ExceptionGroup".\n' 12786*cda5da8dSAndroid Build Coastguard Worker '\n' 12787*cda5da8dSAndroid Build Coastguard Worker 'If the raised exception is not an exception group and its type ' 12788*cda5da8dSAndroid Build Coastguard Worker 'matches\n' 12789*cda5da8dSAndroid Build Coastguard Worker 'one of the "except*" clauses, it is caught and wrapped by an ' 12790*cda5da8dSAndroid Build Coastguard Worker 'exception\n' 12791*cda5da8dSAndroid Build Coastguard Worker 'group with an empty message string.\n' 12792*cda5da8dSAndroid Build Coastguard Worker '\n' 12793*cda5da8dSAndroid Build Coastguard Worker ' >>> try:\n' 12794*cda5da8dSAndroid Build Coastguard Worker ' ... raise BlockingIOError\n' 12795*cda5da8dSAndroid Build Coastguard Worker ' ... except* BlockingIOError as e:\n' 12796*cda5da8dSAndroid Build Coastguard Worker ' ... print(repr(e))\n' 12797*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12798*cda5da8dSAndroid Build Coastguard Worker " ExceptionGroup('', (BlockingIOError()))\n" 12799*cda5da8dSAndroid Build Coastguard Worker '\n' 12800*cda5da8dSAndroid Build Coastguard Worker 'An "except*" clause must have a matching type, and this type cannot ' 12801*cda5da8dSAndroid Build Coastguard Worker 'be\n' 12802*cda5da8dSAndroid Build Coastguard Worker 'a subclass of "BaseExceptionGroup". It is not possible to mix ' 12803*cda5da8dSAndroid Build Coastguard Worker '"except"\n' 12804*cda5da8dSAndroid Build Coastguard Worker 'and "except*" in the same "try". "break", "continue" and "return"\n' 12805*cda5da8dSAndroid Build Coastguard Worker 'cannot appear in an "except*" clause.\n' 12806*cda5da8dSAndroid Build Coastguard Worker '\n' 12807*cda5da8dSAndroid Build Coastguard Worker '\n' 12808*cda5da8dSAndroid Build Coastguard Worker '"else" clause\n' 12809*cda5da8dSAndroid Build Coastguard Worker '=============\n' 12810*cda5da8dSAndroid Build Coastguard Worker '\n' 12811*cda5da8dSAndroid Build Coastguard Worker 'The optional "else" clause is executed if the control flow leaves ' 12812*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12813*cda5da8dSAndroid Build Coastguard Worker '"try" suite, no exception was raised, and no "return", "continue", ' 12814*cda5da8dSAndroid Build Coastguard Worker 'or\n' 12815*cda5da8dSAndroid Build Coastguard Worker '"break" statement was executed. Exceptions in the "else" clause are\n' 12816*cda5da8dSAndroid Build Coastguard Worker 'not handled by the preceding "except" clauses.\n' 12817*cda5da8dSAndroid Build Coastguard Worker '\n' 12818*cda5da8dSAndroid Build Coastguard Worker '\n' 12819*cda5da8dSAndroid Build Coastguard Worker '"finally" clause\n' 12820*cda5da8dSAndroid Build Coastguard Worker '================\n' 12821*cda5da8dSAndroid Build Coastguard Worker '\n' 12822*cda5da8dSAndroid Build Coastguard Worker 'If "finally" is present, it specifies a ‘cleanup’ handler. The ' 12823*cda5da8dSAndroid Build Coastguard Worker '"try"\n' 12824*cda5da8dSAndroid Build Coastguard Worker 'clause is executed, including any "except" and "else" clauses. If ' 12825*cda5da8dSAndroid Build Coastguard Worker 'an\n' 12826*cda5da8dSAndroid Build Coastguard Worker 'exception occurs in any of the clauses and is not handled, the\n' 12827*cda5da8dSAndroid Build Coastguard Worker 'exception is temporarily saved. The "finally" clause is executed. ' 12828*cda5da8dSAndroid Build Coastguard Worker 'If\n' 12829*cda5da8dSAndroid Build Coastguard Worker 'there is a saved exception it is re-raised at the end of the ' 12830*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 12831*cda5da8dSAndroid Build Coastguard Worker 'clause. If the "finally" clause raises another exception, the saved\n' 12832*cda5da8dSAndroid Build Coastguard Worker 'exception is set as the context of the new exception. If the ' 12833*cda5da8dSAndroid Build Coastguard Worker '"finally"\n' 12834*cda5da8dSAndroid Build Coastguard Worker 'clause executes a "return", "break" or "continue" statement, the ' 12835*cda5da8dSAndroid Build Coastguard Worker 'saved\n' 12836*cda5da8dSAndroid Build Coastguard Worker 'exception is discarded:\n' 12837*cda5da8dSAndroid Build Coastguard Worker '\n' 12838*cda5da8dSAndroid Build Coastguard Worker ' >>> def f():\n' 12839*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 12840*cda5da8dSAndroid Build Coastguard Worker ' ... 1/0\n' 12841*cda5da8dSAndroid Build Coastguard Worker ' ... finally:\n' 12842*cda5da8dSAndroid Build Coastguard Worker ' ... return 42\n' 12843*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12844*cda5da8dSAndroid Build Coastguard Worker ' >>> f()\n' 12845*cda5da8dSAndroid Build Coastguard Worker ' 42\n' 12846*cda5da8dSAndroid Build Coastguard Worker '\n' 12847*cda5da8dSAndroid Build Coastguard Worker 'The exception information is not available to the program during\n' 12848*cda5da8dSAndroid Build Coastguard Worker 'execution of the "finally" clause.\n' 12849*cda5da8dSAndroid Build Coastguard Worker '\n' 12850*cda5da8dSAndroid Build Coastguard Worker 'When a "return", "break" or "continue" statement is executed in the\n' 12851*cda5da8dSAndroid Build Coastguard Worker '"try" suite of a "try"…"finally" statement, the "finally" clause is\n' 12852*cda5da8dSAndroid Build Coastguard Worker 'also executed ‘on the way out.’\n' 12853*cda5da8dSAndroid Build Coastguard Worker '\n' 12854*cda5da8dSAndroid Build Coastguard Worker 'The return value of a function is determined by the last "return"\n' 12855*cda5da8dSAndroid Build Coastguard Worker 'statement executed. Since the "finally" clause always executes, a\n' 12856*cda5da8dSAndroid Build Coastguard Worker '"return" statement executed in the "finally" clause will always be ' 12857*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12858*cda5da8dSAndroid Build Coastguard Worker 'last one executed:\n' 12859*cda5da8dSAndroid Build Coastguard Worker '\n' 12860*cda5da8dSAndroid Build Coastguard Worker ' >>> def foo():\n' 12861*cda5da8dSAndroid Build Coastguard Worker ' ... try:\n' 12862*cda5da8dSAndroid Build Coastguard Worker " ... return 'try'\n" 12863*cda5da8dSAndroid Build Coastguard Worker ' ... finally:\n' 12864*cda5da8dSAndroid Build Coastguard Worker " ... return 'finally'\n" 12865*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 12866*cda5da8dSAndroid Build Coastguard Worker ' >>> foo()\n' 12867*cda5da8dSAndroid Build Coastguard Worker " 'finally'\n" 12868*cda5da8dSAndroid Build Coastguard Worker '\n' 12869*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.8: Prior to Python 3.8, a "continue" statement\n' 12870*cda5da8dSAndroid Build Coastguard Worker 'was illegal in the "finally" clause due to a problem with the\n' 12871*cda5da8dSAndroid Build Coastguard Worker 'implementation.\n', 12872*cda5da8dSAndroid Build Coastguard Worker 'types': 'The standard type hierarchy\n' 12873*cda5da8dSAndroid Build Coastguard Worker '***************************\n' 12874*cda5da8dSAndroid Build Coastguard Worker '\n' 12875*cda5da8dSAndroid Build Coastguard Worker 'Below is a list of the types that are built into Python. ' 12876*cda5da8dSAndroid Build Coastguard Worker 'Extension\n' 12877*cda5da8dSAndroid Build Coastguard Worker 'modules (written in C, Java, or other languages, depending on the\n' 12878*cda5da8dSAndroid Build Coastguard Worker 'implementation) can define additional types. Future versions of\n' 12879*cda5da8dSAndroid Build Coastguard Worker 'Python may add types to the type hierarchy (e.g., rational ' 12880*cda5da8dSAndroid Build Coastguard Worker 'numbers,\n' 12881*cda5da8dSAndroid Build Coastguard Worker 'efficiently stored arrays of integers, etc.), although such ' 12882*cda5da8dSAndroid Build Coastguard Worker 'additions\n' 12883*cda5da8dSAndroid Build Coastguard Worker 'will often be provided via the standard library instead.\n' 12884*cda5da8dSAndroid Build Coastguard Worker '\n' 12885*cda5da8dSAndroid Build Coastguard Worker 'Some of the type descriptions below contain a paragraph listing\n' 12886*cda5da8dSAndroid Build Coastguard Worker '‘special attributes.’ These are attributes that provide access to ' 12887*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12888*cda5da8dSAndroid Build Coastguard Worker 'implementation and are not intended for general use. Their ' 12889*cda5da8dSAndroid Build Coastguard Worker 'definition\n' 12890*cda5da8dSAndroid Build Coastguard Worker 'may change in the future.\n' 12891*cda5da8dSAndroid Build Coastguard Worker '\n' 12892*cda5da8dSAndroid Build Coastguard Worker 'None\n' 12893*cda5da8dSAndroid Build Coastguard Worker ' This type has a single value. There is a single object with ' 12894*cda5da8dSAndroid Build Coastguard Worker 'this\n' 12895*cda5da8dSAndroid Build Coastguard Worker ' value. This object is accessed through the built-in name "None". ' 12896*cda5da8dSAndroid Build Coastguard Worker 'It\n' 12897*cda5da8dSAndroid Build Coastguard Worker ' is used to signify the absence of a value in many situations, ' 12898*cda5da8dSAndroid Build Coastguard Worker 'e.g.,\n' 12899*cda5da8dSAndroid Build Coastguard Worker ' it is returned from functions that don’t explicitly return\n' 12900*cda5da8dSAndroid Build Coastguard Worker ' anything. Its truth value is false.\n' 12901*cda5da8dSAndroid Build Coastguard Worker '\n' 12902*cda5da8dSAndroid Build Coastguard Worker 'NotImplemented\n' 12903*cda5da8dSAndroid Build Coastguard Worker ' This type has a single value. There is a single object with ' 12904*cda5da8dSAndroid Build Coastguard Worker 'this\n' 12905*cda5da8dSAndroid Build Coastguard Worker ' value. This object is accessed through the built-in name\n' 12906*cda5da8dSAndroid Build Coastguard Worker ' "NotImplemented". Numeric methods and rich comparison methods\n' 12907*cda5da8dSAndroid Build Coastguard Worker ' should return this value if they do not implement the operation ' 12908*cda5da8dSAndroid Build Coastguard Worker 'for\n' 12909*cda5da8dSAndroid Build Coastguard Worker ' the operands provided. (The interpreter will then try the\n' 12910*cda5da8dSAndroid Build Coastguard Worker ' reflected operation, or some other fallback, depending on the\n' 12911*cda5da8dSAndroid Build Coastguard Worker ' operator.) It should not be evaluated in a boolean context.\n' 12912*cda5da8dSAndroid Build Coastguard Worker '\n' 12913*cda5da8dSAndroid Build Coastguard Worker ' See Implementing the arithmetic operations for more details.\n' 12914*cda5da8dSAndroid Build Coastguard Worker '\n' 12915*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.9: Evaluating "NotImplemented" in a ' 12916*cda5da8dSAndroid Build Coastguard Worker 'boolean\n' 12917*cda5da8dSAndroid Build Coastguard Worker ' context is deprecated. While it currently evaluates as true, it\n' 12918*cda5da8dSAndroid Build Coastguard Worker ' will emit a "DeprecationWarning". It will raise a "TypeError" in ' 12919*cda5da8dSAndroid Build Coastguard Worker 'a\n' 12920*cda5da8dSAndroid Build Coastguard Worker ' future version of Python.\n' 12921*cda5da8dSAndroid Build Coastguard Worker '\n' 12922*cda5da8dSAndroid Build Coastguard Worker 'Ellipsis\n' 12923*cda5da8dSAndroid Build Coastguard Worker ' This type has a single value. There is a single object with ' 12924*cda5da8dSAndroid Build Coastguard Worker 'this\n' 12925*cda5da8dSAndroid Build Coastguard Worker ' value. This object is accessed through the literal "..." or the\n' 12926*cda5da8dSAndroid Build Coastguard Worker ' built-in name "Ellipsis". Its truth value is true.\n' 12927*cda5da8dSAndroid Build Coastguard Worker '\n' 12928*cda5da8dSAndroid Build Coastguard Worker '"numbers.Number"\n' 12929*cda5da8dSAndroid Build Coastguard Worker ' These are created by numeric literals and returned as results ' 12930*cda5da8dSAndroid Build Coastguard Worker 'by\n' 12931*cda5da8dSAndroid Build Coastguard Worker ' arithmetic operators and arithmetic built-in functions. ' 12932*cda5da8dSAndroid Build Coastguard Worker 'Numeric\n' 12933*cda5da8dSAndroid Build Coastguard Worker ' objects are immutable; once created their value never changes.\n' 12934*cda5da8dSAndroid Build Coastguard Worker ' Python numbers are of course strongly related to mathematical\n' 12935*cda5da8dSAndroid Build Coastguard Worker ' numbers, but subject to the limitations of numerical ' 12936*cda5da8dSAndroid Build Coastguard Worker 'representation\n' 12937*cda5da8dSAndroid Build Coastguard Worker ' in computers.\n' 12938*cda5da8dSAndroid Build Coastguard Worker '\n' 12939*cda5da8dSAndroid Build Coastguard Worker ' The string representations of the numeric classes, computed by\n' 12940*cda5da8dSAndroid Build Coastguard Worker ' "__repr__()" and "__str__()", have the following properties:\n' 12941*cda5da8dSAndroid Build Coastguard Worker '\n' 12942*cda5da8dSAndroid Build Coastguard Worker ' * They are valid numeric literals which, when passed to their ' 12943*cda5da8dSAndroid Build Coastguard Worker 'class\n' 12944*cda5da8dSAndroid Build Coastguard Worker ' constructor, produce an object having the value of the ' 12945*cda5da8dSAndroid Build Coastguard Worker 'original\n' 12946*cda5da8dSAndroid Build Coastguard Worker ' numeric.\n' 12947*cda5da8dSAndroid Build Coastguard Worker '\n' 12948*cda5da8dSAndroid Build Coastguard Worker ' * The representation is in base 10, when possible.\n' 12949*cda5da8dSAndroid Build Coastguard Worker '\n' 12950*cda5da8dSAndroid Build Coastguard Worker ' * Leading zeros, possibly excepting a single zero before a ' 12951*cda5da8dSAndroid Build Coastguard Worker 'decimal\n' 12952*cda5da8dSAndroid Build Coastguard Worker ' point, are not shown.\n' 12953*cda5da8dSAndroid Build Coastguard Worker '\n' 12954*cda5da8dSAndroid Build Coastguard Worker ' * Trailing zeros, possibly excepting a single zero after a ' 12955*cda5da8dSAndroid Build Coastguard Worker 'decimal\n' 12956*cda5da8dSAndroid Build Coastguard Worker ' point, are not shown.\n' 12957*cda5da8dSAndroid Build Coastguard Worker '\n' 12958*cda5da8dSAndroid Build Coastguard Worker ' * A sign is shown only when the number is negative.\n' 12959*cda5da8dSAndroid Build Coastguard Worker '\n' 12960*cda5da8dSAndroid Build Coastguard Worker ' Python distinguishes between integers, floating point numbers, ' 12961*cda5da8dSAndroid Build Coastguard Worker 'and\n' 12962*cda5da8dSAndroid Build Coastguard Worker ' complex numbers:\n' 12963*cda5da8dSAndroid Build Coastguard Worker '\n' 12964*cda5da8dSAndroid Build Coastguard Worker ' "numbers.Integral"\n' 12965*cda5da8dSAndroid Build Coastguard Worker ' These represent elements from the mathematical set of ' 12966*cda5da8dSAndroid Build Coastguard Worker 'integers\n' 12967*cda5da8dSAndroid Build Coastguard Worker ' (positive and negative).\n' 12968*cda5da8dSAndroid Build Coastguard Worker '\n' 12969*cda5da8dSAndroid Build Coastguard Worker ' There are two types of integers:\n' 12970*cda5da8dSAndroid Build Coastguard Worker '\n' 12971*cda5da8dSAndroid Build Coastguard Worker ' Integers ("int")\n' 12972*cda5da8dSAndroid Build Coastguard Worker ' These represent numbers in an unlimited range, subject to\n' 12973*cda5da8dSAndroid Build Coastguard Worker ' available (virtual) memory only. For the purpose of ' 12974*cda5da8dSAndroid Build Coastguard Worker 'shift\n' 12975*cda5da8dSAndroid Build Coastguard Worker ' and mask operations, a binary representation is assumed, ' 12976*cda5da8dSAndroid Build Coastguard Worker 'and\n' 12977*cda5da8dSAndroid Build Coastguard Worker ' negative numbers are represented in a variant of 2’s\n' 12978*cda5da8dSAndroid Build Coastguard Worker ' complement which gives the illusion of an infinite string ' 12979*cda5da8dSAndroid Build Coastguard Worker 'of\n' 12980*cda5da8dSAndroid Build Coastguard Worker ' sign bits extending to the left.\n' 12981*cda5da8dSAndroid Build Coastguard Worker '\n' 12982*cda5da8dSAndroid Build Coastguard Worker ' Booleans ("bool")\n' 12983*cda5da8dSAndroid Build Coastguard Worker ' These represent the truth values False and True. The two\n' 12984*cda5da8dSAndroid Build Coastguard Worker ' objects representing the values "False" and "True" are ' 12985*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12986*cda5da8dSAndroid Build Coastguard Worker ' only Boolean objects. The Boolean type is a subtype of ' 12987*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12988*cda5da8dSAndroid Build Coastguard Worker ' integer type, and Boolean values behave like the values 0 ' 12989*cda5da8dSAndroid Build Coastguard Worker 'and\n' 12990*cda5da8dSAndroid Build Coastguard Worker ' 1, respectively, in almost all contexts, the exception ' 12991*cda5da8dSAndroid Build Coastguard Worker 'being\n' 12992*cda5da8dSAndroid Build Coastguard Worker ' that when converted to a string, the strings ""False"" or\n' 12993*cda5da8dSAndroid Build Coastguard Worker ' ""True"" are returned, respectively.\n' 12994*cda5da8dSAndroid Build Coastguard Worker '\n' 12995*cda5da8dSAndroid Build Coastguard Worker ' The rules for integer representation are intended to give ' 12996*cda5da8dSAndroid Build Coastguard Worker 'the\n' 12997*cda5da8dSAndroid Build Coastguard Worker ' most meaningful interpretation of shift and mask operations\n' 12998*cda5da8dSAndroid Build Coastguard Worker ' involving negative integers.\n' 12999*cda5da8dSAndroid Build Coastguard Worker '\n' 13000*cda5da8dSAndroid Build Coastguard Worker ' "numbers.Real" ("float")\n' 13001*cda5da8dSAndroid Build Coastguard Worker ' These represent machine-level double precision floating ' 13002*cda5da8dSAndroid Build Coastguard Worker 'point\n' 13003*cda5da8dSAndroid Build Coastguard Worker ' numbers. You are at the mercy of the underlying machine\n' 13004*cda5da8dSAndroid Build Coastguard Worker ' architecture (and C or Java implementation) for the accepted\n' 13005*cda5da8dSAndroid Build Coastguard Worker ' range and handling of overflow. Python does not support ' 13006*cda5da8dSAndroid Build Coastguard Worker 'single-\n' 13007*cda5da8dSAndroid Build Coastguard Worker ' precision floating point numbers; the savings in processor ' 13008*cda5da8dSAndroid Build Coastguard Worker 'and\n' 13009*cda5da8dSAndroid Build Coastguard Worker ' memory usage that are usually the reason for using these are\n' 13010*cda5da8dSAndroid Build Coastguard Worker ' dwarfed by the overhead of using objects in Python, so there ' 13011*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13012*cda5da8dSAndroid Build Coastguard Worker ' no reason to complicate the language with two kinds of ' 13013*cda5da8dSAndroid Build Coastguard Worker 'floating\n' 13014*cda5da8dSAndroid Build Coastguard Worker ' point numbers.\n' 13015*cda5da8dSAndroid Build Coastguard Worker '\n' 13016*cda5da8dSAndroid Build Coastguard Worker ' "numbers.Complex" ("complex")\n' 13017*cda5da8dSAndroid Build Coastguard Worker ' These represent complex numbers as a pair of machine-level\n' 13018*cda5da8dSAndroid Build Coastguard Worker ' double precision floating point numbers. The same caveats ' 13019*cda5da8dSAndroid Build Coastguard Worker 'apply\n' 13020*cda5da8dSAndroid Build Coastguard Worker ' as for floating point numbers. The real and imaginary parts ' 13021*cda5da8dSAndroid Build Coastguard Worker 'of a\n' 13022*cda5da8dSAndroid Build Coastguard Worker ' complex number "z" can be retrieved through the read-only\n' 13023*cda5da8dSAndroid Build Coastguard Worker ' attributes "z.real" and "z.imag".\n' 13024*cda5da8dSAndroid Build Coastguard Worker '\n' 13025*cda5da8dSAndroid Build Coastguard Worker 'Sequences\n' 13026*cda5da8dSAndroid Build Coastguard Worker ' These represent finite ordered sets indexed by non-negative\n' 13027*cda5da8dSAndroid Build Coastguard Worker ' numbers. The built-in function "len()" returns the number of ' 13028*cda5da8dSAndroid Build Coastguard Worker 'items\n' 13029*cda5da8dSAndroid Build Coastguard Worker ' of a sequence. When the length of a sequence is *n*, the index ' 13030*cda5da8dSAndroid Build Coastguard Worker 'set\n' 13031*cda5da8dSAndroid Build Coastguard Worker ' contains the numbers 0, 1, …, *n*-1. Item *i* of sequence *a* ' 13032*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13033*cda5da8dSAndroid Build Coastguard Worker ' selected by "a[i]".\n' 13034*cda5da8dSAndroid Build Coastguard Worker '\n' 13035*cda5da8dSAndroid Build Coastguard Worker ' Sequences also support slicing: "a[i:j]" selects all items with\n' 13036*cda5da8dSAndroid Build Coastguard Worker ' index *k* such that *i* "<=" *k* "<" *j*. When used as an\n' 13037*cda5da8dSAndroid Build Coastguard Worker ' expression, a slice is a sequence of the same type. This ' 13038*cda5da8dSAndroid Build Coastguard Worker 'implies\n' 13039*cda5da8dSAndroid Build Coastguard Worker ' that the index set is renumbered so that it starts at 0.\n' 13040*cda5da8dSAndroid Build Coastguard Worker '\n' 13041*cda5da8dSAndroid Build Coastguard Worker ' Some sequences also support “extended slicing” with a third ' 13042*cda5da8dSAndroid Build Coastguard Worker '“step”\n' 13043*cda5da8dSAndroid Build Coastguard Worker ' parameter: "a[i:j:k]" selects all items of *a* with index *x* ' 13044*cda5da8dSAndroid Build Coastguard Worker 'where\n' 13045*cda5da8dSAndroid Build Coastguard Worker ' "x = i + n*k", *n* ">=" "0" and *i* "<=" *x* "<" *j*.\n' 13046*cda5da8dSAndroid Build Coastguard Worker '\n' 13047*cda5da8dSAndroid Build Coastguard Worker ' Sequences are distinguished according to their mutability:\n' 13048*cda5da8dSAndroid Build Coastguard Worker '\n' 13049*cda5da8dSAndroid Build Coastguard Worker ' Immutable sequences\n' 13050*cda5da8dSAndroid Build Coastguard Worker ' An object of an immutable sequence type cannot change once it ' 13051*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13052*cda5da8dSAndroid Build Coastguard Worker ' created. (If the object contains references to other ' 13053*cda5da8dSAndroid Build Coastguard Worker 'objects,\n' 13054*cda5da8dSAndroid Build Coastguard Worker ' these other objects may be mutable and may be changed; ' 13055*cda5da8dSAndroid Build Coastguard Worker 'however,\n' 13056*cda5da8dSAndroid Build Coastguard Worker ' the collection of objects directly referenced by an ' 13057*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 13058*cda5da8dSAndroid Build Coastguard Worker ' object cannot change.)\n' 13059*cda5da8dSAndroid Build Coastguard Worker '\n' 13060*cda5da8dSAndroid Build Coastguard Worker ' The following types are immutable sequences:\n' 13061*cda5da8dSAndroid Build Coastguard Worker '\n' 13062*cda5da8dSAndroid Build Coastguard Worker ' Strings\n' 13063*cda5da8dSAndroid Build Coastguard Worker ' A string is a sequence of values that represent Unicode ' 13064*cda5da8dSAndroid Build Coastguard Worker 'code\n' 13065*cda5da8dSAndroid Build Coastguard Worker ' points. All the code points in the range "U+0000 - ' 13066*cda5da8dSAndroid Build Coastguard Worker 'U+10FFFF"\n' 13067*cda5da8dSAndroid Build Coastguard Worker ' can be represented in a string. Python doesn’t have a ' 13068*cda5da8dSAndroid Build Coastguard Worker 'char\n' 13069*cda5da8dSAndroid Build Coastguard Worker ' type; instead, every code point in the string is ' 13070*cda5da8dSAndroid Build Coastguard Worker 'represented\n' 13071*cda5da8dSAndroid Build Coastguard Worker ' as a string object with length "1". The built-in ' 13072*cda5da8dSAndroid Build Coastguard Worker 'function\n' 13073*cda5da8dSAndroid Build Coastguard Worker ' "ord()" converts a code point from its string form to an\n' 13074*cda5da8dSAndroid Build Coastguard Worker ' integer in the range "0 - 10FFFF"; "chr()" converts an\n' 13075*cda5da8dSAndroid Build Coastguard Worker ' integer in the range "0 - 10FFFF" to the corresponding ' 13076*cda5da8dSAndroid Build Coastguard Worker 'length\n' 13077*cda5da8dSAndroid Build Coastguard Worker ' "1" string object. "str.encode()" can be used to convert ' 13078*cda5da8dSAndroid Build Coastguard Worker 'a\n' 13079*cda5da8dSAndroid Build Coastguard Worker ' "str" to "bytes" using the given text encoding, and\n' 13080*cda5da8dSAndroid Build Coastguard Worker ' "bytes.decode()" can be used to achieve the opposite.\n' 13081*cda5da8dSAndroid Build Coastguard Worker '\n' 13082*cda5da8dSAndroid Build Coastguard Worker ' Tuples\n' 13083*cda5da8dSAndroid Build Coastguard Worker ' The items of a tuple are arbitrary Python objects. Tuples ' 13084*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13085*cda5da8dSAndroid Build Coastguard Worker ' two or more items are formed by comma-separated lists of\n' 13086*cda5da8dSAndroid Build Coastguard Worker ' expressions. A tuple of one item (a ‘singleton’) can be\n' 13087*cda5da8dSAndroid Build Coastguard Worker ' formed by affixing a comma to an expression (an expression ' 13088*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13089*cda5da8dSAndroid Build Coastguard Worker ' itself does not create a tuple, since parentheses must be\n' 13090*cda5da8dSAndroid Build Coastguard Worker ' usable for grouping of expressions). An empty tuple can ' 13091*cda5da8dSAndroid Build Coastguard Worker 'be\n' 13092*cda5da8dSAndroid Build Coastguard Worker ' formed by an empty pair of parentheses.\n' 13093*cda5da8dSAndroid Build Coastguard Worker '\n' 13094*cda5da8dSAndroid Build Coastguard Worker ' Bytes\n' 13095*cda5da8dSAndroid Build Coastguard Worker ' A bytes object is an immutable array. The items are ' 13096*cda5da8dSAndroid Build Coastguard Worker '8-bit\n' 13097*cda5da8dSAndroid Build Coastguard Worker ' bytes, represented by integers in the range 0 <= x < 256.\n' 13098*cda5da8dSAndroid Build Coastguard Worker ' Bytes literals (like "b\'abc\'") and the built-in ' 13099*cda5da8dSAndroid Build Coastguard Worker '"bytes()"\n' 13100*cda5da8dSAndroid Build Coastguard Worker ' constructor can be used to create bytes objects. Also, ' 13101*cda5da8dSAndroid Build Coastguard Worker 'bytes\n' 13102*cda5da8dSAndroid Build Coastguard Worker ' objects can be decoded to strings via the "decode()" ' 13103*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 13104*cda5da8dSAndroid Build Coastguard Worker '\n' 13105*cda5da8dSAndroid Build Coastguard Worker ' Mutable sequences\n' 13106*cda5da8dSAndroid Build Coastguard Worker ' Mutable sequences can be changed after they are created. ' 13107*cda5da8dSAndroid Build Coastguard Worker 'The\n' 13108*cda5da8dSAndroid Build Coastguard Worker ' subscription and slicing notations can be used as the target ' 13109*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13110*cda5da8dSAndroid Build Coastguard Worker ' assignment and "del" (delete) statements.\n' 13111*cda5da8dSAndroid Build Coastguard Worker '\n' 13112*cda5da8dSAndroid Build Coastguard Worker ' There are currently two intrinsic mutable sequence types:\n' 13113*cda5da8dSAndroid Build Coastguard Worker '\n' 13114*cda5da8dSAndroid Build Coastguard Worker ' Lists\n' 13115*cda5da8dSAndroid Build Coastguard Worker ' The items of a list are arbitrary Python objects. Lists ' 13116*cda5da8dSAndroid Build Coastguard Worker 'are\n' 13117*cda5da8dSAndroid Build Coastguard Worker ' formed by placing a comma-separated list of expressions ' 13118*cda5da8dSAndroid Build Coastguard Worker 'in\n' 13119*cda5da8dSAndroid Build Coastguard Worker ' square brackets. (Note that there are no special cases ' 13120*cda5da8dSAndroid Build Coastguard Worker 'needed\n' 13121*cda5da8dSAndroid Build Coastguard Worker ' to form lists of length 0 or 1.)\n' 13122*cda5da8dSAndroid Build Coastguard Worker '\n' 13123*cda5da8dSAndroid Build Coastguard Worker ' Byte Arrays\n' 13124*cda5da8dSAndroid Build Coastguard Worker ' A bytearray object is a mutable array. They are created ' 13125*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13126*cda5da8dSAndroid Build Coastguard Worker ' the built-in "bytearray()" constructor. Aside from being\n' 13127*cda5da8dSAndroid Build Coastguard Worker ' mutable (and hence unhashable), byte arrays otherwise ' 13128*cda5da8dSAndroid Build Coastguard Worker 'provide\n' 13129*cda5da8dSAndroid Build Coastguard Worker ' the same interface and functionality as immutable "bytes"\n' 13130*cda5da8dSAndroid Build Coastguard Worker ' objects.\n' 13131*cda5da8dSAndroid Build Coastguard Worker '\n' 13132*cda5da8dSAndroid Build Coastguard Worker ' The extension module "array" provides an additional example ' 13133*cda5da8dSAndroid Build Coastguard Worker 'of a\n' 13134*cda5da8dSAndroid Build Coastguard Worker ' mutable sequence type, as does the "collections" module.\n' 13135*cda5da8dSAndroid Build Coastguard Worker '\n' 13136*cda5da8dSAndroid Build Coastguard Worker 'Set types\n' 13137*cda5da8dSAndroid Build Coastguard Worker ' These represent unordered, finite sets of unique, immutable\n' 13138*cda5da8dSAndroid Build Coastguard Worker ' objects. As such, they cannot be indexed by any subscript. ' 13139*cda5da8dSAndroid Build Coastguard Worker 'However,\n' 13140*cda5da8dSAndroid Build Coastguard Worker ' they can be iterated over, and the built-in function "len()"\n' 13141*cda5da8dSAndroid Build Coastguard Worker ' returns the number of items in a set. Common uses for sets are ' 13142*cda5da8dSAndroid Build Coastguard Worker 'fast\n' 13143*cda5da8dSAndroid Build Coastguard Worker ' membership testing, removing duplicates from a sequence, and\n' 13144*cda5da8dSAndroid Build Coastguard Worker ' computing mathematical operations such as intersection, union,\n' 13145*cda5da8dSAndroid Build Coastguard Worker ' difference, and symmetric difference.\n' 13146*cda5da8dSAndroid Build Coastguard Worker '\n' 13147*cda5da8dSAndroid Build Coastguard Worker ' For set elements, the same immutability rules apply as for\n' 13148*cda5da8dSAndroid Build Coastguard Worker ' dictionary keys. Note that numeric types obey the normal rules ' 13149*cda5da8dSAndroid Build Coastguard Worker 'for\n' 13150*cda5da8dSAndroid Build Coastguard Worker ' numeric comparison: if two numbers compare equal (e.g., "1" and\n' 13151*cda5da8dSAndroid Build Coastguard Worker ' "1.0"), only one of them can be contained in a set.\n' 13152*cda5da8dSAndroid Build Coastguard Worker '\n' 13153*cda5da8dSAndroid Build Coastguard Worker ' There are currently two intrinsic set types:\n' 13154*cda5da8dSAndroid Build Coastguard Worker '\n' 13155*cda5da8dSAndroid Build Coastguard Worker ' Sets\n' 13156*cda5da8dSAndroid Build Coastguard Worker ' These represent a mutable set. They are created by the ' 13157*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 13158*cda5da8dSAndroid Build Coastguard Worker ' "set()" constructor and can be modified afterwards by ' 13159*cda5da8dSAndroid Build Coastguard Worker 'several\n' 13160*cda5da8dSAndroid Build Coastguard Worker ' methods, such as "add()".\n' 13161*cda5da8dSAndroid Build Coastguard Worker '\n' 13162*cda5da8dSAndroid Build Coastguard Worker ' Frozen sets\n' 13163*cda5da8dSAndroid Build Coastguard Worker ' These represent an immutable set. They are created by the\n' 13164*cda5da8dSAndroid Build Coastguard Worker ' built-in "frozenset()" constructor. As a frozenset is ' 13165*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 13166*cda5da8dSAndroid Build Coastguard Worker ' and *hashable*, it can be used again as an element of ' 13167*cda5da8dSAndroid Build Coastguard Worker 'another\n' 13168*cda5da8dSAndroid Build Coastguard Worker ' set, or as a dictionary key.\n' 13169*cda5da8dSAndroid Build Coastguard Worker '\n' 13170*cda5da8dSAndroid Build Coastguard Worker 'Mappings\n' 13171*cda5da8dSAndroid Build Coastguard Worker ' These represent finite sets of objects indexed by arbitrary ' 13172*cda5da8dSAndroid Build Coastguard Worker 'index\n' 13173*cda5da8dSAndroid Build Coastguard Worker ' sets. The subscript notation "a[k]" selects the item indexed by ' 13174*cda5da8dSAndroid Build Coastguard Worker '"k"\n' 13175*cda5da8dSAndroid Build Coastguard Worker ' from the mapping "a"; this can be used in expressions and as ' 13176*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13177*cda5da8dSAndroid Build Coastguard Worker ' target of assignments or "del" statements. The built-in ' 13178*cda5da8dSAndroid Build Coastguard Worker 'function\n' 13179*cda5da8dSAndroid Build Coastguard Worker ' "len()" returns the number of items in a mapping.\n' 13180*cda5da8dSAndroid Build Coastguard Worker '\n' 13181*cda5da8dSAndroid Build Coastguard Worker ' There is currently a single intrinsic mapping type:\n' 13182*cda5da8dSAndroid Build Coastguard Worker '\n' 13183*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries\n' 13184*cda5da8dSAndroid Build Coastguard Worker ' These represent finite sets of objects indexed by nearly\n' 13185*cda5da8dSAndroid Build Coastguard Worker ' arbitrary values. The only types of values not acceptable ' 13186*cda5da8dSAndroid Build Coastguard Worker 'as\n' 13187*cda5da8dSAndroid Build Coastguard Worker ' keys are values containing lists or dictionaries or other\n' 13188*cda5da8dSAndroid Build Coastguard Worker ' mutable types that are compared by value rather than by ' 13189*cda5da8dSAndroid Build Coastguard Worker 'object\n' 13190*cda5da8dSAndroid Build Coastguard Worker ' identity, the reason being that the efficient implementation ' 13191*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13192*cda5da8dSAndroid Build Coastguard Worker ' dictionaries requires a key’s hash value to remain constant.\n' 13193*cda5da8dSAndroid Build Coastguard Worker ' Numeric types used for keys obey the normal rules for ' 13194*cda5da8dSAndroid Build Coastguard Worker 'numeric\n' 13195*cda5da8dSAndroid Build Coastguard Worker ' comparison: if two numbers compare equal (e.g., "1" and ' 13196*cda5da8dSAndroid Build Coastguard Worker '"1.0")\n' 13197*cda5da8dSAndroid Build Coastguard Worker ' then they can be used interchangeably to index the same\n' 13198*cda5da8dSAndroid Build Coastguard Worker ' dictionary entry.\n' 13199*cda5da8dSAndroid Build Coastguard Worker '\n' 13200*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries preserve insertion order, meaning that keys will ' 13201*cda5da8dSAndroid Build Coastguard Worker 'be\n' 13202*cda5da8dSAndroid Build Coastguard Worker ' produced in the same order they were added sequentially over ' 13203*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13204*cda5da8dSAndroid Build Coastguard Worker ' dictionary. Replacing an existing key does not change the ' 13205*cda5da8dSAndroid Build Coastguard Worker 'order,\n' 13206*cda5da8dSAndroid Build Coastguard Worker ' however removing a key and re-inserting it will add it to ' 13207*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13208*cda5da8dSAndroid Build Coastguard Worker ' end instead of keeping its old place.\n' 13209*cda5da8dSAndroid Build Coastguard Worker '\n' 13210*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries are mutable; they can be created by the "{...}"\n' 13211*cda5da8dSAndroid Build Coastguard Worker ' notation (see section Dictionary displays).\n' 13212*cda5da8dSAndroid Build Coastguard Worker '\n' 13213*cda5da8dSAndroid Build Coastguard Worker ' The extension modules "dbm.ndbm" and "dbm.gnu" provide\n' 13214*cda5da8dSAndroid Build Coastguard Worker ' additional examples of mapping types, as does the ' 13215*cda5da8dSAndroid Build Coastguard Worker '"collections"\n' 13216*cda5da8dSAndroid Build Coastguard Worker ' module.\n' 13217*cda5da8dSAndroid Build Coastguard Worker '\n' 13218*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: Dictionaries did not preserve ' 13219*cda5da8dSAndroid Build Coastguard Worker 'insertion\n' 13220*cda5da8dSAndroid Build Coastguard Worker ' order in versions of Python before 3.6. In CPython 3.6,\n' 13221*cda5da8dSAndroid Build Coastguard Worker ' insertion order was preserved, but it was considered an\n' 13222*cda5da8dSAndroid Build Coastguard Worker ' implementation detail at that time rather than a language\n' 13223*cda5da8dSAndroid Build Coastguard Worker ' guarantee.\n' 13224*cda5da8dSAndroid Build Coastguard Worker '\n' 13225*cda5da8dSAndroid Build Coastguard Worker 'Callable types\n' 13226*cda5da8dSAndroid Build Coastguard Worker ' These are the types to which the function call operation (see\n' 13227*cda5da8dSAndroid Build Coastguard Worker ' section Calls) can be applied:\n' 13228*cda5da8dSAndroid Build Coastguard Worker '\n' 13229*cda5da8dSAndroid Build Coastguard Worker ' User-defined functions\n' 13230*cda5da8dSAndroid Build Coastguard Worker ' A user-defined function object is created by a function\n' 13231*cda5da8dSAndroid Build Coastguard Worker ' definition (see section Function definitions). It should be\n' 13232*cda5da8dSAndroid Build Coastguard Worker ' called with an argument list containing the same number of ' 13233*cda5da8dSAndroid Build Coastguard Worker 'items\n' 13234*cda5da8dSAndroid Build Coastguard Worker ' as the function’s formal parameter list.\n' 13235*cda5da8dSAndroid Build Coastguard Worker '\n' 13236*cda5da8dSAndroid Build Coastguard Worker ' Special attributes:\n' 13237*cda5da8dSAndroid Build Coastguard Worker '\n' 13238*cda5da8dSAndroid Build Coastguard Worker ' ' 13239*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13240*cda5da8dSAndroid Build Coastguard Worker ' | Attribute | Meaning ' 13241*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13242*cda5da8dSAndroid Build Coastguard Worker ' ' 13243*cda5da8dSAndroid Build Coastguard Worker '|===========================|=================================|=============|\n' 13244*cda5da8dSAndroid Build Coastguard Worker ' | "__doc__" | The function’s documentation ' 13245*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13246*cda5da8dSAndroid Build Coastguard Worker ' | | string, or "None" if ' 13247*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13248*cda5da8dSAndroid Build Coastguard Worker ' | | unavailable; not inherited by ' 13249*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13250*cda5da8dSAndroid Build Coastguard Worker ' | | subclasses. ' 13251*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13252*cda5da8dSAndroid Build Coastguard Worker ' ' 13253*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13254*cda5da8dSAndroid Build Coastguard Worker ' | "__name__" | The function’s name. ' 13255*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13256*cda5da8dSAndroid Build Coastguard Worker ' ' 13257*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13258*cda5da8dSAndroid Build Coastguard Worker ' | "__qualname__" | The function’s *qualified ' 13259*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13260*cda5da8dSAndroid Build Coastguard Worker ' | | name*. New in version 3.3. ' 13261*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13262*cda5da8dSAndroid Build Coastguard Worker ' ' 13263*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13264*cda5da8dSAndroid Build Coastguard Worker ' | "__module__" | The name of the module the ' 13265*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13266*cda5da8dSAndroid Build Coastguard Worker ' | | function was defined in, or ' 13267*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13268*cda5da8dSAndroid Build Coastguard Worker ' | | "None" if unavailable. ' 13269*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13270*cda5da8dSAndroid Build Coastguard Worker ' ' 13271*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13272*cda5da8dSAndroid Build Coastguard Worker ' | "__defaults__" | A tuple containing default ' 13273*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13274*cda5da8dSAndroid Build Coastguard Worker ' | | argument values for those ' 13275*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13276*cda5da8dSAndroid Build Coastguard Worker ' | | arguments that have defaults, ' 13277*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13278*cda5da8dSAndroid Build Coastguard Worker ' | | or "None" if no arguments have ' 13279*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13280*cda5da8dSAndroid Build Coastguard Worker ' | | a default value. ' 13281*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13282*cda5da8dSAndroid Build Coastguard Worker ' ' 13283*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13284*cda5da8dSAndroid Build Coastguard Worker ' | "__code__" | The code object representing ' 13285*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13286*cda5da8dSAndroid Build Coastguard Worker ' | | the compiled function body. ' 13287*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13288*cda5da8dSAndroid Build Coastguard Worker ' ' 13289*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13290*cda5da8dSAndroid Build Coastguard Worker ' | "__globals__" | A reference to the dictionary ' 13291*cda5da8dSAndroid Build Coastguard Worker '| Read-only |\n' 13292*cda5da8dSAndroid Build Coastguard Worker ' | | that holds the function’s ' 13293*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13294*cda5da8dSAndroid Build Coastguard Worker ' | | global variables — the global ' 13295*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13296*cda5da8dSAndroid Build Coastguard Worker ' | | namespace of the module in ' 13297*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13298*cda5da8dSAndroid Build Coastguard Worker ' | | which the function was defined. ' 13299*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13300*cda5da8dSAndroid Build Coastguard Worker ' ' 13301*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13302*cda5da8dSAndroid Build Coastguard Worker ' | "__dict__" | The namespace supporting ' 13303*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13304*cda5da8dSAndroid Build Coastguard Worker ' | | arbitrary function attributes. ' 13305*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13306*cda5da8dSAndroid Build Coastguard Worker ' ' 13307*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13308*cda5da8dSAndroid Build Coastguard Worker ' | "__closure__" | "None" or a tuple of cells that ' 13309*cda5da8dSAndroid Build Coastguard Worker '| Read-only |\n' 13310*cda5da8dSAndroid Build Coastguard Worker ' | | contain bindings for the ' 13311*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13312*cda5da8dSAndroid Build Coastguard Worker ' | | function’s free variables. See ' 13313*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13314*cda5da8dSAndroid Build Coastguard Worker ' | | below for information on the ' 13315*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13316*cda5da8dSAndroid Build Coastguard Worker ' | | "cell_contents" attribute. ' 13317*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13318*cda5da8dSAndroid Build Coastguard Worker ' ' 13319*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13320*cda5da8dSAndroid Build Coastguard Worker ' | "__annotations__" | A dict containing annotations ' 13321*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13322*cda5da8dSAndroid Build Coastguard Worker ' | | of parameters. The keys of the ' 13323*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13324*cda5da8dSAndroid Build Coastguard Worker ' | | dict are the parameter names, ' 13325*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13326*cda5da8dSAndroid Build Coastguard Worker ' | | and "\'return\'" for the ' 13327*cda5da8dSAndroid Build Coastguard Worker 'return | |\n' 13328*cda5da8dSAndroid Build Coastguard Worker ' | | annotation, if provided. For ' 13329*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13330*cda5da8dSAndroid Build Coastguard Worker ' | | more information on working ' 13331*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13332*cda5da8dSAndroid Build Coastguard Worker ' | | with this attribute, see ' 13333*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13334*cda5da8dSAndroid Build Coastguard Worker ' | | Annotations Best Practices. ' 13335*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13336*cda5da8dSAndroid Build Coastguard Worker ' ' 13337*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13338*cda5da8dSAndroid Build Coastguard Worker ' | "__kwdefaults__" | A dict containing defaults for ' 13339*cda5da8dSAndroid Build Coastguard Worker '| Writable |\n' 13340*cda5da8dSAndroid Build Coastguard Worker ' | | keyword-only parameters. ' 13341*cda5da8dSAndroid Build Coastguard Worker '| |\n' 13342*cda5da8dSAndroid Build Coastguard Worker ' ' 13343*cda5da8dSAndroid Build Coastguard Worker '+---------------------------+---------------------------------+-------------+\n' 13344*cda5da8dSAndroid Build Coastguard Worker '\n' 13345*cda5da8dSAndroid Build Coastguard Worker ' Most of the attributes labelled “Writable” check the type of ' 13346*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13347*cda5da8dSAndroid Build Coastguard Worker ' assigned value.\n' 13348*cda5da8dSAndroid Build Coastguard Worker '\n' 13349*cda5da8dSAndroid Build Coastguard Worker ' Function objects also support getting and setting arbitrary\n' 13350*cda5da8dSAndroid Build Coastguard Worker ' attributes, which can be used, for example, to attach ' 13351*cda5da8dSAndroid Build Coastguard Worker 'metadata\n' 13352*cda5da8dSAndroid Build Coastguard Worker ' to functions. Regular attribute dot-notation is used to get ' 13353*cda5da8dSAndroid Build Coastguard Worker 'and\n' 13354*cda5da8dSAndroid Build Coastguard Worker ' set such attributes. *Note that the current implementation ' 13355*cda5da8dSAndroid Build Coastguard Worker 'only\n' 13356*cda5da8dSAndroid Build Coastguard Worker ' supports function attributes on user-defined functions. ' 13357*cda5da8dSAndroid Build Coastguard Worker 'Function\n' 13358*cda5da8dSAndroid Build Coastguard Worker ' attributes on built-in functions may be supported in the\n' 13359*cda5da8dSAndroid Build Coastguard Worker ' future.*\n' 13360*cda5da8dSAndroid Build Coastguard Worker '\n' 13361*cda5da8dSAndroid Build Coastguard Worker ' A cell object has the attribute "cell_contents". This can be\n' 13362*cda5da8dSAndroid Build Coastguard Worker ' used to get the value of the cell, as well as set the value.\n' 13363*cda5da8dSAndroid Build Coastguard Worker '\n' 13364*cda5da8dSAndroid Build Coastguard Worker ' Additional information about a function’s definition can be\n' 13365*cda5da8dSAndroid Build Coastguard Worker ' retrieved from its code object; see the description of ' 13366*cda5da8dSAndroid Build Coastguard Worker 'internal\n' 13367*cda5da8dSAndroid Build Coastguard Worker ' types below. The "cell" type can be accessed in the "types"\n' 13368*cda5da8dSAndroid Build Coastguard Worker ' module.\n' 13369*cda5da8dSAndroid Build Coastguard Worker '\n' 13370*cda5da8dSAndroid Build Coastguard Worker ' Instance methods\n' 13371*cda5da8dSAndroid Build Coastguard Worker ' An instance method object combines a class, a class instance ' 13372*cda5da8dSAndroid Build Coastguard Worker 'and\n' 13373*cda5da8dSAndroid Build Coastguard Worker ' any callable object (normally a user-defined function).\n' 13374*cda5da8dSAndroid Build Coastguard Worker '\n' 13375*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attributes: "__self__" is the class ' 13376*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 13377*cda5da8dSAndroid Build Coastguard Worker ' object, "__func__" is the function object; "__doc__" is the\n' 13378*cda5da8dSAndroid Build Coastguard Worker ' method’s documentation (same as "__func__.__doc__"); ' 13379*cda5da8dSAndroid Build Coastguard Worker '"__name__"\n' 13380*cda5da8dSAndroid Build Coastguard Worker ' is the method name (same as "__func__.__name__"); ' 13381*cda5da8dSAndroid Build Coastguard Worker '"__module__"\n' 13382*cda5da8dSAndroid Build Coastguard Worker ' is the name of the module the method was defined in, or ' 13383*cda5da8dSAndroid Build Coastguard Worker '"None"\n' 13384*cda5da8dSAndroid Build Coastguard Worker ' if unavailable.\n' 13385*cda5da8dSAndroid Build Coastguard Worker '\n' 13386*cda5da8dSAndroid Build Coastguard Worker ' Methods also support accessing (but not setting) the ' 13387*cda5da8dSAndroid Build Coastguard Worker 'arbitrary\n' 13388*cda5da8dSAndroid Build Coastguard Worker ' function attributes on the underlying function object.\n' 13389*cda5da8dSAndroid Build Coastguard Worker '\n' 13390*cda5da8dSAndroid Build Coastguard Worker ' User-defined method objects may be created when getting an\n' 13391*cda5da8dSAndroid Build Coastguard Worker ' attribute of a class (perhaps via an instance of that class), ' 13392*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13393*cda5da8dSAndroid Build Coastguard Worker ' that attribute is a user-defined function object or a class\n' 13394*cda5da8dSAndroid Build Coastguard Worker ' method object.\n' 13395*cda5da8dSAndroid Build Coastguard Worker '\n' 13396*cda5da8dSAndroid Build Coastguard Worker ' When an instance method object is created by retrieving a ' 13397*cda5da8dSAndroid Build Coastguard Worker 'user-\n' 13398*cda5da8dSAndroid Build Coastguard Worker ' defined function object from a class via one of its ' 13399*cda5da8dSAndroid Build Coastguard Worker 'instances,\n' 13400*cda5da8dSAndroid Build Coastguard Worker ' its "__self__" attribute is the instance, and the method ' 13401*cda5da8dSAndroid Build Coastguard Worker 'object\n' 13402*cda5da8dSAndroid Build Coastguard Worker ' is said to be bound. The new method’s "__func__" attribute ' 13403*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13404*cda5da8dSAndroid Build Coastguard Worker ' the original function object.\n' 13405*cda5da8dSAndroid Build Coastguard Worker '\n' 13406*cda5da8dSAndroid Build Coastguard Worker ' When an instance method object is created by retrieving a ' 13407*cda5da8dSAndroid Build Coastguard Worker 'class\n' 13408*cda5da8dSAndroid Build Coastguard Worker ' method object from a class or instance, its "__self__" ' 13409*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 13410*cda5da8dSAndroid Build Coastguard Worker ' is the class itself, and its "__func__" attribute is the\n' 13411*cda5da8dSAndroid Build Coastguard Worker ' function object underlying the class method.\n' 13412*cda5da8dSAndroid Build Coastguard Worker '\n' 13413*cda5da8dSAndroid Build Coastguard Worker ' When an instance method object is called, the underlying\n' 13414*cda5da8dSAndroid Build Coastguard Worker ' function ("__func__") is called, inserting the class ' 13415*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 13416*cda5da8dSAndroid Build Coastguard Worker ' ("__self__") in front of the argument list. For instance, ' 13417*cda5da8dSAndroid Build Coastguard Worker 'when\n' 13418*cda5da8dSAndroid Build Coastguard Worker ' "C" is a class which contains a definition for a function ' 13419*cda5da8dSAndroid Build Coastguard Worker '"f()",\n' 13420*cda5da8dSAndroid Build Coastguard Worker ' and "x" is an instance of "C", calling "x.f(1)" is equivalent ' 13421*cda5da8dSAndroid Build Coastguard Worker 'to\n' 13422*cda5da8dSAndroid Build Coastguard Worker ' calling "C.f(x, 1)".\n' 13423*cda5da8dSAndroid Build Coastguard Worker '\n' 13424*cda5da8dSAndroid Build Coastguard Worker ' When an instance method object is derived from a class ' 13425*cda5da8dSAndroid Build Coastguard Worker 'method\n' 13426*cda5da8dSAndroid Build Coastguard Worker ' object, the “class instance” stored in "__self__" will ' 13427*cda5da8dSAndroid Build Coastguard Worker 'actually\n' 13428*cda5da8dSAndroid Build Coastguard Worker ' be the class itself, so that calling either "x.f(1)" or ' 13429*cda5da8dSAndroid Build Coastguard Worker '"C.f(1)"\n' 13430*cda5da8dSAndroid Build Coastguard Worker ' is equivalent to calling "f(C,1)" where "f" is the ' 13431*cda5da8dSAndroid Build Coastguard Worker 'underlying\n' 13432*cda5da8dSAndroid Build Coastguard Worker ' function.\n' 13433*cda5da8dSAndroid Build Coastguard Worker '\n' 13434*cda5da8dSAndroid Build Coastguard Worker ' Note that the transformation from function object to ' 13435*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 13436*cda5da8dSAndroid Build Coastguard Worker ' method object happens each time the attribute is retrieved ' 13437*cda5da8dSAndroid Build Coastguard Worker 'from\n' 13438*cda5da8dSAndroid Build Coastguard Worker ' the instance. In some cases, a fruitful optimization is to\n' 13439*cda5da8dSAndroid Build Coastguard Worker ' assign the attribute to a local variable and call that local\n' 13440*cda5da8dSAndroid Build Coastguard Worker ' variable. Also notice that this transformation only happens ' 13441*cda5da8dSAndroid Build Coastguard Worker 'for\n' 13442*cda5da8dSAndroid Build Coastguard Worker ' user-defined functions; other callable objects (and all non-\n' 13443*cda5da8dSAndroid Build Coastguard Worker ' callable objects) are retrieved without transformation. It ' 13444*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13445*cda5da8dSAndroid Build Coastguard Worker ' also important to note that user-defined functions which are\n' 13446*cda5da8dSAndroid Build Coastguard Worker ' attributes of a class instance are not converted to bound\n' 13447*cda5da8dSAndroid Build Coastguard Worker ' methods; this *only* happens when the function is an ' 13448*cda5da8dSAndroid Build Coastguard Worker 'attribute\n' 13449*cda5da8dSAndroid Build Coastguard Worker ' of the class.\n' 13450*cda5da8dSAndroid Build Coastguard Worker '\n' 13451*cda5da8dSAndroid Build Coastguard Worker ' Generator functions\n' 13452*cda5da8dSAndroid Build Coastguard Worker ' A function or method which uses the "yield" statement (see\n' 13453*cda5da8dSAndroid Build Coastguard Worker ' section The yield statement) is called a *generator ' 13454*cda5da8dSAndroid Build Coastguard Worker 'function*.\n' 13455*cda5da8dSAndroid Build Coastguard Worker ' Such a function, when called, always returns an *iterator*\n' 13456*cda5da8dSAndroid Build Coastguard Worker ' object which can be used to execute the body of the ' 13457*cda5da8dSAndroid Build Coastguard Worker 'function:\n' 13458*cda5da8dSAndroid Build Coastguard Worker ' calling the iterator’s "iterator.__next__()" method will ' 13459*cda5da8dSAndroid Build Coastguard Worker 'cause\n' 13460*cda5da8dSAndroid Build Coastguard Worker ' the function to execute until it provides a value using the\n' 13461*cda5da8dSAndroid Build Coastguard Worker ' "yield" statement. When the function executes a "return"\n' 13462*cda5da8dSAndroid Build Coastguard Worker ' statement or falls off the end, a "StopIteration" exception ' 13463*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13464*cda5da8dSAndroid Build Coastguard Worker ' raised and the iterator will have reached the end of the set ' 13465*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13466*cda5da8dSAndroid Build Coastguard Worker ' values to be returned.\n' 13467*cda5da8dSAndroid Build Coastguard Worker '\n' 13468*cda5da8dSAndroid Build Coastguard Worker ' Coroutine functions\n' 13469*cda5da8dSAndroid Build Coastguard Worker ' A function or method which is defined using "async def" is\n' 13470*cda5da8dSAndroid Build Coastguard Worker ' called a *coroutine function*. Such a function, when ' 13471*cda5da8dSAndroid Build Coastguard Worker 'called,\n' 13472*cda5da8dSAndroid Build Coastguard Worker ' returns a *coroutine* object. It may contain "await"\n' 13473*cda5da8dSAndroid Build Coastguard Worker ' expressions, as well as "async with" and "async for" ' 13474*cda5da8dSAndroid Build Coastguard Worker 'statements.\n' 13475*cda5da8dSAndroid Build Coastguard Worker ' See also the Coroutine Objects section.\n' 13476*cda5da8dSAndroid Build Coastguard Worker '\n' 13477*cda5da8dSAndroid Build Coastguard Worker ' Asynchronous generator functions\n' 13478*cda5da8dSAndroid Build Coastguard Worker ' A function or method which is defined using "async def" and\n' 13479*cda5da8dSAndroid Build Coastguard Worker ' which uses the "yield" statement is called a *asynchronous\n' 13480*cda5da8dSAndroid Build Coastguard Worker ' generator function*. Such a function, when called, returns ' 13481*cda5da8dSAndroid Build Coastguard Worker 'an\n' 13482*cda5da8dSAndroid Build Coastguard Worker ' *asynchronous iterator* object which can be used in an ' 13483*cda5da8dSAndroid Build Coastguard Worker '"async\n' 13484*cda5da8dSAndroid Build Coastguard Worker ' for" statement to execute the body of the function.\n' 13485*cda5da8dSAndroid Build Coastguard Worker '\n' 13486*cda5da8dSAndroid Build Coastguard Worker ' Calling the asynchronous iterator’s "aiterator.__anext__" ' 13487*cda5da8dSAndroid Build Coastguard Worker 'method\n' 13488*cda5da8dSAndroid Build Coastguard Worker ' will return an *awaitable* which when awaited will execute ' 13489*cda5da8dSAndroid Build Coastguard Worker 'until\n' 13490*cda5da8dSAndroid Build Coastguard Worker ' it provides a value using the "yield" expression. When the\n' 13491*cda5da8dSAndroid Build Coastguard Worker ' function executes an empty "return" statement or falls off ' 13492*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13493*cda5da8dSAndroid Build Coastguard Worker ' end, a "StopAsyncIteration" exception is raised and the\n' 13494*cda5da8dSAndroid Build Coastguard Worker ' asynchronous iterator will have reached the end of the set ' 13495*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13496*cda5da8dSAndroid Build Coastguard Worker ' values to be yielded.\n' 13497*cda5da8dSAndroid Build Coastguard Worker '\n' 13498*cda5da8dSAndroid Build Coastguard Worker ' Built-in functions\n' 13499*cda5da8dSAndroid Build Coastguard Worker ' A built-in function object is a wrapper around a C function.\n' 13500*cda5da8dSAndroid Build Coastguard Worker ' Examples of built-in functions are "len()" and "math.sin()"\n' 13501*cda5da8dSAndroid Build Coastguard Worker ' ("math" is a standard built-in module). The number and type ' 13502*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13503*cda5da8dSAndroid Build Coastguard Worker ' the arguments are determined by the C function. Special ' 13504*cda5da8dSAndroid Build Coastguard Worker 'read-\n' 13505*cda5da8dSAndroid Build Coastguard Worker ' only attributes: "__doc__" is the function’s documentation\n' 13506*cda5da8dSAndroid Build Coastguard Worker ' string, or "None" if unavailable; "__name__" is the ' 13507*cda5da8dSAndroid Build Coastguard Worker 'function’s\n' 13508*cda5da8dSAndroid Build Coastguard Worker ' name; "__self__" is set to "None" (but see the next item);\n' 13509*cda5da8dSAndroid Build Coastguard Worker ' "__module__" is the name of the module the function was ' 13510*cda5da8dSAndroid Build Coastguard Worker 'defined\n' 13511*cda5da8dSAndroid Build Coastguard Worker ' in or "None" if unavailable.\n' 13512*cda5da8dSAndroid Build Coastguard Worker '\n' 13513*cda5da8dSAndroid Build Coastguard Worker ' Built-in methods\n' 13514*cda5da8dSAndroid Build Coastguard Worker ' This is really a different disguise of a built-in function, ' 13515*cda5da8dSAndroid Build Coastguard Worker 'this\n' 13516*cda5da8dSAndroid Build Coastguard Worker ' time containing an object passed to the C function as an\n' 13517*cda5da8dSAndroid Build Coastguard Worker ' implicit extra argument. An example of a built-in method is\n' 13518*cda5da8dSAndroid Build Coastguard Worker ' "alist.append()", assuming *alist* is a list object. In this\n' 13519*cda5da8dSAndroid Build Coastguard Worker ' case, the special read-only attribute "__self__" is set to ' 13520*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13521*cda5da8dSAndroid Build Coastguard Worker ' object denoted by *alist*.\n' 13522*cda5da8dSAndroid Build Coastguard Worker '\n' 13523*cda5da8dSAndroid Build Coastguard Worker ' Classes\n' 13524*cda5da8dSAndroid Build Coastguard Worker ' Classes are callable. These objects normally act as ' 13525*cda5da8dSAndroid Build Coastguard Worker 'factories\n' 13526*cda5da8dSAndroid Build Coastguard Worker ' for new instances of themselves, but variations are possible ' 13527*cda5da8dSAndroid Build Coastguard Worker 'for\n' 13528*cda5da8dSAndroid Build Coastguard Worker ' class types that override "__new__()". The arguments of the\n' 13529*cda5da8dSAndroid Build Coastguard Worker ' call are passed to "__new__()" and, in the typical case, to\n' 13530*cda5da8dSAndroid Build Coastguard Worker ' "__init__()" to initialize the new instance.\n' 13531*cda5da8dSAndroid Build Coastguard Worker '\n' 13532*cda5da8dSAndroid Build Coastguard Worker ' Class Instances\n' 13533*cda5da8dSAndroid Build Coastguard Worker ' Instances of arbitrary classes can be made callable by ' 13534*cda5da8dSAndroid Build Coastguard Worker 'defining\n' 13535*cda5da8dSAndroid Build Coastguard Worker ' a "__call__()" method in their class.\n' 13536*cda5da8dSAndroid Build Coastguard Worker '\n' 13537*cda5da8dSAndroid Build Coastguard Worker 'Modules\n' 13538*cda5da8dSAndroid Build Coastguard Worker ' Modules are a basic organizational unit of Python code, and are\n' 13539*cda5da8dSAndroid Build Coastguard Worker ' created by the import system as invoked either by the "import"\n' 13540*cda5da8dSAndroid Build Coastguard Worker ' statement, or by calling functions such as\n' 13541*cda5da8dSAndroid Build Coastguard Worker ' "importlib.import_module()" and built-in "__import__()". A ' 13542*cda5da8dSAndroid Build Coastguard Worker 'module\n' 13543*cda5da8dSAndroid Build Coastguard Worker ' object has a namespace implemented by a dictionary object (this ' 13544*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13545*cda5da8dSAndroid Build Coastguard Worker ' the dictionary referenced by the "__globals__" attribute of\n' 13546*cda5da8dSAndroid Build Coastguard Worker ' functions defined in the module). Attribute references are\n' 13547*cda5da8dSAndroid Build Coastguard Worker ' translated to lookups in this dictionary, e.g., "m.x" is ' 13548*cda5da8dSAndroid Build Coastguard Worker 'equivalent\n' 13549*cda5da8dSAndroid Build Coastguard Worker ' to "m.__dict__["x"]". A module object does not contain the code\n' 13550*cda5da8dSAndroid Build Coastguard Worker ' object used to initialize the module (since it isn’t needed ' 13551*cda5da8dSAndroid Build Coastguard Worker 'once\n' 13552*cda5da8dSAndroid Build Coastguard Worker ' the initialization is done).\n' 13553*cda5da8dSAndroid Build Coastguard Worker '\n' 13554*cda5da8dSAndroid Build Coastguard Worker ' Attribute assignment updates the module’s namespace dictionary,\n' 13555*cda5da8dSAndroid Build Coastguard Worker ' e.g., "m.x = 1" is equivalent to "m.__dict__["x"] = 1".\n' 13556*cda5da8dSAndroid Build Coastguard Worker '\n' 13557*cda5da8dSAndroid Build Coastguard Worker ' Predefined (writable) attributes:\n' 13558*cda5da8dSAndroid Build Coastguard Worker '\n' 13559*cda5da8dSAndroid Build Coastguard Worker ' "__name__"\n' 13560*cda5da8dSAndroid Build Coastguard Worker ' The module’s name.\n' 13561*cda5da8dSAndroid Build Coastguard Worker '\n' 13562*cda5da8dSAndroid Build Coastguard Worker ' "__doc__"\n' 13563*cda5da8dSAndroid Build Coastguard Worker ' The module’s documentation string, or "None" if ' 13564*cda5da8dSAndroid Build Coastguard Worker 'unavailable.\n' 13565*cda5da8dSAndroid Build Coastguard Worker '\n' 13566*cda5da8dSAndroid Build Coastguard Worker ' "__file__"\n' 13567*cda5da8dSAndroid Build Coastguard Worker ' The pathname of the file from which the module was loaded, ' 13568*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13569*cda5da8dSAndroid Build Coastguard Worker ' it was loaded from a file. The "__file__" attribute may ' 13570*cda5da8dSAndroid Build Coastguard Worker 'be\n' 13571*cda5da8dSAndroid Build Coastguard Worker ' missing for certain types of modules, such as C modules ' 13572*cda5da8dSAndroid Build Coastguard Worker 'that\n' 13573*cda5da8dSAndroid Build Coastguard Worker ' are statically linked into the interpreter. For ' 13574*cda5da8dSAndroid Build Coastguard Worker 'extension\n' 13575*cda5da8dSAndroid Build Coastguard Worker ' modules loaded dynamically from a shared library, it’s ' 13576*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13577*cda5da8dSAndroid Build Coastguard Worker ' pathname of the shared library file.\n' 13578*cda5da8dSAndroid Build Coastguard Worker '\n' 13579*cda5da8dSAndroid Build Coastguard Worker ' "__annotations__"\n' 13580*cda5da8dSAndroid Build Coastguard Worker ' A dictionary containing *variable annotations* collected\n' 13581*cda5da8dSAndroid Build Coastguard Worker ' during module body execution. For best practices on ' 13582*cda5da8dSAndroid Build Coastguard Worker 'working\n' 13583*cda5da8dSAndroid Build Coastguard Worker ' with "__annotations__", please see Annotations Best\n' 13584*cda5da8dSAndroid Build Coastguard Worker ' Practices.\n' 13585*cda5da8dSAndroid Build Coastguard Worker '\n' 13586*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attribute: "__dict__" is the module’s ' 13587*cda5da8dSAndroid Build Coastguard Worker 'namespace\n' 13588*cda5da8dSAndroid Build Coastguard Worker ' as a dictionary object.\n' 13589*cda5da8dSAndroid Build Coastguard Worker '\n' 13590*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** Because of the way CPython\n' 13591*cda5da8dSAndroid Build Coastguard Worker ' clears module dictionaries, the module dictionary will be ' 13592*cda5da8dSAndroid Build Coastguard Worker 'cleared\n' 13593*cda5da8dSAndroid Build Coastguard Worker ' when the module falls out of scope even if the dictionary still ' 13594*cda5da8dSAndroid Build Coastguard Worker 'has\n' 13595*cda5da8dSAndroid Build Coastguard Worker ' live references. To avoid this, copy the dictionary or keep ' 13596*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13597*cda5da8dSAndroid Build Coastguard Worker ' module around while using its dictionary directly.\n' 13598*cda5da8dSAndroid Build Coastguard Worker '\n' 13599*cda5da8dSAndroid Build Coastguard Worker 'Custom classes\n' 13600*cda5da8dSAndroid Build Coastguard Worker ' Custom class types are typically created by class definitions ' 13601*cda5da8dSAndroid Build Coastguard Worker '(see\n' 13602*cda5da8dSAndroid Build Coastguard Worker ' section Class definitions). A class has a namespace implemented ' 13603*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13604*cda5da8dSAndroid Build Coastguard Worker ' a dictionary object. Class attribute references are translated ' 13605*cda5da8dSAndroid Build Coastguard Worker 'to\n' 13606*cda5da8dSAndroid Build Coastguard Worker ' lookups in this dictionary, e.g., "C.x" is translated to\n' 13607*cda5da8dSAndroid Build Coastguard Worker ' "C.__dict__["x"]" (although there are a number of hooks which ' 13608*cda5da8dSAndroid Build Coastguard Worker 'allow\n' 13609*cda5da8dSAndroid Build Coastguard Worker ' for other means of locating attributes). When the attribute name ' 13610*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13611*cda5da8dSAndroid Build Coastguard Worker ' not found there, the attribute search continues in the base\n' 13612*cda5da8dSAndroid Build Coastguard Worker ' classes. This search of the base classes uses the C3 method\n' 13613*cda5da8dSAndroid Build Coastguard Worker ' resolution order which behaves correctly even in the presence ' 13614*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13615*cda5da8dSAndroid Build Coastguard Worker ' ‘diamond’ inheritance structures where there are multiple\n' 13616*cda5da8dSAndroid Build Coastguard Worker ' inheritance paths leading back to a common ancestor. Additional\n' 13617*cda5da8dSAndroid Build Coastguard Worker ' details on the C3 MRO used by Python can be found in the\n' 13618*cda5da8dSAndroid Build Coastguard Worker ' documentation accompanying the 2.3 release at\n' 13619*cda5da8dSAndroid Build Coastguard Worker ' https://www.python.org/download/releases/2.3/mro/.\n' 13620*cda5da8dSAndroid Build Coastguard Worker '\n' 13621*cda5da8dSAndroid Build Coastguard Worker ' When a class attribute reference (for class "C", say) would ' 13622*cda5da8dSAndroid Build Coastguard Worker 'yield a\n' 13623*cda5da8dSAndroid Build Coastguard Worker ' class method object, it is transformed into an instance method\n' 13624*cda5da8dSAndroid Build Coastguard Worker ' object whose "__self__" attribute is "C". When it would yield ' 13625*cda5da8dSAndroid Build Coastguard Worker 'a\n' 13626*cda5da8dSAndroid Build Coastguard Worker ' static method object, it is transformed into the object wrapped ' 13627*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13628*cda5da8dSAndroid Build Coastguard Worker ' the static method object. See section Implementing Descriptors ' 13629*cda5da8dSAndroid Build Coastguard Worker 'for\n' 13630*cda5da8dSAndroid Build Coastguard Worker ' another way in which attributes retrieved from a class may ' 13631*cda5da8dSAndroid Build Coastguard Worker 'differ\n' 13632*cda5da8dSAndroid Build Coastguard Worker ' from those actually contained in its "__dict__".\n' 13633*cda5da8dSAndroid Build Coastguard Worker '\n' 13634*cda5da8dSAndroid Build Coastguard Worker ' Class attribute assignments update the class’s dictionary, ' 13635*cda5da8dSAndroid Build Coastguard Worker 'never\n' 13636*cda5da8dSAndroid Build Coastguard Worker ' the dictionary of a base class.\n' 13637*cda5da8dSAndroid Build Coastguard Worker '\n' 13638*cda5da8dSAndroid Build Coastguard Worker ' A class object can be called (see above) to yield a class ' 13639*cda5da8dSAndroid Build Coastguard Worker 'instance\n' 13640*cda5da8dSAndroid Build Coastguard Worker ' (see below).\n' 13641*cda5da8dSAndroid Build Coastguard Worker '\n' 13642*cda5da8dSAndroid Build Coastguard Worker ' Special attributes:\n' 13643*cda5da8dSAndroid Build Coastguard Worker '\n' 13644*cda5da8dSAndroid Build Coastguard Worker ' "__name__"\n' 13645*cda5da8dSAndroid Build Coastguard Worker ' The class name.\n' 13646*cda5da8dSAndroid Build Coastguard Worker '\n' 13647*cda5da8dSAndroid Build Coastguard Worker ' "__module__"\n' 13648*cda5da8dSAndroid Build Coastguard Worker ' The name of the module in which the class was defined.\n' 13649*cda5da8dSAndroid Build Coastguard Worker '\n' 13650*cda5da8dSAndroid Build Coastguard Worker ' "__dict__"\n' 13651*cda5da8dSAndroid Build Coastguard Worker ' The dictionary containing the class’s namespace.\n' 13652*cda5da8dSAndroid Build Coastguard Worker '\n' 13653*cda5da8dSAndroid Build Coastguard Worker ' "__bases__"\n' 13654*cda5da8dSAndroid Build Coastguard Worker ' A tuple containing the base classes, in the order of ' 13655*cda5da8dSAndroid Build Coastguard Worker 'their\n' 13656*cda5da8dSAndroid Build Coastguard Worker ' occurrence in the base class list.\n' 13657*cda5da8dSAndroid Build Coastguard Worker '\n' 13658*cda5da8dSAndroid Build Coastguard Worker ' "__doc__"\n' 13659*cda5da8dSAndroid Build Coastguard Worker ' The class’s documentation string, or "None" if undefined.\n' 13660*cda5da8dSAndroid Build Coastguard Worker '\n' 13661*cda5da8dSAndroid Build Coastguard Worker ' "__annotations__"\n' 13662*cda5da8dSAndroid Build Coastguard Worker ' A dictionary containing *variable annotations* collected\n' 13663*cda5da8dSAndroid Build Coastguard Worker ' during class body execution. For best practices on ' 13664*cda5da8dSAndroid Build Coastguard Worker 'working\n' 13665*cda5da8dSAndroid Build Coastguard Worker ' with "__annotations__", please see Annotations Best\n' 13666*cda5da8dSAndroid Build Coastguard Worker ' Practices.\n' 13667*cda5da8dSAndroid Build Coastguard Worker '\n' 13668*cda5da8dSAndroid Build Coastguard Worker 'Class instances\n' 13669*cda5da8dSAndroid Build Coastguard Worker ' A class instance is created by calling a class object (see ' 13670*cda5da8dSAndroid Build Coastguard Worker 'above).\n' 13671*cda5da8dSAndroid Build Coastguard Worker ' A class instance has a namespace implemented as a dictionary ' 13672*cda5da8dSAndroid Build Coastguard Worker 'which\n' 13673*cda5da8dSAndroid Build Coastguard Worker ' is the first place in which attribute references are searched.\n' 13674*cda5da8dSAndroid Build Coastguard Worker ' When an attribute is not found there, and the instance’s class ' 13675*cda5da8dSAndroid Build Coastguard Worker 'has\n' 13676*cda5da8dSAndroid Build Coastguard Worker ' an attribute by that name, the search continues with the class\n' 13677*cda5da8dSAndroid Build Coastguard Worker ' attributes. If a class attribute is found that is a ' 13678*cda5da8dSAndroid Build Coastguard Worker 'user-defined\n' 13679*cda5da8dSAndroid Build Coastguard Worker ' function object, it is transformed into an instance method ' 13680*cda5da8dSAndroid Build Coastguard Worker 'object\n' 13681*cda5da8dSAndroid Build Coastguard Worker ' whose "__self__" attribute is the instance. Static method and\n' 13682*cda5da8dSAndroid Build Coastguard Worker ' class method objects are also transformed; see above under\n' 13683*cda5da8dSAndroid Build Coastguard Worker ' “Classes”. See section Implementing Descriptors for another way ' 13684*cda5da8dSAndroid Build Coastguard Worker 'in\n' 13685*cda5da8dSAndroid Build Coastguard Worker ' which attributes of a class retrieved via its instances may ' 13686*cda5da8dSAndroid Build Coastguard Worker 'differ\n' 13687*cda5da8dSAndroid Build Coastguard Worker ' from the objects actually stored in the class’s "__dict__". If ' 13688*cda5da8dSAndroid Build Coastguard Worker 'no\n' 13689*cda5da8dSAndroid Build Coastguard Worker ' class attribute is found, and the object’s class has a\n' 13690*cda5da8dSAndroid Build Coastguard Worker ' "__getattr__()" method, that is called to satisfy the lookup.\n' 13691*cda5da8dSAndroid Build Coastguard Worker '\n' 13692*cda5da8dSAndroid Build Coastguard Worker ' Attribute assignments and deletions update the instance’s\n' 13693*cda5da8dSAndroid Build Coastguard Worker ' dictionary, never a class’s dictionary. If the class has a\n' 13694*cda5da8dSAndroid Build Coastguard Worker ' "__setattr__()" or "__delattr__()" method, this is called ' 13695*cda5da8dSAndroid Build Coastguard Worker 'instead\n' 13696*cda5da8dSAndroid Build Coastguard Worker ' of updating the instance dictionary directly.\n' 13697*cda5da8dSAndroid Build Coastguard Worker '\n' 13698*cda5da8dSAndroid Build Coastguard Worker ' Class instances can pretend to be numbers, sequences, or ' 13699*cda5da8dSAndroid Build Coastguard Worker 'mappings\n' 13700*cda5da8dSAndroid Build Coastguard Worker ' if they have methods with certain special names. See section\n' 13701*cda5da8dSAndroid Build Coastguard Worker ' Special method names.\n' 13702*cda5da8dSAndroid Build Coastguard Worker '\n' 13703*cda5da8dSAndroid Build Coastguard Worker ' Special attributes: "__dict__" is the attribute dictionary;\n' 13704*cda5da8dSAndroid Build Coastguard Worker ' "__class__" is the instance’s class.\n' 13705*cda5da8dSAndroid Build Coastguard Worker '\n' 13706*cda5da8dSAndroid Build Coastguard Worker 'I/O objects (also known as file objects)\n' 13707*cda5da8dSAndroid Build Coastguard Worker ' A *file object* represents an open file. Various shortcuts are\n' 13708*cda5da8dSAndroid Build Coastguard Worker ' available to create file objects: the "open()" built-in ' 13709*cda5da8dSAndroid Build Coastguard Worker 'function,\n' 13710*cda5da8dSAndroid Build Coastguard Worker ' and also "os.popen()", "os.fdopen()", and the "makefile()" ' 13711*cda5da8dSAndroid Build Coastguard Worker 'method\n' 13712*cda5da8dSAndroid Build Coastguard Worker ' of socket objects (and perhaps by other functions or methods\n' 13713*cda5da8dSAndroid Build Coastguard Worker ' provided by extension modules).\n' 13714*cda5da8dSAndroid Build Coastguard Worker '\n' 13715*cda5da8dSAndroid Build Coastguard Worker ' The objects "sys.stdin", "sys.stdout" and "sys.stderr" are\n' 13716*cda5da8dSAndroid Build Coastguard Worker ' initialized to file objects corresponding to the interpreter’s\n' 13717*cda5da8dSAndroid Build Coastguard Worker ' standard input, output and error streams; they are all open in ' 13718*cda5da8dSAndroid Build Coastguard Worker 'text\n' 13719*cda5da8dSAndroid Build Coastguard Worker ' mode and therefore follow the interface defined by the\n' 13720*cda5da8dSAndroid Build Coastguard Worker ' "io.TextIOBase" abstract class.\n' 13721*cda5da8dSAndroid Build Coastguard Worker '\n' 13722*cda5da8dSAndroid Build Coastguard Worker 'Internal types\n' 13723*cda5da8dSAndroid Build Coastguard Worker ' A few types used internally by the interpreter are exposed to ' 13724*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13725*cda5da8dSAndroid Build Coastguard Worker ' user. Their definitions may change with future versions of the\n' 13726*cda5da8dSAndroid Build Coastguard Worker ' interpreter, but they are mentioned here for completeness.\n' 13727*cda5da8dSAndroid Build Coastguard Worker '\n' 13728*cda5da8dSAndroid Build Coastguard Worker ' Code objects\n' 13729*cda5da8dSAndroid Build Coastguard Worker ' Code objects represent *byte-compiled* executable Python ' 13730*cda5da8dSAndroid Build Coastguard Worker 'code,\n' 13731*cda5da8dSAndroid Build Coastguard Worker ' or *bytecode*. The difference between a code object and a\n' 13732*cda5da8dSAndroid Build Coastguard Worker ' function object is that the function object contains an ' 13733*cda5da8dSAndroid Build Coastguard Worker 'explicit\n' 13734*cda5da8dSAndroid Build Coastguard Worker ' reference to the function’s globals (the module in which it ' 13735*cda5da8dSAndroid Build Coastguard Worker 'was\n' 13736*cda5da8dSAndroid Build Coastguard Worker ' defined), while a code object contains no context; also the\n' 13737*cda5da8dSAndroid Build Coastguard Worker ' default argument values are stored in the function object, ' 13738*cda5da8dSAndroid Build Coastguard Worker 'not\n' 13739*cda5da8dSAndroid Build Coastguard Worker ' in the code object (because they represent values calculated ' 13740*cda5da8dSAndroid Build Coastguard Worker 'at\n' 13741*cda5da8dSAndroid Build Coastguard Worker ' run-time). Unlike function objects, code objects are ' 13742*cda5da8dSAndroid Build Coastguard Worker 'immutable\n' 13743*cda5da8dSAndroid Build Coastguard Worker ' and contain no references (directly or indirectly) to ' 13744*cda5da8dSAndroid Build Coastguard Worker 'mutable\n' 13745*cda5da8dSAndroid Build Coastguard Worker ' objects.\n' 13746*cda5da8dSAndroid Build Coastguard Worker '\n' 13747*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attributes: "co_name" gives the function ' 13748*cda5da8dSAndroid Build Coastguard Worker 'name;\n' 13749*cda5da8dSAndroid Build Coastguard Worker ' "co_qualname" gives the fully qualified function name;\n' 13750*cda5da8dSAndroid Build Coastguard Worker ' "co_argcount" is the total number of positional arguments\n' 13751*cda5da8dSAndroid Build Coastguard Worker ' (including positional-only arguments and arguments with ' 13752*cda5da8dSAndroid Build Coastguard Worker 'default\n' 13753*cda5da8dSAndroid Build Coastguard Worker ' values); "co_posonlyargcount" is the number of ' 13754*cda5da8dSAndroid Build Coastguard Worker 'positional-only\n' 13755*cda5da8dSAndroid Build Coastguard Worker ' arguments (including arguments with default values);\n' 13756*cda5da8dSAndroid Build Coastguard Worker ' "co_kwonlyargcount" is the number of keyword-only arguments\n' 13757*cda5da8dSAndroid Build Coastguard Worker ' (including arguments with default values); "co_nlocals" is ' 13758*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13759*cda5da8dSAndroid Build Coastguard Worker ' number of local variables used by the function (including\n' 13760*cda5da8dSAndroid Build Coastguard Worker ' arguments); "co_varnames" is a tuple containing the names of ' 13761*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13762*cda5da8dSAndroid Build Coastguard Worker ' local variables (starting with the argument names);\n' 13763*cda5da8dSAndroid Build Coastguard Worker ' "co_cellvars" is a tuple containing the names of local ' 13764*cda5da8dSAndroid Build Coastguard Worker 'variables\n' 13765*cda5da8dSAndroid Build Coastguard Worker ' that are referenced by nested functions; "co_freevars" is a\n' 13766*cda5da8dSAndroid Build Coastguard Worker ' tuple containing the names of free variables; "co_code" is a\n' 13767*cda5da8dSAndroid Build Coastguard Worker ' string representing the sequence of bytecode instructions;\n' 13768*cda5da8dSAndroid Build Coastguard Worker ' "co_consts" is a tuple containing the literals used by the\n' 13769*cda5da8dSAndroid Build Coastguard Worker ' bytecode; "co_names" is a tuple containing the names used by ' 13770*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13771*cda5da8dSAndroid Build Coastguard Worker ' bytecode; "co_filename" is the filename from which the code ' 13772*cda5da8dSAndroid Build Coastguard Worker 'was\n' 13773*cda5da8dSAndroid Build Coastguard Worker ' compiled; "co_firstlineno" is the first line number of the\n' 13774*cda5da8dSAndroid Build Coastguard Worker ' function; "co_lnotab" is a string encoding the mapping from\n' 13775*cda5da8dSAndroid Build Coastguard Worker ' bytecode offsets to line numbers (for details see the source\n' 13776*cda5da8dSAndroid Build Coastguard Worker ' code of the interpreter); "co_stacksize" is the required ' 13777*cda5da8dSAndroid Build Coastguard Worker 'stack\n' 13778*cda5da8dSAndroid Build Coastguard Worker ' size; "co_flags" is an integer encoding a number of flags ' 13779*cda5da8dSAndroid Build Coastguard Worker 'for\n' 13780*cda5da8dSAndroid Build Coastguard Worker ' the interpreter.\n' 13781*cda5da8dSAndroid Build Coastguard Worker '\n' 13782*cda5da8dSAndroid Build Coastguard Worker ' The following flag bits are defined for "co_flags": bit ' 13783*cda5da8dSAndroid Build Coastguard Worker '"0x04"\n' 13784*cda5da8dSAndroid Build Coastguard Worker ' is set if the function uses the "*arguments" syntax to accept ' 13785*cda5da8dSAndroid Build Coastguard Worker 'an\n' 13786*cda5da8dSAndroid Build Coastguard Worker ' arbitrary number of positional arguments; bit "0x08" is set ' 13787*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13788*cda5da8dSAndroid Build Coastguard Worker ' the function uses the "**keywords" syntax to accept ' 13789*cda5da8dSAndroid Build Coastguard Worker 'arbitrary\n' 13790*cda5da8dSAndroid Build Coastguard Worker ' keyword arguments; bit "0x20" is set if the function is a\n' 13791*cda5da8dSAndroid Build Coastguard Worker ' generator.\n' 13792*cda5da8dSAndroid Build Coastguard Worker '\n' 13793*cda5da8dSAndroid Build Coastguard Worker ' Future feature declarations ("from __future__ import ' 13794*cda5da8dSAndroid Build Coastguard Worker 'division")\n' 13795*cda5da8dSAndroid Build Coastguard Worker ' also use bits in "co_flags" to indicate whether a code ' 13796*cda5da8dSAndroid Build Coastguard Worker 'object\n' 13797*cda5da8dSAndroid Build Coastguard Worker ' was compiled with a particular feature enabled: bit "0x2000" ' 13798*cda5da8dSAndroid Build Coastguard Worker 'is\n' 13799*cda5da8dSAndroid Build Coastguard Worker ' set if the function was compiled with future division ' 13800*cda5da8dSAndroid Build Coastguard Worker 'enabled;\n' 13801*cda5da8dSAndroid Build Coastguard Worker ' bits "0x10" and "0x1000" were used in earlier versions of\n' 13802*cda5da8dSAndroid Build Coastguard Worker ' Python.\n' 13803*cda5da8dSAndroid Build Coastguard Worker '\n' 13804*cda5da8dSAndroid Build Coastguard Worker ' Other bits in "co_flags" are reserved for internal use.\n' 13805*cda5da8dSAndroid Build Coastguard Worker '\n' 13806*cda5da8dSAndroid Build Coastguard Worker ' If a code object represents a function, the first item in\n' 13807*cda5da8dSAndroid Build Coastguard Worker ' "co_consts" is the documentation string of the function, or\n' 13808*cda5da8dSAndroid Build Coastguard Worker ' "None" if undefined.\n' 13809*cda5da8dSAndroid Build Coastguard Worker '\n' 13810*cda5da8dSAndroid Build Coastguard Worker ' codeobject.co_positions()\n' 13811*cda5da8dSAndroid Build Coastguard Worker '\n' 13812*cda5da8dSAndroid Build Coastguard Worker ' Returns an iterable over the source code positions of ' 13813*cda5da8dSAndroid Build Coastguard Worker 'each\n' 13814*cda5da8dSAndroid Build Coastguard Worker ' bytecode instruction in the code object.\n' 13815*cda5da8dSAndroid Build Coastguard Worker '\n' 13816*cda5da8dSAndroid Build Coastguard Worker ' The iterator returns tuples containing the "(start_line,\n' 13817*cda5da8dSAndroid Build Coastguard Worker ' end_line, start_column, end_column)". The *i-th* tuple\n' 13818*cda5da8dSAndroid Build Coastguard Worker ' corresponds to the position of the source code that ' 13819*cda5da8dSAndroid Build Coastguard Worker 'compiled\n' 13820*cda5da8dSAndroid Build Coastguard Worker ' to the *i-th* instruction. Column information is ' 13821*cda5da8dSAndroid Build Coastguard Worker '0-indexed\n' 13822*cda5da8dSAndroid Build Coastguard Worker ' utf-8 byte offsets on the given source line.\n' 13823*cda5da8dSAndroid Build Coastguard Worker '\n' 13824*cda5da8dSAndroid Build Coastguard Worker ' This positional information can be missing. A ' 13825*cda5da8dSAndroid Build Coastguard Worker 'non-exhaustive\n' 13826*cda5da8dSAndroid Build Coastguard Worker ' lists of cases where this may happen:\n' 13827*cda5da8dSAndroid Build Coastguard Worker '\n' 13828*cda5da8dSAndroid Build Coastguard Worker ' * Running the interpreter with "-X" "no_debug_ranges".\n' 13829*cda5da8dSAndroid Build Coastguard Worker '\n' 13830*cda5da8dSAndroid Build Coastguard Worker ' * Loading a pyc file compiled while using "-X"\n' 13831*cda5da8dSAndroid Build Coastguard Worker ' "no_debug_ranges".\n' 13832*cda5da8dSAndroid Build Coastguard Worker '\n' 13833*cda5da8dSAndroid Build Coastguard Worker ' * Position tuples corresponding to artificial ' 13834*cda5da8dSAndroid Build Coastguard Worker 'instructions.\n' 13835*cda5da8dSAndroid Build Coastguard Worker '\n' 13836*cda5da8dSAndroid Build Coastguard Worker ' * Line and column numbers that can’t be represented due ' 13837*cda5da8dSAndroid Build Coastguard Worker 'to\n' 13838*cda5da8dSAndroid Build Coastguard Worker ' implementation specific limitations.\n' 13839*cda5da8dSAndroid Build Coastguard Worker '\n' 13840*cda5da8dSAndroid Build Coastguard Worker ' When this occurs, some or all of the tuple elements can ' 13841*cda5da8dSAndroid Build Coastguard Worker 'be\n' 13842*cda5da8dSAndroid Build Coastguard Worker ' "None".\n' 13843*cda5da8dSAndroid Build Coastguard Worker '\n' 13844*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.11.\n' 13845*cda5da8dSAndroid Build Coastguard Worker '\n' 13846*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 13847*cda5da8dSAndroid Build Coastguard Worker '\n' 13848*cda5da8dSAndroid Build Coastguard Worker ' This feature requires storing column positions in code\n' 13849*cda5da8dSAndroid Build Coastguard Worker ' objects which may result in a small increase of disk ' 13850*cda5da8dSAndroid Build Coastguard Worker 'usage\n' 13851*cda5da8dSAndroid Build Coastguard Worker ' of compiled Python files or interpreter memory usage. ' 13852*cda5da8dSAndroid Build Coastguard Worker 'To\n' 13853*cda5da8dSAndroid Build Coastguard Worker ' avoid storing the extra information and/or deactivate\n' 13854*cda5da8dSAndroid Build Coastguard Worker ' printing the extra traceback information, the "-X"\n' 13855*cda5da8dSAndroid Build Coastguard Worker ' "no_debug_ranges" command line flag or the\n' 13856*cda5da8dSAndroid Build Coastguard Worker ' "PYTHONNODEBUGRANGES" environment variable can be used.\n' 13857*cda5da8dSAndroid Build Coastguard Worker '\n' 13858*cda5da8dSAndroid Build Coastguard Worker ' Frame objects\n' 13859*cda5da8dSAndroid Build Coastguard Worker ' Frame objects represent execution frames. They may occur in\n' 13860*cda5da8dSAndroid Build Coastguard Worker ' traceback objects (see below), and are also passed to ' 13861*cda5da8dSAndroid Build Coastguard Worker 'registered\n' 13862*cda5da8dSAndroid Build Coastguard Worker ' trace functions.\n' 13863*cda5da8dSAndroid Build Coastguard Worker '\n' 13864*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attributes: "f_back" is to the previous ' 13865*cda5da8dSAndroid Build Coastguard Worker 'stack\n' 13866*cda5da8dSAndroid Build Coastguard Worker ' frame (towards the caller), or "None" if this is the bottom\n' 13867*cda5da8dSAndroid Build Coastguard Worker ' stack frame; "f_code" is the code object being executed in ' 13868*cda5da8dSAndroid Build Coastguard Worker 'this\n' 13869*cda5da8dSAndroid Build Coastguard Worker ' frame; "f_locals" is the dictionary used to look up local\n' 13870*cda5da8dSAndroid Build Coastguard Worker ' variables; "f_globals" is used for global variables;\n' 13871*cda5da8dSAndroid Build Coastguard Worker ' "f_builtins" is used for built-in (intrinsic) names; ' 13872*cda5da8dSAndroid Build Coastguard Worker '"f_lasti"\n' 13873*cda5da8dSAndroid Build Coastguard Worker ' gives the precise instruction (this is an index into the\n' 13874*cda5da8dSAndroid Build Coastguard Worker ' bytecode string of the code object).\n' 13875*cda5da8dSAndroid Build Coastguard Worker '\n' 13876*cda5da8dSAndroid Build Coastguard Worker ' Accessing "f_code" raises an auditing event ' 13877*cda5da8dSAndroid Build Coastguard Worker '"object.__getattr__"\n' 13878*cda5da8dSAndroid Build Coastguard Worker ' with arguments "obj" and ""f_code"".\n' 13879*cda5da8dSAndroid Build Coastguard Worker '\n' 13880*cda5da8dSAndroid Build Coastguard Worker ' Special writable attributes: "f_trace", if not "None", is a\n' 13881*cda5da8dSAndroid Build Coastguard Worker ' function called for various events during code execution ' 13882*cda5da8dSAndroid Build Coastguard Worker '(this\n' 13883*cda5da8dSAndroid Build Coastguard Worker ' is used by the debugger). Normally an event is triggered for\n' 13884*cda5da8dSAndroid Build Coastguard Worker ' each new source line - this can be disabled by setting\n' 13885*cda5da8dSAndroid Build Coastguard Worker ' "f_trace_lines" to "False".\n' 13886*cda5da8dSAndroid Build Coastguard Worker '\n' 13887*cda5da8dSAndroid Build Coastguard Worker ' Implementations *may* allow per-opcode events to be requested ' 13888*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13889*cda5da8dSAndroid Build Coastguard Worker ' setting "f_trace_opcodes" to "True". Note that this may lead ' 13890*cda5da8dSAndroid Build Coastguard Worker 'to\n' 13891*cda5da8dSAndroid Build Coastguard Worker ' undefined interpreter behaviour if exceptions raised by the\n' 13892*cda5da8dSAndroid Build Coastguard Worker ' trace function escape to the function being traced.\n' 13893*cda5da8dSAndroid Build Coastguard Worker '\n' 13894*cda5da8dSAndroid Build Coastguard Worker ' "f_lineno" is the current line number of the frame — writing ' 13895*cda5da8dSAndroid Build Coastguard Worker 'to\n' 13896*cda5da8dSAndroid Build Coastguard Worker ' this from within a trace function jumps to the given line ' 13897*cda5da8dSAndroid Build Coastguard Worker '(only\n' 13898*cda5da8dSAndroid Build Coastguard Worker ' for the bottom-most frame). A debugger can implement a Jump\n' 13899*cda5da8dSAndroid Build Coastguard Worker ' command (aka Set Next Statement) by writing to f_lineno.\n' 13900*cda5da8dSAndroid Build Coastguard Worker '\n' 13901*cda5da8dSAndroid Build Coastguard Worker ' Frame objects support one method:\n' 13902*cda5da8dSAndroid Build Coastguard Worker '\n' 13903*cda5da8dSAndroid Build Coastguard Worker ' frame.clear()\n' 13904*cda5da8dSAndroid Build Coastguard Worker '\n' 13905*cda5da8dSAndroid Build Coastguard Worker ' This method clears all references to local variables held ' 13906*cda5da8dSAndroid Build Coastguard Worker 'by\n' 13907*cda5da8dSAndroid Build Coastguard Worker ' the frame. Also, if the frame belonged to a generator, ' 13908*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13909*cda5da8dSAndroid Build Coastguard Worker ' generator is finalized. This helps break reference ' 13910*cda5da8dSAndroid Build Coastguard Worker 'cycles\n' 13911*cda5da8dSAndroid Build Coastguard Worker ' involving frame objects (for example when catching an\n' 13912*cda5da8dSAndroid Build Coastguard Worker ' exception and storing its traceback for later use).\n' 13913*cda5da8dSAndroid Build Coastguard Worker '\n' 13914*cda5da8dSAndroid Build Coastguard Worker ' "RuntimeError" is raised if the frame is currently ' 13915*cda5da8dSAndroid Build Coastguard Worker 'executing.\n' 13916*cda5da8dSAndroid Build Coastguard Worker '\n' 13917*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.4.\n' 13918*cda5da8dSAndroid Build Coastguard Worker '\n' 13919*cda5da8dSAndroid Build Coastguard Worker ' Traceback objects\n' 13920*cda5da8dSAndroid Build Coastguard Worker ' Traceback objects represent a stack trace of an exception. ' 13921*cda5da8dSAndroid Build Coastguard Worker 'A\n' 13922*cda5da8dSAndroid Build Coastguard Worker ' traceback object is implicitly created when an exception ' 13923*cda5da8dSAndroid Build Coastguard Worker 'occurs,\n' 13924*cda5da8dSAndroid Build Coastguard Worker ' and may also be explicitly created by calling\n' 13925*cda5da8dSAndroid Build Coastguard Worker ' "types.TracebackType".\n' 13926*cda5da8dSAndroid Build Coastguard Worker '\n' 13927*cda5da8dSAndroid Build Coastguard Worker ' For implicitly created tracebacks, when the search for an\n' 13928*cda5da8dSAndroid Build Coastguard Worker ' exception handler unwinds the execution stack, at each ' 13929*cda5da8dSAndroid Build Coastguard Worker 'unwound\n' 13930*cda5da8dSAndroid Build Coastguard Worker ' level a traceback object is inserted in front of the current\n' 13931*cda5da8dSAndroid Build Coastguard Worker ' traceback. When an exception handler is entered, the stack\n' 13932*cda5da8dSAndroid Build Coastguard Worker ' trace is made available to the program. (See section The try\n' 13933*cda5da8dSAndroid Build Coastguard Worker ' statement.) It is accessible as the third item of the tuple\n' 13934*cda5da8dSAndroid Build Coastguard Worker ' returned by "sys.exc_info()", and as the "__traceback__"\n' 13935*cda5da8dSAndroid Build Coastguard Worker ' attribute of the caught exception.\n' 13936*cda5da8dSAndroid Build Coastguard Worker '\n' 13937*cda5da8dSAndroid Build Coastguard Worker ' When the program contains no suitable handler, the stack ' 13938*cda5da8dSAndroid Build Coastguard Worker 'trace\n' 13939*cda5da8dSAndroid Build Coastguard Worker ' is written (nicely formatted) to the standard error stream; ' 13940*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13941*cda5da8dSAndroid Build Coastguard Worker ' the interpreter is interactive, it is also made available to ' 13942*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13943*cda5da8dSAndroid Build Coastguard Worker ' user as "sys.last_traceback".\n' 13944*cda5da8dSAndroid Build Coastguard Worker '\n' 13945*cda5da8dSAndroid Build Coastguard Worker ' For explicitly created tracebacks, it is up to the creator ' 13946*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13947*cda5da8dSAndroid Build Coastguard Worker ' the traceback to determine how the "tb_next" attributes ' 13948*cda5da8dSAndroid Build Coastguard Worker 'should\n' 13949*cda5da8dSAndroid Build Coastguard Worker ' be linked to form a full stack trace.\n' 13950*cda5da8dSAndroid Build Coastguard Worker '\n' 13951*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attributes: "tb_frame" points to the ' 13952*cda5da8dSAndroid Build Coastguard Worker 'execution\n' 13953*cda5da8dSAndroid Build Coastguard Worker ' frame of the current level; "tb_lineno" gives the line ' 13954*cda5da8dSAndroid Build Coastguard Worker 'number\n' 13955*cda5da8dSAndroid Build Coastguard Worker ' where the exception occurred; "tb_lasti" indicates the ' 13956*cda5da8dSAndroid Build Coastguard Worker 'precise\n' 13957*cda5da8dSAndroid Build Coastguard Worker ' instruction. The line number and last instruction in the\n' 13958*cda5da8dSAndroid Build Coastguard Worker ' traceback may differ from the line number of its frame object ' 13959*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13960*cda5da8dSAndroid Build Coastguard Worker ' the exception occurred in a "try" statement with no matching\n' 13961*cda5da8dSAndroid Build Coastguard Worker ' except clause or with a finally clause.\n' 13962*cda5da8dSAndroid Build Coastguard Worker '\n' 13963*cda5da8dSAndroid Build Coastguard Worker ' Accessing "tb_frame" raises an auditing event\n' 13964*cda5da8dSAndroid Build Coastguard Worker ' "object.__getattr__" with arguments "obj" and ""tb_frame"".\n' 13965*cda5da8dSAndroid Build Coastguard Worker '\n' 13966*cda5da8dSAndroid Build Coastguard Worker ' Special writable attribute: "tb_next" is the next level in ' 13967*cda5da8dSAndroid Build Coastguard Worker 'the\n' 13968*cda5da8dSAndroid Build Coastguard Worker ' stack trace (towards the frame where the exception occurred), ' 13969*cda5da8dSAndroid Build Coastguard Worker 'or\n' 13970*cda5da8dSAndroid Build Coastguard Worker ' "None" if there is no next level.\n' 13971*cda5da8dSAndroid Build Coastguard Worker '\n' 13972*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: Traceback objects can now be ' 13973*cda5da8dSAndroid Build Coastguard Worker 'explicitly\n' 13974*cda5da8dSAndroid Build Coastguard Worker ' instantiated from Python code, and the "tb_next" attribute ' 13975*cda5da8dSAndroid Build Coastguard Worker 'of\n' 13976*cda5da8dSAndroid Build Coastguard Worker ' existing instances can be updated.\n' 13977*cda5da8dSAndroid Build Coastguard Worker '\n' 13978*cda5da8dSAndroid Build Coastguard Worker ' Slice objects\n' 13979*cda5da8dSAndroid Build Coastguard Worker ' Slice objects are used to represent slices for ' 13980*cda5da8dSAndroid Build Coastguard Worker '"__getitem__()"\n' 13981*cda5da8dSAndroid Build Coastguard Worker ' methods. They are also created by the built-in "slice()"\n' 13982*cda5da8dSAndroid Build Coastguard Worker ' function.\n' 13983*cda5da8dSAndroid Build Coastguard Worker '\n' 13984*cda5da8dSAndroid Build Coastguard Worker ' Special read-only attributes: "start" is the lower bound; ' 13985*cda5da8dSAndroid Build Coastguard Worker '"stop"\n' 13986*cda5da8dSAndroid Build Coastguard Worker ' is the upper bound; "step" is the step value; each is "None" ' 13987*cda5da8dSAndroid Build Coastguard Worker 'if\n' 13988*cda5da8dSAndroid Build Coastguard Worker ' omitted. These attributes can have any type.\n' 13989*cda5da8dSAndroid Build Coastguard Worker '\n' 13990*cda5da8dSAndroid Build Coastguard Worker ' Slice objects support one method:\n' 13991*cda5da8dSAndroid Build Coastguard Worker '\n' 13992*cda5da8dSAndroid Build Coastguard Worker ' slice.indices(self, length)\n' 13993*cda5da8dSAndroid Build Coastguard Worker '\n' 13994*cda5da8dSAndroid Build Coastguard Worker ' This method takes a single integer argument *length* and\n' 13995*cda5da8dSAndroid Build Coastguard Worker ' computes information about the slice that the slice ' 13996*cda5da8dSAndroid Build Coastguard Worker 'object\n' 13997*cda5da8dSAndroid Build Coastguard Worker ' would describe if applied to a sequence of *length* ' 13998*cda5da8dSAndroid Build Coastguard Worker 'items.\n' 13999*cda5da8dSAndroid Build Coastguard Worker ' It returns a tuple of three integers; respectively these ' 14000*cda5da8dSAndroid Build Coastguard Worker 'are\n' 14001*cda5da8dSAndroid Build Coastguard Worker ' the *start* and *stop* indices and the *step* or stride\n' 14002*cda5da8dSAndroid Build Coastguard Worker ' length of the slice. Missing or out-of-bounds indices are\n' 14003*cda5da8dSAndroid Build Coastguard Worker ' handled in a manner consistent with regular slices.\n' 14004*cda5da8dSAndroid Build Coastguard Worker '\n' 14005*cda5da8dSAndroid Build Coastguard Worker ' Static method objects\n' 14006*cda5da8dSAndroid Build Coastguard Worker ' Static method objects provide a way of defeating the\n' 14007*cda5da8dSAndroid Build Coastguard Worker ' transformation of function objects to method objects ' 14008*cda5da8dSAndroid Build Coastguard Worker 'described\n' 14009*cda5da8dSAndroid Build Coastguard Worker ' above. A static method object is a wrapper around any other\n' 14010*cda5da8dSAndroid Build Coastguard Worker ' object, usually a user-defined method object. When a static\n' 14011*cda5da8dSAndroid Build Coastguard Worker ' method object is retrieved from a class or a class instance, ' 14012*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14013*cda5da8dSAndroid Build Coastguard Worker ' object actually returned is the wrapped object, which is not\n' 14014*cda5da8dSAndroid Build Coastguard Worker ' subject to any further transformation. Static method objects ' 14015*cda5da8dSAndroid Build Coastguard Worker 'are\n' 14016*cda5da8dSAndroid Build Coastguard Worker ' also callable. Static method objects are created by the ' 14017*cda5da8dSAndroid Build Coastguard Worker 'built-in\n' 14018*cda5da8dSAndroid Build Coastguard Worker ' "staticmethod()" constructor.\n' 14019*cda5da8dSAndroid Build Coastguard Worker '\n' 14020*cda5da8dSAndroid Build Coastguard Worker ' Class method objects\n' 14021*cda5da8dSAndroid Build Coastguard Worker ' A class method object, like a static method object, is a ' 14022*cda5da8dSAndroid Build Coastguard Worker 'wrapper\n' 14023*cda5da8dSAndroid Build Coastguard Worker ' around another object that alters the way in which that ' 14024*cda5da8dSAndroid Build Coastguard Worker 'object\n' 14025*cda5da8dSAndroid Build Coastguard Worker ' is retrieved from classes and class instances. The behaviour ' 14026*cda5da8dSAndroid Build Coastguard Worker 'of\n' 14027*cda5da8dSAndroid Build Coastguard Worker ' class method objects upon such retrieval is described above,\n' 14028*cda5da8dSAndroid Build Coastguard Worker ' under “User-defined methods”. Class method objects are ' 14029*cda5da8dSAndroid Build Coastguard Worker 'created\n' 14030*cda5da8dSAndroid Build Coastguard Worker ' by the built-in "classmethod()" constructor.\n', 14031*cda5da8dSAndroid Build Coastguard Worker 'typesfunctions': 'Functions\n' 14032*cda5da8dSAndroid Build Coastguard Worker '*********\n' 14033*cda5da8dSAndroid Build Coastguard Worker '\n' 14034*cda5da8dSAndroid Build Coastguard Worker 'Function objects are created by function definitions. The ' 14035*cda5da8dSAndroid Build Coastguard Worker 'only\n' 14036*cda5da8dSAndroid Build Coastguard Worker 'operation on a function object is to call it: ' 14037*cda5da8dSAndroid Build Coastguard Worker '"func(argument-list)".\n' 14038*cda5da8dSAndroid Build Coastguard Worker '\n' 14039*cda5da8dSAndroid Build Coastguard Worker 'There are really two flavors of function objects: built-in ' 14040*cda5da8dSAndroid Build Coastguard Worker 'functions\n' 14041*cda5da8dSAndroid Build Coastguard Worker 'and user-defined functions. Both support the same ' 14042*cda5da8dSAndroid Build Coastguard Worker 'operation (to call\n' 14043*cda5da8dSAndroid Build Coastguard Worker 'the function), but the implementation is different, hence ' 14044*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14045*cda5da8dSAndroid Build Coastguard Worker 'different object types.\n' 14046*cda5da8dSAndroid Build Coastguard Worker '\n' 14047*cda5da8dSAndroid Build Coastguard Worker 'See Function definitions for more information.\n', 14048*cda5da8dSAndroid Build Coastguard Worker 'typesmapping': 'Mapping Types — "dict"\n' 14049*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 14050*cda5da8dSAndroid Build Coastguard Worker '\n' 14051*cda5da8dSAndroid Build Coastguard Worker 'A *mapping* object maps *hashable* values to arbitrary ' 14052*cda5da8dSAndroid Build Coastguard Worker 'objects.\n' 14053*cda5da8dSAndroid Build Coastguard Worker 'Mappings are mutable objects. There is currently only one ' 14054*cda5da8dSAndroid Build Coastguard Worker 'standard\n' 14055*cda5da8dSAndroid Build Coastguard Worker 'mapping type, the *dictionary*. (For other containers see ' 14056*cda5da8dSAndroid Build Coastguard Worker 'the built-\n' 14057*cda5da8dSAndroid Build Coastguard Worker 'in "list", "set", and "tuple" classes, and the "collections" ' 14058*cda5da8dSAndroid Build Coastguard Worker 'module.)\n' 14059*cda5da8dSAndroid Build Coastguard Worker '\n' 14060*cda5da8dSAndroid Build Coastguard Worker 'A dictionary’s keys are *almost* arbitrary values. Values ' 14061*cda5da8dSAndroid Build Coastguard Worker 'that are\n' 14062*cda5da8dSAndroid Build Coastguard Worker 'not *hashable*, that is, values containing lists, ' 14063*cda5da8dSAndroid Build Coastguard Worker 'dictionaries or\n' 14064*cda5da8dSAndroid Build Coastguard Worker 'other mutable types (that are compared by value rather than ' 14065*cda5da8dSAndroid Build Coastguard Worker 'by object\n' 14066*cda5da8dSAndroid Build Coastguard Worker 'identity) may not be used as keys. Values that compare equal ' 14067*cda5da8dSAndroid Build Coastguard Worker '(such as\n' 14068*cda5da8dSAndroid Build Coastguard Worker '"1", "1.0", and "True") can be used interchangeably to index ' 14069*cda5da8dSAndroid Build Coastguard Worker 'the same\n' 14070*cda5da8dSAndroid Build Coastguard Worker 'dictionary entry.\n' 14071*cda5da8dSAndroid Build Coastguard Worker '\n' 14072*cda5da8dSAndroid Build Coastguard Worker 'class dict(**kwargs)\n' 14073*cda5da8dSAndroid Build Coastguard Worker 'class dict(mapping, **kwargs)\n' 14074*cda5da8dSAndroid Build Coastguard Worker 'class dict(iterable, **kwargs)\n' 14075*cda5da8dSAndroid Build Coastguard Worker '\n' 14076*cda5da8dSAndroid Build Coastguard Worker ' Return a new dictionary initialized from an optional ' 14077*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 14078*cda5da8dSAndroid Build Coastguard Worker ' argument and a possibly empty set of keyword arguments.\n' 14079*cda5da8dSAndroid Build Coastguard Worker '\n' 14080*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries can be created by several means:\n' 14081*cda5da8dSAndroid Build Coastguard Worker '\n' 14082*cda5da8dSAndroid Build Coastguard Worker ' * Use a comma-separated list of "key: value" pairs within ' 14083*cda5da8dSAndroid Build Coastguard Worker 'braces:\n' 14084*cda5da8dSAndroid Build Coastguard Worker ' "{\'jack\': 4098, \'sjoerd\': 4127}" or "{4098: ' 14085*cda5da8dSAndroid Build Coastguard Worker "'jack', 4127:\n" 14086*cda5da8dSAndroid Build Coastguard Worker ' \'sjoerd\'}"\n' 14087*cda5da8dSAndroid Build Coastguard Worker '\n' 14088*cda5da8dSAndroid Build Coastguard Worker ' * Use a dict comprehension: "{}", "{x: x ** 2 for x in ' 14089*cda5da8dSAndroid Build Coastguard Worker 'range(10)}"\n' 14090*cda5da8dSAndroid Build Coastguard Worker '\n' 14091*cda5da8dSAndroid Build Coastguard Worker ' * Use the type constructor: "dict()", "dict([(\'foo\', ' 14092*cda5da8dSAndroid Build Coastguard Worker "100), ('bar',\n" 14093*cda5da8dSAndroid Build Coastguard Worker ' 200)])", "dict(foo=100, bar=200)"\n' 14094*cda5da8dSAndroid Build Coastguard Worker '\n' 14095*cda5da8dSAndroid Build Coastguard Worker ' If no positional argument is given, an empty dictionary ' 14096*cda5da8dSAndroid Build Coastguard Worker 'is created.\n' 14097*cda5da8dSAndroid Build Coastguard Worker ' If a positional argument is given and it is a mapping ' 14098*cda5da8dSAndroid Build Coastguard Worker 'object, a\n' 14099*cda5da8dSAndroid Build Coastguard Worker ' dictionary is created with the same key-value pairs as ' 14100*cda5da8dSAndroid Build Coastguard Worker 'the mapping\n' 14101*cda5da8dSAndroid Build Coastguard Worker ' object. Otherwise, the positional argument must be an ' 14102*cda5da8dSAndroid Build Coastguard Worker '*iterable*\n' 14103*cda5da8dSAndroid Build Coastguard Worker ' object. Each item in the iterable must itself be an ' 14104*cda5da8dSAndroid Build Coastguard Worker 'iterable with\n' 14105*cda5da8dSAndroid Build Coastguard Worker ' exactly two objects. The first object of each item ' 14106*cda5da8dSAndroid Build Coastguard Worker 'becomes a key\n' 14107*cda5da8dSAndroid Build Coastguard Worker ' in the new dictionary, and the second object the ' 14108*cda5da8dSAndroid Build Coastguard Worker 'corresponding\n' 14109*cda5da8dSAndroid Build Coastguard Worker ' value. If a key occurs more than once, the last value ' 14110*cda5da8dSAndroid Build Coastguard Worker 'for that key\n' 14111*cda5da8dSAndroid Build Coastguard Worker ' becomes the corresponding value in the new dictionary.\n' 14112*cda5da8dSAndroid Build Coastguard Worker '\n' 14113*cda5da8dSAndroid Build Coastguard Worker ' If keyword arguments are given, the keyword arguments and ' 14114*cda5da8dSAndroid Build Coastguard Worker 'their\n' 14115*cda5da8dSAndroid Build Coastguard Worker ' values are added to the dictionary created from the ' 14116*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 14117*cda5da8dSAndroid Build Coastguard Worker ' argument. If a key being added is already present, the ' 14118*cda5da8dSAndroid Build Coastguard Worker 'value from\n' 14119*cda5da8dSAndroid Build Coastguard Worker ' the keyword argument replaces the value from the ' 14120*cda5da8dSAndroid Build Coastguard Worker 'positional\n' 14121*cda5da8dSAndroid Build Coastguard Worker ' argument.\n' 14122*cda5da8dSAndroid Build Coastguard Worker '\n' 14123*cda5da8dSAndroid Build Coastguard Worker ' To illustrate, the following examples all return a ' 14124*cda5da8dSAndroid Build Coastguard Worker 'dictionary equal\n' 14125*cda5da8dSAndroid Build Coastguard Worker ' to "{"one": 1, "two": 2, "three": 3}":\n' 14126*cda5da8dSAndroid Build Coastguard Worker '\n' 14127*cda5da8dSAndroid Build Coastguard Worker ' >>> a = dict(one=1, two=2, three=3)\n' 14128*cda5da8dSAndroid Build Coastguard Worker " >>> b = {'one': 1, 'two': 2, 'three': 3}\n" 14129*cda5da8dSAndroid Build Coastguard Worker " >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))\n" 14130*cda5da8dSAndroid Build Coastguard Worker " >>> d = dict([('two', 2), ('one', 1), ('three', 3)])\n" 14131*cda5da8dSAndroid Build Coastguard Worker " >>> e = dict({'three': 3, 'one': 1, 'two': 2})\n" 14132*cda5da8dSAndroid Build Coastguard Worker " >>> f = dict({'one': 1, 'three': 3}, two=2)\n" 14133*cda5da8dSAndroid Build Coastguard Worker ' >>> a == b == c == d == e == f\n' 14134*cda5da8dSAndroid Build Coastguard Worker ' True\n' 14135*cda5da8dSAndroid Build Coastguard Worker '\n' 14136*cda5da8dSAndroid Build Coastguard Worker ' Providing keyword arguments as in the first example only ' 14137*cda5da8dSAndroid Build Coastguard Worker 'works for\n' 14138*cda5da8dSAndroid Build Coastguard Worker ' keys that are valid Python identifiers. Otherwise, any ' 14139*cda5da8dSAndroid Build Coastguard Worker 'valid keys\n' 14140*cda5da8dSAndroid Build Coastguard Worker ' can be used.\n' 14141*cda5da8dSAndroid Build Coastguard Worker '\n' 14142*cda5da8dSAndroid Build Coastguard Worker ' These are the operations that dictionaries support (and ' 14143*cda5da8dSAndroid Build Coastguard Worker 'therefore,\n' 14144*cda5da8dSAndroid Build Coastguard Worker ' custom mapping types should support too):\n' 14145*cda5da8dSAndroid Build Coastguard Worker '\n' 14146*cda5da8dSAndroid Build Coastguard Worker ' list(d)\n' 14147*cda5da8dSAndroid Build Coastguard Worker '\n' 14148*cda5da8dSAndroid Build Coastguard Worker ' Return a list of all the keys used in the dictionary ' 14149*cda5da8dSAndroid Build Coastguard Worker '*d*.\n' 14150*cda5da8dSAndroid Build Coastguard Worker '\n' 14151*cda5da8dSAndroid Build Coastguard Worker ' len(d)\n' 14152*cda5da8dSAndroid Build Coastguard Worker '\n' 14153*cda5da8dSAndroid Build Coastguard Worker ' Return the number of items in the dictionary *d*.\n' 14154*cda5da8dSAndroid Build Coastguard Worker '\n' 14155*cda5da8dSAndroid Build Coastguard Worker ' d[key]\n' 14156*cda5da8dSAndroid Build Coastguard Worker '\n' 14157*cda5da8dSAndroid Build Coastguard Worker ' Return the item of *d* with key *key*. Raises a ' 14158*cda5da8dSAndroid Build Coastguard Worker '"KeyError" if\n' 14159*cda5da8dSAndroid Build Coastguard Worker ' *key* is not in the map.\n' 14160*cda5da8dSAndroid Build Coastguard Worker '\n' 14161*cda5da8dSAndroid Build Coastguard Worker ' If a subclass of dict defines a method "__missing__()" ' 14162*cda5da8dSAndroid Build Coastguard Worker 'and *key*\n' 14163*cda5da8dSAndroid Build Coastguard Worker ' is not present, the "d[key]" operation calls that ' 14164*cda5da8dSAndroid Build Coastguard Worker 'method with\n' 14165*cda5da8dSAndroid Build Coastguard Worker ' the key *key* as argument. The "d[key]" operation ' 14166*cda5da8dSAndroid Build Coastguard Worker 'then returns\n' 14167*cda5da8dSAndroid Build Coastguard Worker ' or raises whatever is returned or raised by the\n' 14168*cda5da8dSAndroid Build Coastguard Worker ' "__missing__(key)" call. No other operations or ' 14169*cda5da8dSAndroid Build Coastguard Worker 'methods invoke\n' 14170*cda5da8dSAndroid Build Coastguard Worker ' "__missing__()". If "__missing__()" is not defined, ' 14171*cda5da8dSAndroid Build Coastguard Worker '"KeyError"\n' 14172*cda5da8dSAndroid Build Coastguard Worker ' is raised. "__missing__()" must be a method; it cannot ' 14173*cda5da8dSAndroid Build Coastguard Worker 'be an\n' 14174*cda5da8dSAndroid Build Coastguard Worker ' instance variable:\n' 14175*cda5da8dSAndroid Build Coastguard Worker '\n' 14176*cda5da8dSAndroid Build Coastguard Worker ' >>> class Counter(dict):\n' 14177*cda5da8dSAndroid Build Coastguard Worker ' ... def __missing__(self, key):\n' 14178*cda5da8dSAndroid Build Coastguard Worker ' ... return 0\n' 14179*cda5da8dSAndroid Build Coastguard Worker ' >>> c = Counter()\n' 14180*cda5da8dSAndroid Build Coastguard Worker " >>> c['red']\n" 14181*cda5da8dSAndroid Build Coastguard Worker ' 0\n' 14182*cda5da8dSAndroid Build Coastguard Worker " >>> c['red'] += 1\n" 14183*cda5da8dSAndroid Build Coastguard Worker " >>> c['red']\n" 14184*cda5da8dSAndroid Build Coastguard Worker ' 1\n' 14185*cda5da8dSAndroid Build Coastguard Worker '\n' 14186*cda5da8dSAndroid Build Coastguard Worker ' The example above shows part of the implementation of\n' 14187*cda5da8dSAndroid Build Coastguard Worker ' "collections.Counter". A different "__missing__" ' 14188*cda5da8dSAndroid Build Coastguard Worker 'method is used\n' 14189*cda5da8dSAndroid Build Coastguard Worker ' by "collections.defaultdict".\n' 14190*cda5da8dSAndroid Build Coastguard Worker '\n' 14191*cda5da8dSAndroid Build Coastguard Worker ' d[key] = value\n' 14192*cda5da8dSAndroid Build Coastguard Worker '\n' 14193*cda5da8dSAndroid Build Coastguard Worker ' Set "d[key]" to *value*.\n' 14194*cda5da8dSAndroid Build Coastguard Worker '\n' 14195*cda5da8dSAndroid Build Coastguard Worker ' del d[key]\n' 14196*cda5da8dSAndroid Build Coastguard Worker '\n' 14197*cda5da8dSAndroid Build Coastguard Worker ' Remove "d[key]" from *d*. Raises a "KeyError" if ' 14198*cda5da8dSAndroid Build Coastguard Worker '*key* is not\n' 14199*cda5da8dSAndroid Build Coastguard Worker ' in the map.\n' 14200*cda5da8dSAndroid Build Coastguard Worker '\n' 14201*cda5da8dSAndroid Build Coastguard Worker ' key in d\n' 14202*cda5da8dSAndroid Build Coastguard Worker '\n' 14203*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if *d* has a key *key*, else "False".\n' 14204*cda5da8dSAndroid Build Coastguard Worker '\n' 14205*cda5da8dSAndroid Build Coastguard Worker ' key not in d\n' 14206*cda5da8dSAndroid Build Coastguard Worker '\n' 14207*cda5da8dSAndroid Build Coastguard Worker ' Equivalent to "not key in d".\n' 14208*cda5da8dSAndroid Build Coastguard Worker '\n' 14209*cda5da8dSAndroid Build Coastguard Worker ' iter(d)\n' 14210*cda5da8dSAndroid Build Coastguard Worker '\n' 14211*cda5da8dSAndroid Build Coastguard Worker ' Return an iterator over the keys of the dictionary. ' 14212*cda5da8dSAndroid Build Coastguard Worker 'This is a\n' 14213*cda5da8dSAndroid Build Coastguard Worker ' shortcut for "iter(d.keys())".\n' 14214*cda5da8dSAndroid Build Coastguard Worker '\n' 14215*cda5da8dSAndroid Build Coastguard Worker ' clear()\n' 14216*cda5da8dSAndroid Build Coastguard Worker '\n' 14217*cda5da8dSAndroid Build Coastguard Worker ' Remove all items from the dictionary.\n' 14218*cda5da8dSAndroid Build Coastguard Worker '\n' 14219*cda5da8dSAndroid Build Coastguard Worker ' copy()\n' 14220*cda5da8dSAndroid Build Coastguard Worker '\n' 14221*cda5da8dSAndroid Build Coastguard Worker ' Return a shallow copy of the dictionary.\n' 14222*cda5da8dSAndroid Build Coastguard Worker '\n' 14223*cda5da8dSAndroid Build Coastguard Worker ' classmethod fromkeys(iterable[, value])\n' 14224*cda5da8dSAndroid Build Coastguard Worker '\n' 14225*cda5da8dSAndroid Build Coastguard Worker ' Create a new dictionary with keys from *iterable* and ' 14226*cda5da8dSAndroid Build Coastguard Worker 'values set\n' 14227*cda5da8dSAndroid Build Coastguard Worker ' to *value*.\n' 14228*cda5da8dSAndroid Build Coastguard Worker '\n' 14229*cda5da8dSAndroid Build Coastguard Worker ' "fromkeys()" is a class method that returns a new ' 14230*cda5da8dSAndroid Build Coastguard Worker 'dictionary.\n' 14231*cda5da8dSAndroid Build Coastguard Worker ' *value* defaults to "None". All of the values refer ' 14232*cda5da8dSAndroid Build Coastguard Worker 'to just a\n' 14233*cda5da8dSAndroid Build Coastguard Worker ' single instance, so it generally doesn’t make sense ' 14234*cda5da8dSAndroid Build Coastguard Worker 'for *value*\n' 14235*cda5da8dSAndroid Build Coastguard Worker ' to be a mutable object such as an empty list. To get ' 14236*cda5da8dSAndroid Build Coastguard Worker 'distinct\n' 14237*cda5da8dSAndroid Build Coastguard Worker ' values, use a dict comprehension instead.\n' 14238*cda5da8dSAndroid Build Coastguard Worker '\n' 14239*cda5da8dSAndroid Build Coastguard Worker ' get(key[, default])\n' 14240*cda5da8dSAndroid Build Coastguard Worker '\n' 14241*cda5da8dSAndroid Build Coastguard Worker ' Return the value for *key* if *key* is in the ' 14242*cda5da8dSAndroid Build Coastguard Worker 'dictionary, else\n' 14243*cda5da8dSAndroid Build Coastguard Worker ' *default*. If *default* is not given, it defaults to ' 14244*cda5da8dSAndroid Build Coastguard Worker '"None", so\n' 14245*cda5da8dSAndroid Build Coastguard Worker ' that this method never raises a "KeyError".\n' 14246*cda5da8dSAndroid Build Coastguard Worker '\n' 14247*cda5da8dSAndroid Build Coastguard Worker ' items()\n' 14248*cda5da8dSAndroid Build Coastguard Worker '\n' 14249*cda5da8dSAndroid Build Coastguard Worker ' Return a new view of the dictionary’s items ("(key, ' 14250*cda5da8dSAndroid Build Coastguard Worker 'value)"\n' 14251*cda5da8dSAndroid Build Coastguard Worker ' pairs). See the documentation of view objects.\n' 14252*cda5da8dSAndroid Build Coastguard Worker '\n' 14253*cda5da8dSAndroid Build Coastguard Worker ' keys()\n' 14254*cda5da8dSAndroid Build Coastguard Worker '\n' 14255*cda5da8dSAndroid Build Coastguard Worker ' Return a new view of the dictionary’s keys. See the\n' 14256*cda5da8dSAndroid Build Coastguard Worker ' documentation of view objects.\n' 14257*cda5da8dSAndroid Build Coastguard Worker '\n' 14258*cda5da8dSAndroid Build Coastguard Worker ' pop(key[, default])\n' 14259*cda5da8dSAndroid Build Coastguard Worker '\n' 14260*cda5da8dSAndroid Build Coastguard Worker ' If *key* is in the dictionary, remove it and return ' 14261*cda5da8dSAndroid Build Coastguard Worker 'its value,\n' 14262*cda5da8dSAndroid Build Coastguard Worker ' else return *default*. If *default* is not given and ' 14263*cda5da8dSAndroid Build Coastguard Worker '*key* is\n' 14264*cda5da8dSAndroid Build Coastguard Worker ' not in the dictionary, a "KeyError" is raised.\n' 14265*cda5da8dSAndroid Build Coastguard Worker '\n' 14266*cda5da8dSAndroid Build Coastguard Worker ' popitem()\n' 14267*cda5da8dSAndroid Build Coastguard Worker '\n' 14268*cda5da8dSAndroid Build Coastguard Worker ' Remove and return a "(key, value)" pair from the ' 14269*cda5da8dSAndroid Build Coastguard Worker 'dictionary.\n' 14270*cda5da8dSAndroid Build Coastguard Worker ' Pairs are returned in LIFO (last-in, first-out) ' 14271*cda5da8dSAndroid Build Coastguard Worker 'order.\n' 14272*cda5da8dSAndroid Build Coastguard Worker '\n' 14273*cda5da8dSAndroid Build Coastguard Worker ' "popitem()" is useful to destructively iterate over a\n' 14274*cda5da8dSAndroid Build Coastguard Worker ' dictionary, as often used in set algorithms. If the ' 14275*cda5da8dSAndroid Build Coastguard Worker 'dictionary\n' 14276*cda5da8dSAndroid Build Coastguard Worker ' is empty, calling "popitem()" raises a "KeyError".\n' 14277*cda5da8dSAndroid Build Coastguard Worker '\n' 14278*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: LIFO order is now guaranteed. ' 14279*cda5da8dSAndroid Build Coastguard Worker 'In prior\n' 14280*cda5da8dSAndroid Build Coastguard Worker ' versions, "popitem()" would return an arbitrary ' 14281*cda5da8dSAndroid Build Coastguard Worker 'key/value pair.\n' 14282*cda5da8dSAndroid Build Coastguard Worker '\n' 14283*cda5da8dSAndroid Build Coastguard Worker ' reversed(d)\n' 14284*cda5da8dSAndroid Build Coastguard Worker '\n' 14285*cda5da8dSAndroid Build Coastguard Worker ' Return a reverse iterator over the keys of the ' 14286*cda5da8dSAndroid Build Coastguard Worker 'dictionary. This\n' 14287*cda5da8dSAndroid Build Coastguard Worker ' is a shortcut for "reversed(d.keys())".\n' 14288*cda5da8dSAndroid Build Coastguard Worker '\n' 14289*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.8.\n' 14290*cda5da8dSAndroid Build Coastguard Worker '\n' 14291*cda5da8dSAndroid Build Coastguard Worker ' setdefault(key[, default])\n' 14292*cda5da8dSAndroid Build Coastguard Worker '\n' 14293*cda5da8dSAndroid Build Coastguard Worker ' If *key* is in the dictionary, return its value. If ' 14294*cda5da8dSAndroid Build Coastguard Worker 'not, insert\n' 14295*cda5da8dSAndroid Build Coastguard Worker ' *key* with a value of *default* and return *default*. ' 14296*cda5da8dSAndroid Build Coastguard Worker '*default*\n' 14297*cda5da8dSAndroid Build Coastguard Worker ' defaults to "None".\n' 14298*cda5da8dSAndroid Build Coastguard Worker '\n' 14299*cda5da8dSAndroid Build Coastguard Worker ' update([other])\n' 14300*cda5da8dSAndroid Build Coastguard Worker '\n' 14301*cda5da8dSAndroid Build Coastguard Worker ' Update the dictionary with the key/value pairs from ' 14302*cda5da8dSAndroid Build Coastguard Worker '*other*,\n' 14303*cda5da8dSAndroid Build Coastguard Worker ' overwriting existing keys. Return "None".\n' 14304*cda5da8dSAndroid Build Coastguard Worker '\n' 14305*cda5da8dSAndroid Build Coastguard Worker ' "update()" accepts either another dictionary object or ' 14306*cda5da8dSAndroid Build Coastguard Worker 'an\n' 14307*cda5da8dSAndroid Build Coastguard Worker ' iterable of key/value pairs (as tuples or other ' 14308*cda5da8dSAndroid Build Coastguard Worker 'iterables of\n' 14309*cda5da8dSAndroid Build Coastguard Worker ' length two). If keyword arguments are specified, the ' 14310*cda5da8dSAndroid Build Coastguard Worker 'dictionary\n' 14311*cda5da8dSAndroid Build Coastguard Worker ' is then updated with those key/value pairs: ' 14312*cda5da8dSAndroid Build Coastguard Worker '"d.update(red=1,\n' 14313*cda5da8dSAndroid Build Coastguard Worker ' blue=2)".\n' 14314*cda5da8dSAndroid Build Coastguard Worker '\n' 14315*cda5da8dSAndroid Build Coastguard Worker ' values()\n' 14316*cda5da8dSAndroid Build Coastguard Worker '\n' 14317*cda5da8dSAndroid Build Coastguard Worker ' Return a new view of the dictionary’s values. See ' 14318*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14319*cda5da8dSAndroid Build Coastguard Worker ' documentation of view objects.\n' 14320*cda5da8dSAndroid Build Coastguard Worker '\n' 14321*cda5da8dSAndroid Build Coastguard Worker ' An equality comparison between one "dict.values()" ' 14322*cda5da8dSAndroid Build Coastguard Worker 'view and\n' 14323*cda5da8dSAndroid Build Coastguard Worker ' another will always return "False". This also applies ' 14324*cda5da8dSAndroid Build Coastguard Worker 'when\n' 14325*cda5da8dSAndroid Build Coastguard Worker ' comparing "dict.values()" to itself:\n' 14326*cda5da8dSAndroid Build Coastguard Worker '\n' 14327*cda5da8dSAndroid Build Coastguard Worker " >>> d = {'a': 1}\n" 14328*cda5da8dSAndroid Build Coastguard Worker ' >>> d.values() == d.values()\n' 14329*cda5da8dSAndroid Build Coastguard Worker ' False\n' 14330*cda5da8dSAndroid Build Coastguard Worker '\n' 14331*cda5da8dSAndroid Build Coastguard Worker ' d | other\n' 14332*cda5da8dSAndroid Build Coastguard Worker '\n' 14333*cda5da8dSAndroid Build Coastguard Worker ' Create a new dictionary with the merged keys and ' 14334*cda5da8dSAndroid Build Coastguard Worker 'values of *d*\n' 14335*cda5da8dSAndroid Build Coastguard Worker ' and *other*, which must both be dictionaries. The ' 14336*cda5da8dSAndroid Build Coastguard Worker 'values of\n' 14337*cda5da8dSAndroid Build Coastguard Worker ' *other* take priority when *d* and *other* share ' 14338*cda5da8dSAndroid Build Coastguard Worker 'keys.\n' 14339*cda5da8dSAndroid Build Coastguard Worker '\n' 14340*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.9.\n' 14341*cda5da8dSAndroid Build Coastguard Worker '\n' 14342*cda5da8dSAndroid Build Coastguard Worker ' d |= other\n' 14343*cda5da8dSAndroid Build Coastguard Worker '\n' 14344*cda5da8dSAndroid Build Coastguard Worker ' Update the dictionary *d* with keys and values from ' 14345*cda5da8dSAndroid Build Coastguard Worker '*other*,\n' 14346*cda5da8dSAndroid Build Coastguard Worker ' which may be either a *mapping* or an *iterable* of ' 14347*cda5da8dSAndroid Build Coastguard Worker 'key/value\n' 14348*cda5da8dSAndroid Build Coastguard Worker ' pairs. The values of *other* take priority when *d* ' 14349*cda5da8dSAndroid Build Coastguard Worker 'and *other*\n' 14350*cda5da8dSAndroid Build Coastguard Worker ' share keys.\n' 14351*cda5da8dSAndroid Build Coastguard Worker '\n' 14352*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.9.\n' 14353*cda5da8dSAndroid Build Coastguard Worker '\n' 14354*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries compare equal if and only if they have the ' 14355*cda5da8dSAndroid Build Coastguard Worker 'same "(key,\n' 14356*cda5da8dSAndroid Build Coastguard Worker ' value)" pairs (regardless of ordering). Order comparisons ' 14357*cda5da8dSAndroid Build Coastguard Worker '(‘<’,\n' 14358*cda5da8dSAndroid Build Coastguard Worker ' ‘<=’, ‘>=’, ‘>’) raise "TypeError".\n' 14359*cda5da8dSAndroid Build Coastguard Worker '\n' 14360*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries preserve insertion order. Note that ' 14361*cda5da8dSAndroid Build Coastguard Worker 'updating a key\n' 14362*cda5da8dSAndroid Build Coastguard Worker ' does not affect the order. Keys added after deletion are ' 14363*cda5da8dSAndroid Build Coastguard Worker 'inserted\n' 14364*cda5da8dSAndroid Build Coastguard Worker ' at the end.\n' 14365*cda5da8dSAndroid Build Coastguard Worker '\n' 14366*cda5da8dSAndroid Build Coastguard Worker ' >>> d = {"one": 1, "two": 2, "three": 3, "four": 4}\n' 14367*cda5da8dSAndroid Build Coastguard Worker ' >>> d\n' 14368*cda5da8dSAndroid Build Coastguard Worker " {'one': 1, 'two': 2, 'three': 3, 'four': 4}\n" 14369*cda5da8dSAndroid Build Coastguard Worker ' >>> list(d)\n' 14370*cda5da8dSAndroid Build Coastguard Worker " ['one', 'two', 'three', 'four']\n" 14371*cda5da8dSAndroid Build Coastguard Worker ' >>> list(d.values())\n' 14372*cda5da8dSAndroid Build Coastguard Worker ' [1, 2, 3, 4]\n' 14373*cda5da8dSAndroid Build Coastguard Worker ' >>> d["one"] = 42\n' 14374*cda5da8dSAndroid Build Coastguard Worker ' >>> d\n' 14375*cda5da8dSAndroid Build Coastguard Worker " {'one': 42, 'two': 2, 'three': 3, 'four': 4}\n" 14376*cda5da8dSAndroid Build Coastguard Worker ' >>> del d["two"]\n' 14377*cda5da8dSAndroid Build Coastguard Worker ' >>> d["two"] = None\n' 14378*cda5da8dSAndroid Build Coastguard Worker ' >>> d\n' 14379*cda5da8dSAndroid Build Coastguard Worker " {'one': 42, 'three': 3, 'four': 4, 'two': None}\n" 14380*cda5da8dSAndroid Build Coastguard Worker '\n' 14381*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: Dictionary order is guaranteed to ' 14382*cda5da8dSAndroid Build Coastguard Worker 'be\n' 14383*cda5da8dSAndroid Build Coastguard Worker ' insertion order. This behavior was an implementation ' 14384*cda5da8dSAndroid Build Coastguard Worker 'detail of\n' 14385*cda5da8dSAndroid Build Coastguard Worker ' CPython from 3.6.\n' 14386*cda5da8dSAndroid Build Coastguard Worker '\n' 14387*cda5da8dSAndroid Build Coastguard Worker ' Dictionaries and dictionary views are reversible.\n' 14388*cda5da8dSAndroid Build Coastguard Worker '\n' 14389*cda5da8dSAndroid Build Coastguard Worker ' >>> d = {"one": 1, "two": 2, "three": 3, "four": 4}\n' 14390*cda5da8dSAndroid Build Coastguard Worker ' >>> d\n' 14391*cda5da8dSAndroid Build Coastguard Worker " {'one': 1, 'two': 2, 'three': 3, 'four': 4}\n" 14392*cda5da8dSAndroid Build Coastguard Worker ' >>> list(reversed(d))\n' 14393*cda5da8dSAndroid Build Coastguard Worker " ['four', 'three', 'two', 'one']\n" 14394*cda5da8dSAndroid Build Coastguard Worker ' >>> list(reversed(d.values()))\n' 14395*cda5da8dSAndroid Build Coastguard Worker ' [4, 3, 2, 1]\n' 14396*cda5da8dSAndroid Build Coastguard Worker ' >>> list(reversed(d.items()))\n' 14397*cda5da8dSAndroid Build Coastguard Worker " [('four', 4), ('three', 3), ('two', 2), ('one', 1)]\n" 14398*cda5da8dSAndroid Build Coastguard Worker '\n' 14399*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.8: Dictionaries are now reversible.\n' 14400*cda5da8dSAndroid Build Coastguard Worker '\n' 14401*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 14402*cda5da8dSAndroid Build Coastguard Worker '\n' 14403*cda5da8dSAndroid Build Coastguard Worker ' "types.MappingProxyType" can be used to create a read-only ' 14404*cda5da8dSAndroid Build Coastguard Worker 'view of a\n' 14405*cda5da8dSAndroid Build Coastguard Worker ' "dict".\n' 14406*cda5da8dSAndroid Build Coastguard Worker '\n' 14407*cda5da8dSAndroid Build Coastguard Worker '\n' 14408*cda5da8dSAndroid Build Coastguard Worker 'Dictionary view objects\n' 14409*cda5da8dSAndroid Build Coastguard Worker '=======================\n' 14410*cda5da8dSAndroid Build Coastguard Worker '\n' 14411*cda5da8dSAndroid Build Coastguard Worker 'The objects returned by "dict.keys()", "dict.values()" and\n' 14412*cda5da8dSAndroid Build Coastguard Worker '"dict.items()" are *view objects*. They provide a dynamic ' 14413*cda5da8dSAndroid Build Coastguard Worker 'view on the\n' 14414*cda5da8dSAndroid Build Coastguard Worker 'dictionary’s entries, which means that when the dictionary ' 14415*cda5da8dSAndroid Build Coastguard Worker 'changes,\n' 14416*cda5da8dSAndroid Build Coastguard Worker 'the view reflects these changes.\n' 14417*cda5da8dSAndroid Build Coastguard Worker '\n' 14418*cda5da8dSAndroid Build Coastguard Worker 'Dictionary views can be iterated over to yield their ' 14419*cda5da8dSAndroid Build Coastguard Worker 'respective data,\n' 14420*cda5da8dSAndroid Build Coastguard Worker 'and support membership tests:\n' 14421*cda5da8dSAndroid Build Coastguard Worker '\n' 14422*cda5da8dSAndroid Build Coastguard Worker 'len(dictview)\n' 14423*cda5da8dSAndroid Build Coastguard Worker '\n' 14424*cda5da8dSAndroid Build Coastguard Worker ' Return the number of entries in the dictionary.\n' 14425*cda5da8dSAndroid Build Coastguard Worker '\n' 14426*cda5da8dSAndroid Build Coastguard Worker 'iter(dictview)\n' 14427*cda5da8dSAndroid Build Coastguard Worker '\n' 14428*cda5da8dSAndroid Build Coastguard Worker ' Return an iterator over the keys, values or items ' 14429*cda5da8dSAndroid Build Coastguard Worker '(represented as\n' 14430*cda5da8dSAndroid Build Coastguard Worker ' tuples of "(key, value)") in the dictionary.\n' 14431*cda5da8dSAndroid Build Coastguard Worker '\n' 14432*cda5da8dSAndroid Build Coastguard Worker ' Keys and values are iterated over in insertion order. ' 14433*cda5da8dSAndroid Build Coastguard Worker 'This allows\n' 14434*cda5da8dSAndroid Build Coastguard Worker ' the creation of "(value, key)" pairs using "zip()": ' 14435*cda5da8dSAndroid Build Coastguard Worker '"pairs =\n' 14436*cda5da8dSAndroid Build Coastguard Worker ' zip(d.values(), d.keys())". Another way to create the ' 14437*cda5da8dSAndroid Build Coastguard Worker 'same list is\n' 14438*cda5da8dSAndroid Build Coastguard Worker ' "pairs = [(v, k) for (k, v) in d.items()]".\n' 14439*cda5da8dSAndroid Build Coastguard Worker '\n' 14440*cda5da8dSAndroid Build Coastguard Worker ' Iterating views while adding or deleting entries in the ' 14441*cda5da8dSAndroid Build Coastguard Worker 'dictionary\n' 14442*cda5da8dSAndroid Build Coastguard Worker ' may raise a "RuntimeError" or fail to iterate over all ' 14443*cda5da8dSAndroid Build Coastguard Worker 'entries.\n' 14444*cda5da8dSAndroid Build Coastguard Worker '\n' 14445*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.7: Dictionary order is guaranteed to ' 14446*cda5da8dSAndroid Build Coastguard Worker 'be\n' 14447*cda5da8dSAndroid Build Coastguard Worker ' insertion order.\n' 14448*cda5da8dSAndroid Build Coastguard Worker '\n' 14449*cda5da8dSAndroid Build Coastguard Worker 'x in dictview\n' 14450*cda5da8dSAndroid Build Coastguard Worker '\n' 14451*cda5da8dSAndroid Build Coastguard Worker ' Return "True" if *x* is in the underlying dictionary’s ' 14452*cda5da8dSAndroid Build Coastguard Worker 'keys, values\n' 14453*cda5da8dSAndroid Build Coastguard Worker ' or items (in the latter case, *x* should be a "(key, ' 14454*cda5da8dSAndroid Build Coastguard Worker 'value)"\n' 14455*cda5da8dSAndroid Build Coastguard Worker ' tuple).\n' 14456*cda5da8dSAndroid Build Coastguard Worker '\n' 14457*cda5da8dSAndroid Build Coastguard Worker 'reversed(dictview)\n' 14458*cda5da8dSAndroid Build Coastguard Worker '\n' 14459*cda5da8dSAndroid Build Coastguard Worker ' Return a reverse iterator over the keys, values or items ' 14460*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 14461*cda5da8dSAndroid Build Coastguard Worker ' dictionary. The view will be iterated in reverse order of ' 14462*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14463*cda5da8dSAndroid Build Coastguard Worker ' insertion.\n' 14464*cda5da8dSAndroid Build Coastguard Worker '\n' 14465*cda5da8dSAndroid Build Coastguard Worker ' Changed in version 3.8: Dictionary views are now ' 14466*cda5da8dSAndroid Build Coastguard Worker 'reversible.\n' 14467*cda5da8dSAndroid Build Coastguard Worker '\n' 14468*cda5da8dSAndroid Build Coastguard Worker 'dictview.mapping\n' 14469*cda5da8dSAndroid Build Coastguard Worker '\n' 14470*cda5da8dSAndroid Build Coastguard Worker ' Return a "types.MappingProxyType" that wraps the ' 14471*cda5da8dSAndroid Build Coastguard Worker 'original\n' 14472*cda5da8dSAndroid Build Coastguard Worker ' dictionary to which the view refers.\n' 14473*cda5da8dSAndroid Build Coastguard Worker '\n' 14474*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.10.\n' 14475*cda5da8dSAndroid Build Coastguard Worker '\n' 14476*cda5da8dSAndroid Build Coastguard Worker 'Keys views are set-like since their entries are unique and ' 14477*cda5da8dSAndroid Build Coastguard Worker '*hashable*.\n' 14478*cda5da8dSAndroid Build Coastguard Worker 'If all values are hashable, so that "(key, value)" pairs are ' 14479*cda5da8dSAndroid Build Coastguard Worker 'unique\n' 14480*cda5da8dSAndroid Build Coastguard Worker 'and hashable, then the items view is also set-like. (Values ' 14481*cda5da8dSAndroid Build Coastguard Worker 'views are\n' 14482*cda5da8dSAndroid Build Coastguard Worker 'not treated as set-like since the entries are generally not ' 14483*cda5da8dSAndroid Build Coastguard Worker 'unique.)\n' 14484*cda5da8dSAndroid Build Coastguard Worker 'For set-like views, all of the operations defined for the ' 14485*cda5da8dSAndroid Build Coastguard Worker 'abstract\n' 14486*cda5da8dSAndroid Build Coastguard Worker 'base class "collections.abc.Set" are available (for example, ' 14487*cda5da8dSAndroid Build Coastguard Worker '"==",\n' 14488*cda5da8dSAndroid Build Coastguard Worker '"<", or "^").\n' 14489*cda5da8dSAndroid Build Coastguard Worker '\n' 14490*cda5da8dSAndroid Build Coastguard Worker 'An example of dictionary view usage:\n' 14491*cda5da8dSAndroid Build Coastguard Worker '\n' 14492*cda5da8dSAndroid Build Coastguard Worker " >>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, " 14493*cda5da8dSAndroid Build Coastguard Worker "'spam': 500}\n" 14494*cda5da8dSAndroid Build Coastguard Worker ' >>> keys = dishes.keys()\n' 14495*cda5da8dSAndroid Build Coastguard Worker ' >>> values = dishes.values()\n' 14496*cda5da8dSAndroid Build Coastguard Worker '\n' 14497*cda5da8dSAndroid Build Coastguard Worker ' >>> # iteration\n' 14498*cda5da8dSAndroid Build Coastguard Worker ' >>> n = 0\n' 14499*cda5da8dSAndroid Build Coastguard Worker ' >>> for val in values:\n' 14500*cda5da8dSAndroid Build Coastguard Worker ' ... n += val\n' 14501*cda5da8dSAndroid Build Coastguard Worker ' >>> print(n)\n' 14502*cda5da8dSAndroid Build Coastguard Worker ' 504\n' 14503*cda5da8dSAndroid Build Coastguard Worker '\n' 14504*cda5da8dSAndroid Build Coastguard Worker ' >>> # keys and values are iterated over in the same order ' 14505*cda5da8dSAndroid Build Coastguard Worker '(insertion order)\n' 14506*cda5da8dSAndroid Build Coastguard Worker ' >>> list(keys)\n' 14507*cda5da8dSAndroid Build Coastguard Worker " ['eggs', 'sausage', 'bacon', 'spam']\n" 14508*cda5da8dSAndroid Build Coastguard Worker ' >>> list(values)\n' 14509*cda5da8dSAndroid Build Coastguard Worker ' [2, 1, 1, 500]\n' 14510*cda5da8dSAndroid Build Coastguard Worker '\n' 14511*cda5da8dSAndroid Build Coastguard Worker ' >>> # view objects are dynamic and reflect dict changes\n' 14512*cda5da8dSAndroid Build Coastguard Worker " >>> del dishes['eggs']\n" 14513*cda5da8dSAndroid Build Coastguard Worker " >>> del dishes['sausage']\n" 14514*cda5da8dSAndroid Build Coastguard Worker ' >>> list(keys)\n' 14515*cda5da8dSAndroid Build Coastguard Worker " ['bacon', 'spam']\n" 14516*cda5da8dSAndroid Build Coastguard Worker '\n' 14517*cda5da8dSAndroid Build Coastguard Worker ' >>> # set operations\n' 14518*cda5da8dSAndroid Build Coastguard Worker " >>> keys & {'eggs', 'bacon', 'salad'}\n" 14519*cda5da8dSAndroid Build Coastguard Worker " {'bacon'}\n" 14520*cda5da8dSAndroid Build Coastguard Worker " >>> keys ^ {'sausage', 'juice'}\n" 14521*cda5da8dSAndroid Build Coastguard Worker " {'juice', 'sausage', 'bacon', 'spam'}\n" 14522*cda5da8dSAndroid Build Coastguard Worker '\n' 14523*cda5da8dSAndroid Build Coastguard Worker ' >>> # get back a read-only proxy for the original ' 14524*cda5da8dSAndroid Build Coastguard Worker 'dictionary\n' 14525*cda5da8dSAndroid Build Coastguard Worker ' >>> values.mapping\n' 14526*cda5da8dSAndroid Build Coastguard Worker " mappingproxy({'bacon': 1, 'spam': 500})\n" 14527*cda5da8dSAndroid Build Coastguard Worker " >>> values.mapping['spam']\n" 14528*cda5da8dSAndroid Build Coastguard Worker ' 500\n', 14529*cda5da8dSAndroid Build Coastguard Worker 'typesmethods': 'Methods\n' 14530*cda5da8dSAndroid Build Coastguard Worker '*******\n' 14531*cda5da8dSAndroid Build Coastguard Worker '\n' 14532*cda5da8dSAndroid Build Coastguard Worker 'Methods are functions that are called using the attribute ' 14533*cda5da8dSAndroid Build Coastguard Worker 'notation.\n' 14534*cda5da8dSAndroid Build Coastguard Worker 'There are two flavors: built-in methods (such as "append()" ' 14535*cda5da8dSAndroid Build Coastguard Worker 'on lists)\n' 14536*cda5da8dSAndroid Build Coastguard Worker 'and class instance methods. Built-in methods are described ' 14537*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 14538*cda5da8dSAndroid Build Coastguard Worker 'types that support them.\n' 14539*cda5da8dSAndroid Build Coastguard Worker '\n' 14540*cda5da8dSAndroid Build Coastguard Worker 'If you access a method (a function defined in a class ' 14541*cda5da8dSAndroid Build Coastguard Worker 'namespace)\n' 14542*cda5da8dSAndroid Build Coastguard Worker 'through an instance, you get a special object: a *bound ' 14543*cda5da8dSAndroid Build Coastguard Worker 'method* (also\n' 14544*cda5da8dSAndroid Build Coastguard Worker 'called *instance method*) object. When called, it will add ' 14545*cda5da8dSAndroid Build Coastguard Worker 'the "self"\n' 14546*cda5da8dSAndroid Build Coastguard Worker 'argument to the argument list. Bound methods have two ' 14547*cda5da8dSAndroid Build Coastguard Worker 'special read-\n' 14548*cda5da8dSAndroid Build Coastguard Worker 'only attributes: "m.__self__" is the object on which the ' 14549*cda5da8dSAndroid Build Coastguard Worker 'method\n' 14550*cda5da8dSAndroid Build Coastguard Worker 'operates, and "m.__func__" is the function implementing the ' 14551*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 14552*cda5da8dSAndroid Build Coastguard Worker 'Calling "m(arg-1, arg-2, ..., arg-n)" is completely ' 14553*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 14554*cda5da8dSAndroid Build Coastguard Worker 'calling "m.__func__(m.__self__, arg-1, arg-2, ..., arg-n)".\n' 14555*cda5da8dSAndroid Build Coastguard Worker '\n' 14556*cda5da8dSAndroid Build Coastguard Worker 'Like function objects, bound method objects support getting ' 14557*cda5da8dSAndroid Build Coastguard Worker 'arbitrary\n' 14558*cda5da8dSAndroid Build Coastguard Worker 'attributes. However, since method attributes are actually ' 14559*cda5da8dSAndroid Build Coastguard Worker 'stored on\n' 14560*cda5da8dSAndroid Build Coastguard Worker 'the underlying function object ("meth.__func__"), setting ' 14561*cda5da8dSAndroid Build Coastguard Worker 'method\n' 14562*cda5da8dSAndroid Build Coastguard Worker 'attributes on bound methods is disallowed. Attempting to ' 14563*cda5da8dSAndroid Build Coastguard Worker 'set an\n' 14564*cda5da8dSAndroid Build Coastguard Worker 'attribute on a method results in an "AttributeError" being ' 14565*cda5da8dSAndroid Build Coastguard Worker 'raised. In\n' 14566*cda5da8dSAndroid Build Coastguard Worker 'order to set a method attribute, you need to explicitly set ' 14567*cda5da8dSAndroid Build Coastguard Worker 'it on the\n' 14568*cda5da8dSAndroid Build Coastguard Worker 'underlying function object:\n' 14569*cda5da8dSAndroid Build Coastguard Worker '\n' 14570*cda5da8dSAndroid Build Coastguard Worker ' >>> class C:\n' 14571*cda5da8dSAndroid Build Coastguard Worker ' ... def method(self):\n' 14572*cda5da8dSAndroid Build Coastguard Worker ' ... pass\n' 14573*cda5da8dSAndroid Build Coastguard Worker ' ...\n' 14574*cda5da8dSAndroid Build Coastguard Worker ' >>> c = C()\n' 14575*cda5da8dSAndroid Build Coastguard Worker " >>> c.method.whoami = 'my name is method' # can't set on " 14576*cda5da8dSAndroid Build Coastguard Worker 'the method\n' 14577*cda5da8dSAndroid Build Coastguard Worker ' Traceback (most recent call last):\n' 14578*cda5da8dSAndroid Build Coastguard Worker ' File "<stdin>", line 1, in <module>\n' 14579*cda5da8dSAndroid Build Coastguard Worker " AttributeError: 'method' object has no attribute " 14580*cda5da8dSAndroid Build Coastguard Worker "'whoami'\n" 14581*cda5da8dSAndroid Build Coastguard Worker " >>> c.method.__func__.whoami = 'my name is method'\n" 14582*cda5da8dSAndroid Build Coastguard Worker ' >>> c.method.whoami\n' 14583*cda5da8dSAndroid Build Coastguard Worker " 'my name is method'\n" 14584*cda5da8dSAndroid Build Coastguard Worker '\n' 14585*cda5da8dSAndroid Build Coastguard Worker 'See The standard type hierarchy for more information.\n', 14586*cda5da8dSAndroid Build Coastguard Worker 'typesmodules': 'Modules\n' 14587*cda5da8dSAndroid Build Coastguard Worker '*******\n' 14588*cda5da8dSAndroid Build Coastguard Worker '\n' 14589*cda5da8dSAndroid Build Coastguard Worker 'The only special operation on a module is attribute access: ' 14590*cda5da8dSAndroid Build Coastguard Worker '"m.name",\n' 14591*cda5da8dSAndroid Build Coastguard Worker 'where *m* is a module and *name* accesses a name defined in ' 14592*cda5da8dSAndroid Build Coastguard Worker '*m*’s\n' 14593*cda5da8dSAndroid Build Coastguard Worker 'symbol table. Module attributes can be assigned to. (Note ' 14594*cda5da8dSAndroid Build Coastguard Worker 'that the\n' 14595*cda5da8dSAndroid Build Coastguard Worker '"import" statement is not, strictly speaking, an operation ' 14596*cda5da8dSAndroid Build Coastguard Worker 'on a module\n' 14597*cda5da8dSAndroid Build Coastguard Worker 'object; "import foo" does not require a module object named ' 14598*cda5da8dSAndroid Build Coastguard Worker '*foo* to\n' 14599*cda5da8dSAndroid Build Coastguard Worker 'exist, rather it requires an (external) *definition* for a ' 14600*cda5da8dSAndroid Build Coastguard Worker 'module\n' 14601*cda5da8dSAndroid Build Coastguard Worker 'named *foo* somewhere.)\n' 14602*cda5da8dSAndroid Build Coastguard Worker '\n' 14603*cda5da8dSAndroid Build Coastguard Worker 'A special attribute of every module is "__dict__". This is ' 14604*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14605*cda5da8dSAndroid Build Coastguard Worker 'dictionary containing the module’s symbol table. Modifying ' 14606*cda5da8dSAndroid Build Coastguard Worker 'this\n' 14607*cda5da8dSAndroid Build Coastguard Worker 'dictionary will actually change the module’s symbol table, ' 14608*cda5da8dSAndroid Build Coastguard Worker 'but direct\n' 14609*cda5da8dSAndroid Build Coastguard Worker 'assignment to the "__dict__" attribute is not possible (you ' 14610*cda5da8dSAndroid Build Coastguard Worker 'can write\n' 14611*cda5da8dSAndroid Build Coastguard Worker '"m.__dict__[\'a\'] = 1", which defines "m.a" to be "1", but ' 14612*cda5da8dSAndroid Build Coastguard Worker 'you can’t\n' 14613*cda5da8dSAndroid Build Coastguard Worker 'write "m.__dict__ = {}"). Modifying "__dict__" directly is ' 14614*cda5da8dSAndroid Build Coastguard Worker 'not\n' 14615*cda5da8dSAndroid Build Coastguard Worker 'recommended.\n' 14616*cda5da8dSAndroid Build Coastguard Worker '\n' 14617*cda5da8dSAndroid Build Coastguard Worker 'Modules built into the interpreter are written like this: ' 14618*cda5da8dSAndroid Build Coastguard Worker '"<module\n' 14619*cda5da8dSAndroid Build Coastguard Worker '\'sys\' (built-in)>". If loaded from a file, they are ' 14620*cda5da8dSAndroid Build Coastguard Worker 'written as\n' 14621*cda5da8dSAndroid Build Coastguard Worker '"<module \'os\' from ' 14622*cda5da8dSAndroid Build Coastguard Worker '\'/usr/local/lib/pythonX.Y/os.pyc\'>".\n', 14623*cda5da8dSAndroid Build Coastguard Worker 'typesseq': 'Sequence Types — "list", "tuple", "range"\n' 14624*cda5da8dSAndroid Build Coastguard Worker '*****************************************\n' 14625*cda5da8dSAndroid Build Coastguard Worker '\n' 14626*cda5da8dSAndroid Build Coastguard Worker 'There are three basic sequence types: lists, tuples, and range\n' 14627*cda5da8dSAndroid Build Coastguard Worker 'objects. Additional sequence types tailored for processing of ' 14628*cda5da8dSAndroid Build Coastguard Worker 'binary\n' 14629*cda5da8dSAndroid Build Coastguard Worker 'data and text strings are described in dedicated sections.\n' 14630*cda5da8dSAndroid Build Coastguard Worker '\n' 14631*cda5da8dSAndroid Build Coastguard Worker '\n' 14632*cda5da8dSAndroid Build Coastguard Worker 'Common Sequence Operations\n' 14633*cda5da8dSAndroid Build Coastguard Worker '==========================\n' 14634*cda5da8dSAndroid Build Coastguard Worker '\n' 14635*cda5da8dSAndroid Build Coastguard Worker 'The operations in the following table are supported by most ' 14636*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 14637*cda5da8dSAndroid Build Coastguard Worker 'types, both mutable and immutable. The ' 14638*cda5da8dSAndroid Build Coastguard Worker '"collections.abc.Sequence" ABC\n' 14639*cda5da8dSAndroid Build Coastguard Worker 'is provided to make it easier to correctly implement these ' 14640*cda5da8dSAndroid Build Coastguard Worker 'operations\n' 14641*cda5da8dSAndroid Build Coastguard Worker 'on custom sequence types.\n' 14642*cda5da8dSAndroid Build Coastguard Worker '\n' 14643*cda5da8dSAndroid Build Coastguard Worker 'This table lists the sequence operations sorted in ascending ' 14644*cda5da8dSAndroid Build Coastguard Worker 'priority.\n' 14645*cda5da8dSAndroid Build Coastguard Worker 'In the table, *s* and *t* are sequences of the same type, *n*, ' 14646*cda5da8dSAndroid Build Coastguard Worker '*i*,\n' 14647*cda5da8dSAndroid Build Coastguard Worker '*j* and *k* are integers and *x* is an arbitrary object that ' 14648*cda5da8dSAndroid Build Coastguard Worker 'meets any\n' 14649*cda5da8dSAndroid Build Coastguard Worker 'type and value restrictions imposed by *s*.\n' 14650*cda5da8dSAndroid Build Coastguard Worker '\n' 14651*cda5da8dSAndroid Build Coastguard Worker 'The "in" and "not in" operations have the same priorities as ' 14652*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14653*cda5da8dSAndroid Build Coastguard Worker 'comparison operations. The "+" (concatenation) and "*" ' 14654*cda5da8dSAndroid Build Coastguard Worker '(repetition)\n' 14655*cda5da8dSAndroid Build Coastguard Worker 'operations have the same priority as the corresponding numeric\n' 14656*cda5da8dSAndroid Build Coastguard Worker 'operations. [3]\n' 14657*cda5da8dSAndroid Build Coastguard Worker '\n' 14658*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14659*cda5da8dSAndroid Build Coastguard Worker '| Operation | Result ' 14660*cda5da8dSAndroid Build Coastguard Worker '| Notes |\n' 14661*cda5da8dSAndroid Build Coastguard Worker '|============================|==================================|============|\n' 14662*cda5da8dSAndroid Build Coastguard Worker '| "x in s" | "True" if an item of *s* is ' 14663*cda5da8dSAndroid Build Coastguard Worker '| (1) |\n' 14664*cda5da8dSAndroid Build Coastguard Worker '| | equal to *x*, else "False" ' 14665*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14666*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14667*cda5da8dSAndroid Build Coastguard Worker '| "x not in s" | "False" if an item of *s* is ' 14668*cda5da8dSAndroid Build Coastguard Worker '| (1) |\n' 14669*cda5da8dSAndroid Build Coastguard Worker '| | equal to *x*, else "True" ' 14670*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14671*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14672*cda5da8dSAndroid Build Coastguard Worker '| "s + t" | the concatenation of *s* and *t* ' 14673*cda5da8dSAndroid Build Coastguard Worker '| (6)(7) |\n' 14674*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14675*cda5da8dSAndroid Build Coastguard Worker '| "s * n" or "n * s" | equivalent to adding *s* to ' 14676*cda5da8dSAndroid Build Coastguard Worker '| (2)(7) |\n' 14677*cda5da8dSAndroid Build Coastguard Worker '| | itself *n* times ' 14678*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14679*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14680*cda5da8dSAndroid Build Coastguard Worker '| "s[i]" | *i*th item of *s*, origin 0 ' 14681*cda5da8dSAndroid Build Coastguard Worker '| (3) |\n' 14682*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14683*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j]" | slice of *s* from *i* to *j* ' 14684*cda5da8dSAndroid Build Coastguard Worker '| (3)(4) |\n' 14685*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14686*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j:k]" | slice of *s* from *i* to *j* ' 14687*cda5da8dSAndroid Build Coastguard Worker '| (3)(5) |\n' 14688*cda5da8dSAndroid Build Coastguard Worker '| | with step *k* ' 14689*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14690*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14691*cda5da8dSAndroid Build Coastguard Worker '| "len(s)" | length of *s* ' 14692*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14693*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14694*cda5da8dSAndroid Build Coastguard Worker '| "min(s)" | smallest item of *s* ' 14695*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14696*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14697*cda5da8dSAndroid Build Coastguard Worker '| "max(s)" | largest item of *s* ' 14698*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14699*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14700*cda5da8dSAndroid Build Coastguard Worker '| "s.index(x[, i[, j]])" | index of the first occurrence of ' 14701*cda5da8dSAndroid Build Coastguard Worker '| (8) |\n' 14702*cda5da8dSAndroid Build Coastguard Worker '| | *x* in *s* (at or after index ' 14703*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14704*cda5da8dSAndroid Build Coastguard Worker '| | *i* and before index *j*) ' 14705*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14706*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14707*cda5da8dSAndroid Build Coastguard Worker '| "s.count(x)" | total number of occurrences of ' 14708*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14709*cda5da8dSAndroid Build Coastguard Worker '| | *x* in *s* ' 14710*cda5da8dSAndroid Build Coastguard Worker '| |\n' 14711*cda5da8dSAndroid Build Coastguard Worker '+----------------------------+----------------------------------+------------+\n' 14712*cda5da8dSAndroid Build Coastguard Worker '\n' 14713*cda5da8dSAndroid Build Coastguard Worker 'Sequences of the same type also support comparisons. In ' 14714*cda5da8dSAndroid Build Coastguard Worker 'particular,\n' 14715*cda5da8dSAndroid Build Coastguard Worker 'tuples and lists are compared lexicographically by comparing\n' 14716*cda5da8dSAndroid Build Coastguard Worker 'corresponding elements. This means that to compare equal, every\n' 14717*cda5da8dSAndroid Build Coastguard Worker 'element must compare equal and the two sequences must be of the ' 14718*cda5da8dSAndroid Build Coastguard Worker 'same\n' 14719*cda5da8dSAndroid Build Coastguard Worker 'type and have the same length. (For full details see ' 14720*cda5da8dSAndroid Build Coastguard Worker 'Comparisons in\n' 14721*cda5da8dSAndroid Build Coastguard Worker 'the language reference.)\n' 14722*cda5da8dSAndroid Build Coastguard Worker '\n' 14723*cda5da8dSAndroid Build Coastguard Worker 'Forward and reversed iterators over mutable sequences access ' 14724*cda5da8dSAndroid Build Coastguard Worker 'values\n' 14725*cda5da8dSAndroid Build Coastguard Worker 'using an index. That index will continue to march forward (or\n' 14726*cda5da8dSAndroid Build Coastguard Worker 'backward) even if the underlying sequence is mutated. The ' 14727*cda5da8dSAndroid Build Coastguard Worker 'iterator\n' 14728*cda5da8dSAndroid Build Coastguard Worker 'terminates only when an "IndexError" or a "StopIteration" is\n' 14729*cda5da8dSAndroid Build Coastguard Worker 'encountered (or when the index drops below zero).\n' 14730*cda5da8dSAndroid Build Coastguard Worker '\n' 14731*cda5da8dSAndroid Build Coastguard Worker 'Notes:\n' 14732*cda5da8dSAndroid Build Coastguard Worker '\n' 14733*cda5da8dSAndroid Build Coastguard Worker '1. While the "in" and "not in" operations are used only for ' 14734*cda5da8dSAndroid Build Coastguard Worker 'simple\n' 14735*cda5da8dSAndroid Build Coastguard Worker ' containment testing in the general case, some specialised ' 14736*cda5da8dSAndroid Build Coastguard Worker 'sequences\n' 14737*cda5da8dSAndroid Build Coastguard Worker ' (such as "str", "bytes" and "bytearray") also use them for\n' 14738*cda5da8dSAndroid Build Coastguard Worker ' subsequence testing:\n' 14739*cda5da8dSAndroid Build Coastguard Worker '\n' 14740*cda5da8dSAndroid Build Coastguard Worker ' >>> "gg" in "eggs"\n' 14741*cda5da8dSAndroid Build Coastguard Worker ' True\n' 14742*cda5da8dSAndroid Build Coastguard Worker '\n' 14743*cda5da8dSAndroid Build Coastguard Worker '2. Values of *n* less than "0" are treated as "0" (which yields ' 14744*cda5da8dSAndroid Build Coastguard Worker 'an\n' 14745*cda5da8dSAndroid Build Coastguard Worker ' empty sequence of the same type as *s*). Note that items in ' 14746*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14747*cda5da8dSAndroid Build Coastguard Worker ' sequence *s* are not copied; they are referenced multiple ' 14748*cda5da8dSAndroid Build Coastguard Worker 'times.\n' 14749*cda5da8dSAndroid Build Coastguard Worker ' This often haunts new Python programmers; consider:\n' 14750*cda5da8dSAndroid Build Coastguard Worker '\n' 14751*cda5da8dSAndroid Build Coastguard Worker ' >>> lists = [[]] * 3\n' 14752*cda5da8dSAndroid Build Coastguard Worker ' >>> lists\n' 14753*cda5da8dSAndroid Build Coastguard Worker ' [[], [], []]\n' 14754*cda5da8dSAndroid Build Coastguard Worker ' >>> lists[0].append(3)\n' 14755*cda5da8dSAndroid Build Coastguard Worker ' >>> lists\n' 14756*cda5da8dSAndroid Build Coastguard Worker ' [[3], [3], [3]]\n' 14757*cda5da8dSAndroid Build Coastguard Worker '\n' 14758*cda5da8dSAndroid Build Coastguard Worker ' What has happened is that "[[]]" is a one-element list ' 14759*cda5da8dSAndroid Build Coastguard Worker 'containing\n' 14760*cda5da8dSAndroid Build Coastguard Worker ' an empty list, so all three elements of "[[]] * 3" are ' 14761*cda5da8dSAndroid Build Coastguard Worker 'references\n' 14762*cda5da8dSAndroid Build Coastguard Worker ' to this single empty list. Modifying any of the elements of\n' 14763*cda5da8dSAndroid Build Coastguard Worker ' "lists" modifies this single list. You can create a list of\n' 14764*cda5da8dSAndroid Build Coastguard Worker ' different lists this way:\n' 14765*cda5da8dSAndroid Build Coastguard Worker '\n' 14766*cda5da8dSAndroid Build Coastguard Worker ' >>> lists = [[] for i in range(3)]\n' 14767*cda5da8dSAndroid Build Coastguard Worker ' >>> lists[0].append(3)\n' 14768*cda5da8dSAndroid Build Coastguard Worker ' >>> lists[1].append(5)\n' 14769*cda5da8dSAndroid Build Coastguard Worker ' >>> lists[2].append(7)\n' 14770*cda5da8dSAndroid Build Coastguard Worker ' >>> lists\n' 14771*cda5da8dSAndroid Build Coastguard Worker ' [[3], [5], [7]]\n' 14772*cda5da8dSAndroid Build Coastguard Worker '\n' 14773*cda5da8dSAndroid Build Coastguard Worker ' Further explanation is available in the FAQ entry How do I ' 14774*cda5da8dSAndroid Build Coastguard Worker 'create a\n' 14775*cda5da8dSAndroid Build Coastguard Worker ' multidimensional list?.\n' 14776*cda5da8dSAndroid Build Coastguard Worker '\n' 14777*cda5da8dSAndroid Build Coastguard Worker '3. If *i* or *j* is negative, the index is relative to the end ' 14778*cda5da8dSAndroid Build Coastguard Worker 'of\n' 14779*cda5da8dSAndroid Build Coastguard Worker ' sequence *s*: "len(s) + i" or "len(s) + j" is substituted. ' 14780*cda5da8dSAndroid Build Coastguard Worker 'But\n' 14781*cda5da8dSAndroid Build Coastguard Worker ' note that "-0" is still "0".\n' 14782*cda5da8dSAndroid Build Coastguard Worker '\n' 14783*cda5da8dSAndroid Build Coastguard Worker '4. The slice of *s* from *i* to *j* is defined as the sequence ' 14784*cda5da8dSAndroid Build Coastguard Worker 'of\n' 14785*cda5da8dSAndroid Build Coastguard Worker ' items with index *k* such that "i <= k < j". If *i* or *j* ' 14786*cda5da8dSAndroid Build Coastguard Worker 'is\n' 14787*cda5da8dSAndroid Build Coastguard Worker ' greater than "len(s)", use "len(s)". If *i* is omitted or ' 14788*cda5da8dSAndroid Build Coastguard Worker '"None",\n' 14789*cda5da8dSAndroid Build Coastguard Worker ' use "0". If *j* is omitted or "None", use "len(s)". If *i* ' 14790*cda5da8dSAndroid Build Coastguard Worker 'is\n' 14791*cda5da8dSAndroid Build Coastguard Worker ' greater than or equal to *j*, the slice is empty.\n' 14792*cda5da8dSAndroid Build Coastguard Worker '\n' 14793*cda5da8dSAndroid Build Coastguard Worker '5. The slice of *s* from *i* to *j* with step *k* is defined as ' 14794*cda5da8dSAndroid Build Coastguard Worker 'the\n' 14795*cda5da8dSAndroid Build Coastguard Worker ' sequence of items with index "x = i + n*k" such that "0 <= n ' 14796*cda5da8dSAndroid Build Coastguard Worker '<\n' 14797*cda5da8dSAndroid Build Coastguard Worker ' (j-i)/k". In other words, the indices are "i", "i+k", ' 14798*cda5da8dSAndroid Build Coastguard Worker '"i+2*k",\n' 14799*cda5da8dSAndroid Build Coastguard Worker ' "i+3*k" and so on, stopping when *j* is reached (but never\n' 14800*cda5da8dSAndroid Build Coastguard Worker ' including *j*). When *k* is positive, *i* and *j* are ' 14801*cda5da8dSAndroid Build Coastguard Worker 'reduced to\n' 14802*cda5da8dSAndroid Build Coastguard Worker ' "len(s)" if they are greater. When *k* is negative, *i* and ' 14803*cda5da8dSAndroid Build Coastguard Worker '*j* are\n' 14804*cda5da8dSAndroid Build Coastguard Worker ' reduced to "len(s) - 1" if they are greater. If *i* or *j* ' 14805*cda5da8dSAndroid Build Coastguard Worker 'are\n' 14806*cda5da8dSAndroid Build Coastguard Worker ' omitted or "None", they become “end” values (which end ' 14807*cda5da8dSAndroid Build Coastguard Worker 'depends on\n' 14808*cda5da8dSAndroid Build Coastguard Worker ' the sign of *k*). Note, *k* cannot be zero. If *k* is ' 14809*cda5da8dSAndroid Build Coastguard Worker '"None", it\n' 14810*cda5da8dSAndroid Build Coastguard Worker ' is treated like "1".\n' 14811*cda5da8dSAndroid Build Coastguard Worker '\n' 14812*cda5da8dSAndroid Build Coastguard Worker '6. Concatenating immutable sequences always results in a new ' 14813*cda5da8dSAndroid Build Coastguard Worker 'object.\n' 14814*cda5da8dSAndroid Build Coastguard Worker ' This means that building up a sequence by repeated ' 14815*cda5da8dSAndroid Build Coastguard Worker 'concatenation\n' 14816*cda5da8dSAndroid Build Coastguard Worker ' will have a quadratic runtime cost in the total sequence ' 14817*cda5da8dSAndroid Build Coastguard Worker 'length.\n' 14818*cda5da8dSAndroid Build Coastguard Worker ' To get a linear runtime cost, you must switch to one of the\n' 14819*cda5da8dSAndroid Build Coastguard Worker ' alternatives below:\n' 14820*cda5da8dSAndroid Build Coastguard Worker '\n' 14821*cda5da8dSAndroid Build Coastguard Worker ' * if concatenating "str" objects, you can build a list and ' 14822*cda5da8dSAndroid Build Coastguard Worker 'use\n' 14823*cda5da8dSAndroid Build Coastguard Worker ' "str.join()" at the end or else write to an "io.StringIO"\n' 14824*cda5da8dSAndroid Build Coastguard Worker ' instance and retrieve its value when complete\n' 14825*cda5da8dSAndroid Build Coastguard Worker '\n' 14826*cda5da8dSAndroid Build Coastguard Worker ' * if concatenating "bytes" objects, you can similarly use\n' 14827*cda5da8dSAndroid Build Coastguard Worker ' "bytes.join()" or "io.BytesIO", or you can do in-place\n' 14828*cda5da8dSAndroid Build Coastguard Worker ' concatenation with a "bytearray" object. "bytearray" ' 14829*cda5da8dSAndroid Build Coastguard Worker 'objects are\n' 14830*cda5da8dSAndroid Build Coastguard Worker ' mutable and have an efficient overallocation mechanism\n' 14831*cda5da8dSAndroid Build Coastguard Worker '\n' 14832*cda5da8dSAndroid Build Coastguard Worker ' * if concatenating "tuple" objects, extend a "list" instead\n' 14833*cda5da8dSAndroid Build Coastguard Worker '\n' 14834*cda5da8dSAndroid Build Coastguard Worker ' * for other types, investigate the relevant class ' 14835*cda5da8dSAndroid Build Coastguard Worker 'documentation\n' 14836*cda5da8dSAndroid Build Coastguard Worker '\n' 14837*cda5da8dSAndroid Build Coastguard Worker '7. Some sequence types (such as "range") only support item ' 14838*cda5da8dSAndroid Build Coastguard Worker 'sequences\n' 14839*cda5da8dSAndroid Build Coastguard Worker ' that follow specific patterns, and hence don’t support ' 14840*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 14841*cda5da8dSAndroid Build Coastguard Worker ' concatenation or repetition.\n' 14842*cda5da8dSAndroid Build Coastguard Worker '\n' 14843*cda5da8dSAndroid Build Coastguard Worker '8. "index" raises "ValueError" when *x* is not found in *s*. Not ' 14844*cda5da8dSAndroid Build Coastguard Worker 'all\n' 14845*cda5da8dSAndroid Build Coastguard Worker ' implementations support passing the additional arguments *i* ' 14846*cda5da8dSAndroid Build Coastguard Worker 'and\n' 14847*cda5da8dSAndroid Build Coastguard Worker ' *j*. These arguments allow efficient searching of subsections ' 14848*cda5da8dSAndroid Build Coastguard Worker 'of\n' 14849*cda5da8dSAndroid Build Coastguard Worker ' the sequence. Passing the extra arguments is roughly ' 14850*cda5da8dSAndroid Build Coastguard Worker 'equivalent to\n' 14851*cda5da8dSAndroid Build Coastguard Worker ' using "s[i:j].index(x)", only without copying any data and ' 14852*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 14853*cda5da8dSAndroid Build Coastguard Worker ' returned index being relative to the start of the sequence ' 14854*cda5da8dSAndroid Build Coastguard Worker 'rather\n' 14855*cda5da8dSAndroid Build Coastguard Worker ' than the start of the slice.\n' 14856*cda5da8dSAndroid Build Coastguard Worker '\n' 14857*cda5da8dSAndroid Build Coastguard Worker '\n' 14858*cda5da8dSAndroid Build Coastguard Worker 'Immutable Sequence Types\n' 14859*cda5da8dSAndroid Build Coastguard Worker '========================\n' 14860*cda5da8dSAndroid Build Coastguard Worker '\n' 14861*cda5da8dSAndroid Build Coastguard Worker 'The only operation that immutable sequence types generally ' 14862*cda5da8dSAndroid Build Coastguard Worker 'implement\n' 14863*cda5da8dSAndroid Build Coastguard Worker 'that is not also implemented by mutable sequence types is ' 14864*cda5da8dSAndroid Build Coastguard Worker 'support for\n' 14865*cda5da8dSAndroid Build Coastguard Worker 'the "hash()" built-in.\n' 14866*cda5da8dSAndroid Build Coastguard Worker '\n' 14867*cda5da8dSAndroid Build Coastguard Worker 'This support allows immutable sequences, such as "tuple" ' 14868*cda5da8dSAndroid Build Coastguard Worker 'instances, to\n' 14869*cda5da8dSAndroid Build Coastguard Worker 'be used as "dict" keys and stored in "set" and "frozenset" ' 14870*cda5da8dSAndroid Build Coastguard Worker 'instances.\n' 14871*cda5da8dSAndroid Build Coastguard Worker '\n' 14872*cda5da8dSAndroid Build Coastguard Worker 'Attempting to hash an immutable sequence that contains ' 14873*cda5da8dSAndroid Build Coastguard Worker 'unhashable\n' 14874*cda5da8dSAndroid Build Coastguard Worker 'values will result in "TypeError".\n' 14875*cda5da8dSAndroid Build Coastguard Worker '\n' 14876*cda5da8dSAndroid Build Coastguard Worker '\n' 14877*cda5da8dSAndroid Build Coastguard Worker 'Mutable Sequence Types\n' 14878*cda5da8dSAndroid Build Coastguard Worker '======================\n' 14879*cda5da8dSAndroid Build Coastguard Worker '\n' 14880*cda5da8dSAndroid Build Coastguard Worker 'The operations in the following table are defined on mutable ' 14881*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 14882*cda5da8dSAndroid Build Coastguard Worker 'types. The "collections.abc.MutableSequence" ABC is provided to ' 14883*cda5da8dSAndroid Build Coastguard Worker 'make\n' 14884*cda5da8dSAndroid Build Coastguard Worker 'it easier to correctly implement these operations on custom ' 14885*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 14886*cda5da8dSAndroid Build Coastguard Worker 'types.\n' 14887*cda5da8dSAndroid Build Coastguard Worker '\n' 14888*cda5da8dSAndroid Build Coastguard Worker 'In the table *s* is an instance of a mutable sequence type, *t* ' 14889*cda5da8dSAndroid Build Coastguard Worker 'is any\n' 14890*cda5da8dSAndroid Build Coastguard Worker 'iterable object and *x* is an arbitrary object that meets any ' 14891*cda5da8dSAndroid Build Coastguard Worker 'type and\n' 14892*cda5da8dSAndroid Build Coastguard Worker 'value restrictions imposed by *s* (for example, "bytearray" ' 14893*cda5da8dSAndroid Build Coastguard Worker 'only\n' 14894*cda5da8dSAndroid Build Coastguard Worker 'accepts integers that meet the value restriction "0 <= x <= ' 14895*cda5da8dSAndroid Build Coastguard Worker '255").\n' 14896*cda5da8dSAndroid Build Coastguard Worker '\n' 14897*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14898*cda5da8dSAndroid Build Coastguard Worker '| Operation | ' 14899*cda5da8dSAndroid Build Coastguard Worker 'Result | Notes |\n' 14900*cda5da8dSAndroid Build Coastguard Worker '|================================|==================================|=======================|\n' 14901*cda5da8dSAndroid Build Coastguard Worker '| "s[i] = x" | item *i* of *s* is replaced ' 14902*cda5da8dSAndroid Build Coastguard Worker 'by | |\n' 14903*cda5da8dSAndroid Build Coastguard Worker '| | ' 14904*cda5da8dSAndroid Build Coastguard Worker '*x* | |\n' 14905*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14906*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j] = t" | slice of *s* from *i* to *j* ' 14907*cda5da8dSAndroid Build Coastguard Worker 'is | |\n' 14908*cda5da8dSAndroid Build Coastguard Worker '| | replaced by the contents of ' 14909*cda5da8dSAndroid Build Coastguard Worker 'the | |\n' 14910*cda5da8dSAndroid Build Coastguard Worker '| | iterable ' 14911*cda5da8dSAndroid Build Coastguard Worker '*t* | |\n' 14912*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14913*cda5da8dSAndroid Build Coastguard Worker '| "del s[i:j]" | same as "s[i:j] = ' 14914*cda5da8dSAndroid Build Coastguard Worker '[]" | |\n' 14915*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14916*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j:k] = t" | the elements of "s[i:j:k]" ' 14917*cda5da8dSAndroid Build Coastguard Worker 'are | (1) |\n' 14918*cda5da8dSAndroid Build Coastguard Worker '| | replaced by those of ' 14919*cda5da8dSAndroid Build Coastguard Worker '*t* | |\n' 14920*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14921*cda5da8dSAndroid Build Coastguard Worker '| "del s[i:j:k]" | removes the elements ' 14922*cda5da8dSAndroid Build Coastguard Worker 'of | |\n' 14923*cda5da8dSAndroid Build Coastguard Worker '| | "s[i:j:k]" from the ' 14924*cda5da8dSAndroid Build Coastguard Worker 'list | |\n' 14925*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14926*cda5da8dSAndroid Build Coastguard Worker '| "s.append(x)" | appends *x* to the end of ' 14927*cda5da8dSAndroid Build Coastguard Worker 'the | |\n' 14928*cda5da8dSAndroid Build Coastguard Worker '| | sequence (same ' 14929*cda5da8dSAndroid Build Coastguard Worker 'as | |\n' 14930*cda5da8dSAndroid Build Coastguard Worker '| | "s[len(s):len(s)] = ' 14931*cda5da8dSAndroid Build Coastguard Worker '[x]") | |\n' 14932*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14933*cda5da8dSAndroid Build Coastguard Worker '| "s.clear()" | removes all items from *s* ' 14934*cda5da8dSAndroid Build Coastguard Worker '(same | (5) |\n' 14935*cda5da8dSAndroid Build Coastguard Worker '| | as "del ' 14936*cda5da8dSAndroid Build Coastguard Worker 's[:]") | |\n' 14937*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14938*cda5da8dSAndroid Build Coastguard Worker '| "s.copy()" | creates a shallow copy of ' 14939*cda5da8dSAndroid Build Coastguard Worker '*s* | (5) |\n' 14940*cda5da8dSAndroid Build Coastguard Worker '| | (same as ' 14941*cda5da8dSAndroid Build Coastguard Worker '"s[:]") | |\n' 14942*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14943*cda5da8dSAndroid Build Coastguard Worker '| "s.extend(t)" or "s += t" | extends *s* with the contents ' 14944*cda5da8dSAndroid Build Coastguard Worker 'of | |\n' 14945*cda5da8dSAndroid Build Coastguard Worker '| | *t* (for the most part the ' 14946*cda5da8dSAndroid Build Coastguard Worker 'same | |\n' 14947*cda5da8dSAndroid Build Coastguard Worker '| | as "s[len(s):len(s)] = ' 14948*cda5da8dSAndroid Build Coastguard Worker 't") | |\n' 14949*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14950*cda5da8dSAndroid Build Coastguard Worker '| "s *= n" | updates *s* with its ' 14951*cda5da8dSAndroid Build Coastguard Worker 'contents | (6) |\n' 14952*cda5da8dSAndroid Build Coastguard Worker '| | repeated *n* ' 14953*cda5da8dSAndroid Build Coastguard Worker 'times | |\n' 14954*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14955*cda5da8dSAndroid Build Coastguard Worker '| "s.insert(i, x)" | inserts *x* into *s* at ' 14956*cda5da8dSAndroid Build Coastguard Worker 'the | |\n' 14957*cda5da8dSAndroid Build Coastguard Worker '| | index given by *i* (same ' 14958*cda5da8dSAndroid Build Coastguard Worker 'as | |\n' 14959*cda5da8dSAndroid Build Coastguard Worker '| | "s[i:i] = ' 14960*cda5da8dSAndroid Build Coastguard Worker '[x]") | |\n' 14961*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14962*cda5da8dSAndroid Build Coastguard Worker '| "s.pop()" or "s.pop(i)" | retrieves the item at *i* ' 14963*cda5da8dSAndroid Build Coastguard Worker 'and | (2) |\n' 14964*cda5da8dSAndroid Build Coastguard Worker '| | also removes it from ' 14965*cda5da8dSAndroid Build Coastguard Worker '*s* | |\n' 14966*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14967*cda5da8dSAndroid Build Coastguard Worker '| "s.remove(x)" | remove the first item from ' 14968*cda5da8dSAndroid Build Coastguard Worker '*s* | (3) |\n' 14969*cda5da8dSAndroid Build Coastguard Worker '| | where "s[i]" is equal to ' 14970*cda5da8dSAndroid Build Coastguard Worker '*x* | |\n' 14971*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14972*cda5da8dSAndroid Build Coastguard Worker '| "s.reverse()" | reverses the items of *s* ' 14973*cda5da8dSAndroid Build Coastguard Worker 'in | (4) |\n' 14974*cda5da8dSAndroid Build Coastguard Worker '| | ' 14975*cda5da8dSAndroid Build Coastguard Worker 'place | |\n' 14976*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 14977*cda5da8dSAndroid Build Coastguard Worker '\n' 14978*cda5da8dSAndroid Build Coastguard Worker 'Notes:\n' 14979*cda5da8dSAndroid Build Coastguard Worker '\n' 14980*cda5da8dSAndroid Build Coastguard Worker '1. *t* must have the same length as the slice it is replacing.\n' 14981*cda5da8dSAndroid Build Coastguard Worker '\n' 14982*cda5da8dSAndroid Build Coastguard Worker '2. The optional argument *i* defaults to "-1", so that by ' 14983*cda5da8dSAndroid Build Coastguard Worker 'default the\n' 14984*cda5da8dSAndroid Build Coastguard Worker ' last item is removed and returned.\n' 14985*cda5da8dSAndroid Build Coastguard Worker '\n' 14986*cda5da8dSAndroid Build Coastguard Worker '3. "remove()" raises "ValueError" when *x* is not found in *s*.\n' 14987*cda5da8dSAndroid Build Coastguard Worker '\n' 14988*cda5da8dSAndroid Build Coastguard Worker '4. The "reverse()" method modifies the sequence in place for ' 14989*cda5da8dSAndroid Build Coastguard Worker 'economy\n' 14990*cda5da8dSAndroid Build Coastguard Worker ' of space when reversing a large sequence. To remind users ' 14991*cda5da8dSAndroid Build Coastguard Worker 'that it\n' 14992*cda5da8dSAndroid Build Coastguard Worker ' operates by side effect, it does not return the reversed ' 14993*cda5da8dSAndroid Build Coastguard Worker 'sequence.\n' 14994*cda5da8dSAndroid Build Coastguard Worker '\n' 14995*cda5da8dSAndroid Build Coastguard Worker '5. "clear()" and "copy()" are included for consistency with the\n' 14996*cda5da8dSAndroid Build Coastguard Worker ' interfaces of mutable containers that don’t support slicing\n' 14997*cda5da8dSAndroid Build Coastguard Worker ' operations (such as "dict" and "set"). "copy()" is not part ' 14998*cda5da8dSAndroid Build Coastguard Worker 'of the\n' 14999*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.MutableSequence" ABC, but most concrete ' 15000*cda5da8dSAndroid Build Coastguard Worker 'mutable\n' 15001*cda5da8dSAndroid Build Coastguard Worker ' sequence classes provide it.\n' 15002*cda5da8dSAndroid Build Coastguard Worker '\n' 15003*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.3: "clear()" and "copy()" methods.\n' 15004*cda5da8dSAndroid Build Coastguard Worker '\n' 15005*cda5da8dSAndroid Build Coastguard Worker '6. The value *n* is an integer, or an object implementing\n' 15006*cda5da8dSAndroid Build Coastguard Worker ' "__index__()". Zero and negative values of *n* clear the ' 15007*cda5da8dSAndroid Build Coastguard Worker 'sequence.\n' 15008*cda5da8dSAndroid Build Coastguard Worker ' Items in the sequence are not copied; they are referenced ' 15009*cda5da8dSAndroid Build Coastguard Worker 'multiple\n' 15010*cda5da8dSAndroid Build Coastguard Worker ' times, as explained for "s * n" under Common Sequence ' 15011*cda5da8dSAndroid Build Coastguard Worker 'Operations.\n' 15012*cda5da8dSAndroid Build Coastguard Worker '\n' 15013*cda5da8dSAndroid Build Coastguard Worker '\n' 15014*cda5da8dSAndroid Build Coastguard Worker 'Lists\n' 15015*cda5da8dSAndroid Build Coastguard Worker '=====\n' 15016*cda5da8dSAndroid Build Coastguard Worker '\n' 15017*cda5da8dSAndroid Build Coastguard Worker 'Lists are mutable sequences, typically used to store collections ' 15018*cda5da8dSAndroid Build Coastguard Worker 'of\n' 15019*cda5da8dSAndroid Build Coastguard Worker 'homogeneous items (where the precise degree of similarity will ' 15020*cda5da8dSAndroid Build Coastguard Worker 'vary by\n' 15021*cda5da8dSAndroid Build Coastguard Worker 'application).\n' 15022*cda5da8dSAndroid Build Coastguard Worker '\n' 15023*cda5da8dSAndroid Build Coastguard Worker 'class list([iterable])\n' 15024*cda5da8dSAndroid Build Coastguard Worker '\n' 15025*cda5da8dSAndroid Build Coastguard Worker ' Lists may be constructed in several ways:\n' 15026*cda5da8dSAndroid Build Coastguard Worker '\n' 15027*cda5da8dSAndroid Build Coastguard Worker ' * Using a pair of square brackets to denote the empty list: ' 15028*cda5da8dSAndroid Build Coastguard Worker '"[]"\n' 15029*cda5da8dSAndroid Build Coastguard Worker '\n' 15030*cda5da8dSAndroid Build Coastguard Worker ' * Using square brackets, separating items with commas: "[a]", ' 15031*cda5da8dSAndroid Build Coastguard Worker '"[a,\n' 15032*cda5da8dSAndroid Build Coastguard Worker ' b, c]"\n' 15033*cda5da8dSAndroid Build Coastguard Worker '\n' 15034*cda5da8dSAndroid Build Coastguard Worker ' * Using a list comprehension: "[x for x in iterable]"\n' 15035*cda5da8dSAndroid Build Coastguard Worker '\n' 15036*cda5da8dSAndroid Build Coastguard Worker ' * Using the type constructor: "list()" or "list(iterable)"\n' 15037*cda5da8dSAndroid Build Coastguard Worker '\n' 15038*cda5da8dSAndroid Build Coastguard Worker ' The constructor builds a list whose items are the same and in ' 15039*cda5da8dSAndroid Build Coastguard Worker 'the\n' 15040*cda5da8dSAndroid Build Coastguard Worker ' same order as *iterable*’s items. *iterable* may be either ' 15041*cda5da8dSAndroid Build Coastguard Worker 'a\n' 15042*cda5da8dSAndroid Build Coastguard Worker ' sequence, a container that supports iteration, or an ' 15043*cda5da8dSAndroid Build Coastguard Worker 'iterator\n' 15044*cda5da8dSAndroid Build Coastguard Worker ' object. If *iterable* is already a list, a copy is made and\n' 15045*cda5da8dSAndroid Build Coastguard Worker ' returned, similar to "iterable[:]". For example, ' 15046*cda5da8dSAndroid Build Coastguard Worker '"list(\'abc\')"\n' 15047*cda5da8dSAndroid Build Coastguard Worker ' returns "[\'a\', \'b\', \'c\']" and "list( (1, 2, 3) )" ' 15048*cda5da8dSAndroid Build Coastguard Worker 'returns "[1, 2,\n' 15049*cda5da8dSAndroid Build Coastguard Worker ' 3]". If no argument is given, the constructor creates a new ' 15050*cda5da8dSAndroid Build Coastguard Worker 'empty\n' 15051*cda5da8dSAndroid Build Coastguard Worker ' list, "[]".\n' 15052*cda5da8dSAndroid Build Coastguard Worker '\n' 15053*cda5da8dSAndroid Build Coastguard Worker ' Many other operations also produce lists, including the ' 15054*cda5da8dSAndroid Build Coastguard Worker '"sorted()"\n' 15055*cda5da8dSAndroid Build Coastguard Worker ' built-in.\n' 15056*cda5da8dSAndroid Build Coastguard Worker '\n' 15057*cda5da8dSAndroid Build Coastguard Worker ' Lists implement all of the common and mutable sequence ' 15058*cda5da8dSAndroid Build Coastguard Worker 'operations.\n' 15059*cda5da8dSAndroid Build Coastguard Worker ' Lists also provide the following additional method:\n' 15060*cda5da8dSAndroid Build Coastguard Worker '\n' 15061*cda5da8dSAndroid Build Coastguard Worker ' sort(*, key=None, reverse=False)\n' 15062*cda5da8dSAndroid Build Coastguard Worker '\n' 15063*cda5da8dSAndroid Build Coastguard Worker ' This method sorts the list in place, using only "<" ' 15064*cda5da8dSAndroid Build Coastguard Worker 'comparisons\n' 15065*cda5da8dSAndroid Build Coastguard Worker ' between items. Exceptions are not suppressed - if any ' 15066*cda5da8dSAndroid Build Coastguard Worker 'comparison\n' 15067*cda5da8dSAndroid Build Coastguard Worker ' operations fail, the entire sort operation will fail (and ' 15068*cda5da8dSAndroid Build Coastguard Worker 'the\n' 15069*cda5da8dSAndroid Build Coastguard Worker ' list will likely be left in a partially modified state).\n' 15070*cda5da8dSAndroid Build Coastguard Worker '\n' 15071*cda5da8dSAndroid Build Coastguard Worker ' "sort()" accepts two arguments that can only be passed by\n' 15072*cda5da8dSAndroid Build Coastguard Worker ' keyword (keyword-only arguments):\n' 15073*cda5da8dSAndroid Build Coastguard Worker '\n' 15074*cda5da8dSAndroid Build Coastguard Worker ' *key* specifies a function of one argument that is used ' 15075*cda5da8dSAndroid Build Coastguard Worker 'to\n' 15076*cda5da8dSAndroid Build Coastguard Worker ' extract a comparison key from each list element (for ' 15077*cda5da8dSAndroid Build Coastguard Worker 'example,\n' 15078*cda5da8dSAndroid Build Coastguard Worker ' "key=str.lower"). The key corresponding to each item in ' 15079*cda5da8dSAndroid Build Coastguard Worker 'the list\n' 15080*cda5da8dSAndroid Build Coastguard Worker ' is calculated once and then used for the entire sorting ' 15081*cda5da8dSAndroid Build Coastguard Worker 'process.\n' 15082*cda5da8dSAndroid Build Coastguard Worker ' The default value of "None" means that list items are ' 15083*cda5da8dSAndroid Build Coastguard Worker 'sorted\n' 15084*cda5da8dSAndroid Build Coastguard Worker ' directly without calculating a separate key value.\n' 15085*cda5da8dSAndroid Build Coastguard Worker '\n' 15086*cda5da8dSAndroid Build Coastguard Worker ' The "functools.cmp_to_key()" utility is available to ' 15087*cda5da8dSAndroid Build Coastguard Worker 'convert a\n' 15088*cda5da8dSAndroid Build Coastguard Worker ' 2.x style *cmp* function to a *key* function.\n' 15089*cda5da8dSAndroid Build Coastguard Worker '\n' 15090*cda5da8dSAndroid Build Coastguard Worker ' *reverse* is a boolean value. If set to "True", then the ' 15091*cda5da8dSAndroid Build Coastguard Worker 'list\n' 15092*cda5da8dSAndroid Build Coastguard Worker ' elements are sorted as if each comparison were reversed.\n' 15093*cda5da8dSAndroid Build Coastguard Worker '\n' 15094*cda5da8dSAndroid Build Coastguard Worker ' This method modifies the sequence in place for economy of ' 15095*cda5da8dSAndroid Build Coastguard Worker 'space\n' 15096*cda5da8dSAndroid Build Coastguard Worker ' when sorting a large sequence. To remind users that it ' 15097*cda5da8dSAndroid Build Coastguard Worker 'operates\n' 15098*cda5da8dSAndroid Build Coastguard Worker ' by side effect, it does not return the sorted sequence ' 15099*cda5da8dSAndroid Build Coastguard Worker '(use\n' 15100*cda5da8dSAndroid Build Coastguard Worker ' "sorted()" to explicitly request a new sorted list ' 15101*cda5da8dSAndroid Build Coastguard Worker 'instance).\n' 15102*cda5da8dSAndroid Build Coastguard Worker '\n' 15103*cda5da8dSAndroid Build Coastguard Worker ' The "sort()" method is guaranteed to be stable. A sort ' 15104*cda5da8dSAndroid Build Coastguard Worker 'is\n' 15105*cda5da8dSAndroid Build Coastguard Worker ' stable if it guarantees not to change the relative order ' 15106*cda5da8dSAndroid Build Coastguard Worker 'of\n' 15107*cda5da8dSAndroid Build Coastguard Worker ' elements that compare equal — this is helpful for sorting ' 15108*cda5da8dSAndroid Build Coastguard Worker 'in\n' 15109*cda5da8dSAndroid Build Coastguard Worker ' multiple passes (for example, sort by department, then by ' 15110*cda5da8dSAndroid Build Coastguard Worker 'salary\n' 15111*cda5da8dSAndroid Build Coastguard Worker ' grade).\n' 15112*cda5da8dSAndroid Build Coastguard Worker '\n' 15113*cda5da8dSAndroid Build Coastguard Worker ' For sorting examples and a brief sorting tutorial, see ' 15114*cda5da8dSAndroid Build Coastguard Worker 'Sorting\n' 15115*cda5da8dSAndroid Build Coastguard Worker ' HOW TO.\n' 15116*cda5da8dSAndroid Build Coastguard Worker '\n' 15117*cda5da8dSAndroid Build Coastguard Worker ' **CPython implementation detail:** While a list is being ' 15118*cda5da8dSAndroid Build Coastguard Worker 'sorted,\n' 15119*cda5da8dSAndroid Build Coastguard Worker ' the effect of attempting to mutate, or even inspect, the ' 15120*cda5da8dSAndroid Build Coastguard Worker 'list is\n' 15121*cda5da8dSAndroid Build Coastguard Worker ' undefined. The C implementation of Python makes the list ' 15122*cda5da8dSAndroid Build Coastguard Worker 'appear\n' 15123*cda5da8dSAndroid Build Coastguard Worker ' empty for the duration, and raises "ValueError" if it can ' 15124*cda5da8dSAndroid Build Coastguard Worker 'detect\n' 15125*cda5da8dSAndroid Build Coastguard Worker ' that the list has been mutated during a sort.\n' 15126*cda5da8dSAndroid Build Coastguard Worker '\n' 15127*cda5da8dSAndroid Build Coastguard Worker '\n' 15128*cda5da8dSAndroid Build Coastguard Worker 'Tuples\n' 15129*cda5da8dSAndroid Build Coastguard Worker '======\n' 15130*cda5da8dSAndroid Build Coastguard Worker '\n' 15131*cda5da8dSAndroid Build Coastguard Worker 'Tuples are immutable sequences, typically used to store ' 15132*cda5da8dSAndroid Build Coastguard Worker 'collections of\n' 15133*cda5da8dSAndroid Build Coastguard Worker 'heterogeneous data (such as the 2-tuples produced by the ' 15134*cda5da8dSAndroid Build Coastguard Worker '"enumerate()"\n' 15135*cda5da8dSAndroid Build Coastguard Worker 'built-in). Tuples are also used for cases where an immutable ' 15136*cda5da8dSAndroid Build Coastguard Worker 'sequence\n' 15137*cda5da8dSAndroid Build Coastguard Worker 'of homogeneous data is needed (such as allowing storage in a ' 15138*cda5da8dSAndroid Build Coastguard Worker '"set" or\n' 15139*cda5da8dSAndroid Build Coastguard Worker '"dict" instance).\n' 15140*cda5da8dSAndroid Build Coastguard Worker '\n' 15141*cda5da8dSAndroid Build Coastguard Worker 'class tuple([iterable])\n' 15142*cda5da8dSAndroid Build Coastguard Worker '\n' 15143*cda5da8dSAndroid Build Coastguard Worker ' Tuples may be constructed in a number of ways:\n' 15144*cda5da8dSAndroid Build Coastguard Worker '\n' 15145*cda5da8dSAndroid Build Coastguard Worker ' * Using a pair of parentheses to denote the empty tuple: ' 15146*cda5da8dSAndroid Build Coastguard Worker '"()"\n' 15147*cda5da8dSAndroid Build Coastguard Worker '\n' 15148*cda5da8dSAndroid Build Coastguard Worker ' * Using a trailing comma for a singleton tuple: "a," or ' 15149*cda5da8dSAndroid Build Coastguard Worker '"(a,)"\n' 15150*cda5da8dSAndroid Build Coastguard Worker '\n' 15151*cda5da8dSAndroid Build Coastguard Worker ' * Separating items with commas: "a, b, c" or "(a, b, c)"\n' 15152*cda5da8dSAndroid Build Coastguard Worker '\n' 15153*cda5da8dSAndroid Build Coastguard Worker ' * Using the "tuple()" built-in: "tuple()" or ' 15154*cda5da8dSAndroid Build Coastguard Worker '"tuple(iterable)"\n' 15155*cda5da8dSAndroid Build Coastguard Worker '\n' 15156*cda5da8dSAndroid Build Coastguard Worker ' The constructor builds a tuple whose items are the same and ' 15157*cda5da8dSAndroid Build Coastguard Worker 'in the\n' 15158*cda5da8dSAndroid Build Coastguard Worker ' same order as *iterable*’s items. *iterable* may be either ' 15159*cda5da8dSAndroid Build Coastguard Worker 'a\n' 15160*cda5da8dSAndroid Build Coastguard Worker ' sequence, a container that supports iteration, or an ' 15161*cda5da8dSAndroid Build Coastguard Worker 'iterator\n' 15162*cda5da8dSAndroid Build Coastguard Worker ' object. If *iterable* is already a tuple, it is returned\n' 15163*cda5da8dSAndroid Build Coastguard Worker ' unchanged. For example, "tuple(\'abc\')" returns "(\'a\', ' 15164*cda5da8dSAndroid Build Coastguard Worker '\'b\', \'c\')"\n' 15165*cda5da8dSAndroid Build Coastguard Worker ' and "tuple( [1, 2, 3] )" returns "(1, 2, 3)". If no argument ' 15166*cda5da8dSAndroid Build Coastguard Worker 'is\n' 15167*cda5da8dSAndroid Build Coastguard Worker ' given, the constructor creates a new empty tuple, "()".\n' 15168*cda5da8dSAndroid Build Coastguard Worker '\n' 15169*cda5da8dSAndroid Build Coastguard Worker ' Note that it is actually the comma which makes a tuple, not ' 15170*cda5da8dSAndroid Build Coastguard Worker 'the\n' 15171*cda5da8dSAndroid Build Coastguard Worker ' parentheses. The parentheses are optional, except in the ' 15172*cda5da8dSAndroid Build Coastguard Worker 'empty\n' 15173*cda5da8dSAndroid Build Coastguard Worker ' tuple case, or when they are needed to avoid syntactic ' 15174*cda5da8dSAndroid Build Coastguard Worker 'ambiguity.\n' 15175*cda5da8dSAndroid Build Coastguard Worker ' For example, "f(a, b, c)" is a function call with three ' 15176*cda5da8dSAndroid Build Coastguard Worker 'arguments,\n' 15177*cda5da8dSAndroid Build Coastguard Worker ' while "f((a, b, c))" is a function call with a 3-tuple as the ' 15178*cda5da8dSAndroid Build Coastguard Worker 'sole\n' 15179*cda5da8dSAndroid Build Coastguard Worker ' argument.\n' 15180*cda5da8dSAndroid Build Coastguard Worker '\n' 15181*cda5da8dSAndroid Build Coastguard Worker ' Tuples implement all of the common sequence operations.\n' 15182*cda5da8dSAndroid Build Coastguard Worker '\n' 15183*cda5da8dSAndroid Build Coastguard Worker 'For heterogeneous collections of data where access by name is ' 15184*cda5da8dSAndroid Build Coastguard Worker 'clearer\n' 15185*cda5da8dSAndroid Build Coastguard Worker 'than access by index, "collections.namedtuple()" may be a more\n' 15186*cda5da8dSAndroid Build Coastguard Worker 'appropriate choice than a simple tuple object.\n' 15187*cda5da8dSAndroid Build Coastguard Worker '\n' 15188*cda5da8dSAndroid Build Coastguard Worker '\n' 15189*cda5da8dSAndroid Build Coastguard Worker 'Ranges\n' 15190*cda5da8dSAndroid Build Coastguard Worker '======\n' 15191*cda5da8dSAndroid Build Coastguard Worker '\n' 15192*cda5da8dSAndroid Build Coastguard Worker 'The "range" type represents an immutable sequence of numbers and ' 15193*cda5da8dSAndroid Build Coastguard Worker 'is\n' 15194*cda5da8dSAndroid Build Coastguard Worker 'commonly used for looping a specific number of times in "for" ' 15195*cda5da8dSAndroid Build Coastguard Worker 'loops.\n' 15196*cda5da8dSAndroid Build Coastguard Worker '\n' 15197*cda5da8dSAndroid Build Coastguard Worker 'class range(stop)\n' 15198*cda5da8dSAndroid Build Coastguard Worker 'class range(start, stop[, step])\n' 15199*cda5da8dSAndroid Build Coastguard Worker '\n' 15200*cda5da8dSAndroid Build Coastguard Worker ' The arguments to the range constructor must be integers ' 15201*cda5da8dSAndroid Build Coastguard Worker '(either\n' 15202*cda5da8dSAndroid Build Coastguard Worker ' built-in "int" or any object that implements the ' 15203*cda5da8dSAndroid Build Coastguard Worker '"__index__()"\n' 15204*cda5da8dSAndroid Build Coastguard Worker ' special method). If the *step* argument is omitted, it ' 15205*cda5da8dSAndroid Build Coastguard Worker 'defaults to\n' 15206*cda5da8dSAndroid Build Coastguard Worker ' "1". If the *start* argument is omitted, it defaults to "0". ' 15207*cda5da8dSAndroid Build Coastguard Worker 'If\n' 15208*cda5da8dSAndroid Build Coastguard Worker ' *step* is zero, "ValueError" is raised.\n' 15209*cda5da8dSAndroid Build Coastguard Worker '\n' 15210*cda5da8dSAndroid Build Coastguard Worker ' For a positive *step*, the contents of a range "r" are ' 15211*cda5da8dSAndroid Build Coastguard Worker 'determined\n' 15212*cda5da8dSAndroid Build Coastguard Worker ' by the formula "r[i] = start + step*i" where "i >= 0" and ' 15213*cda5da8dSAndroid Build Coastguard Worker '"r[i] <\n' 15214*cda5da8dSAndroid Build Coastguard Worker ' stop".\n' 15215*cda5da8dSAndroid Build Coastguard Worker '\n' 15216*cda5da8dSAndroid Build Coastguard Worker ' For a negative *step*, the contents of the range are still\n' 15217*cda5da8dSAndroid Build Coastguard Worker ' determined by the formula "r[i] = start + step*i", but the\n' 15218*cda5da8dSAndroid Build Coastguard Worker ' constraints are "i >= 0" and "r[i] > stop".\n' 15219*cda5da8dSAndroid Build Coastguard Worker '\n' 15220*cda5da8dSAndroid Build Coastguard Worker ' A range object will be empty if "r[0]" does not meet the ' 15221*cda5da8dSAndroid Build Coastguard Worker 'value\n' 15222*cda5da8dSAndroid Build Coastguard Worker ' constraint. Ranges do support negative indices, but these ' 15223*cda5da8dSAndroid Build Coastguard Worker 'are\n' 15224*cda5da8dSAndroid Build Coastguard Worker ' interpreted as indexing from the end of the sequence ' 15225*cda5da8dSAndroid Build Coastguard Worker 'determined by\n' 15226*cda5da8dSAndroid Build Coastguard Worker ' the positive indices.\n' 15227*cda5da8dSAndroid Build Coastguard Worker '\n' 15228*cda5da8dSAndroid Build Coastguard Worker ' Ranges containing absolute values larger than "sys.maxsize" ' 15229*cda5da8dSAndroid Build Coastguard Worker 'are\n' 15230*cda5da8dSAndroid Build Coastguard Worker ' permitted but some features (such as "len()") may raise\n' 15231*cda5da8dSAndroid Build Coastguard Worker ' "OverflowError".\n' 15232*cda5da8dSAndroid Build Coastguard Worker '\n' 15233*cda5da8dSAndroid Build Coastguard Worker ' Range examples:\n' 15234*cda5da8dSAndroid Build Coastguard Worker '\n' 15235*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(10))\n' 15236*cda5da8dSAndroid Build Coastguard Worker ' [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n' 15237*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(1, 11))\n' 15238*cda5da8dSAndroid Build Coastguard Worker ' [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n' 15239*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(0, 30, 5))\n' 15240*cda5da8dSAndroid Build Coastguard Worker ' [0, 5, 10, 15, 20, 25]\n' 15241*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(0, 10, 3))\n' 15242*cda5da8dSAndroid Build Coastguard Worker ' [0, 3, 6, 9]\n' 15243*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(0, -10, -1))\n' 15244*cda5da8dSAndroid Build Coastguard Worker ' [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]\n' 15245*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(0))\n' 15246*cda5da8dSAndroid Build Coastguard Worker ' []\n' 15247*cda5da8dSAndroid Build Coastguard Worker ' >>> list(range(1, 0))\n' 15248*cda5da8dSAndroid Build Coastguard Worker ' []\n' 15249*cda5da8dSAndroid Build Coastguard Worker '\n' 15250*cda5da8dSAndroid Build Coastguard Worker ' Ranges implement all of the common sequence operations ' 15251*cda5da8dSAndroid Build Coastguard Worker 'except\n' 15252*cda5da8dSAndroid Build Coastguard Worker ' concatenation and repetition (due to the fact that range ' 15253*cda5da8dSAndroid Build Coastguard Worker 'objects\n' 15254*cda5da8dSAndroid Build Coastguard Worker ' can only represent sequences that follow a strict pattern ' 15255*cda5da8dSAndroid Build Coastguard Worker 'and\n' 15256*cda5da8dSAndroid Build Coastguard Worker ' repetition and concatenation will usually violate that ' 15257*cda5da8dSAndroid Build Coastguard Worker 'pattern).\n' 15258*cda5da8dSAndroid Build Coastguard Worker '\n' 15259*cda5da8dSAndroid Build Coastguard Worker ' start\n' 15260*cda5da8dSAndroid Build Coastguard Worker '\n' 15261*cda5da8dSAndroid Build Coastguard Worker ' The value of the *start* parameter (or "0" if the ' 15262*cda5da8dSAndroid Build Coastguard Worker 'parameter was\n' 15263*cda5da8dSAndroid Build Coastguard Worker ' not supplied)\n' 15264*cda5da8dSAndroid Build Coastguard Worker '\n' 15265*cda5da8dSAndroid Build Coastguard Worker ' stop\n' 15266*cda5da8dSAndroid Build Coastguard Worker '\n' 15267*cda5da8dSAndroid Build Coastguard Worker ' The value of the *stop* parameter\n' 15268*cda5da8dSAndroid Build Coastguard Worker '\n' 15269*cda5da8dSAndroid Build Coastguard Worker ' step\n' 15270*cda5da8dSAndroid Build Coastguard Worker '\n' 15271*cda5da8dSAndroid Build Coastguard Worker ' The value of the *step* parameter (or "1" if the parameter ' 15272*cda5da8dSAndroid Build Coastguard Worker 'was\n' 15273*cda5da8dSAndroid Build Coastguard Worker ' not supplied)\n' 15274*cda5da8dSAndroid Build Coastguard Worker '\n' 15275*cda5da8dSAndroid Build Coastguard Worker 'The advantage of the "range" type over a regular "list" or ' 15276*cda5da8dSAndroid Build Coastguard Worker '"tuple" is\n' 15277*cda5da8dSAndroid Build Coastguard Worker 'that a "range" object will always take the same (small) amount ' 15278*cda5da8dSAndroid Build Coastguard Worker 'of\n' 15279*cda5da8dSAndroid Build Coastguard Worker 'memory, no matter the size of the range it represents (as it ' 15280*cda5da8dSAndroid Build Coastguard Worker 'only\n' 15281*cda5da8dSAndroid Build Coastguard Worker 'stores the "start", "stop" and "step" values, calculating ' 15282*cda5da8dSAndroid Build Coastguard Worker 'individual\n' 15283*cda5da8dSAndroid Build Coastguard Worker 'items and subranges as needed).\n' 15284*cda5da8dSAndroid Build Coastguard Worker '\n' 15285*cda5da8dSAndroid Build Coastguard Worker 'Range objects implement the "collections.abc.Sequence" ABC, and\n' 15286*cda5da8dSAndroid Build Coastguard Worker 'provide features such as containment tests, element index ' 15287*cda5da8dSAndroid Build Coastguard Worker 'lookup,\n' 15288*cda5da8dSAndroid Build Coastguard Worker 'slicing and support for negative indices (see Sequence Types — ' 15289*cda5da8dSAndroid Build Coastguard Worker 'list,\n' 15290*cda5da8dSAndroid Build Coastguard Worker 'tuple, range):\n' 15291*cda5da8dSAndroid Build Coastguard Worker '\n' 15292*cda5da8dSAndroid Build Coastguard Worker '>>> r = range(0, 20, 2)\n' 15293*cda5da8dSAndroid Build Coastguard Worker '>>> r\n' 15294*cda5da8dSAndroid Build Coastguard Worker 'range(0, 20, 2)\n' 15295*cda5da8dSAndroid Build Coastguard Worker '>>> 11 in r\n' 15296*cda5da8dSAndroid Build Coastguard Worker 'False\n' 15297*cda5da8dSAndroid Build Coastguard Worker '>>> 10 in r\n' 15298*cda5da8dSAndroid Build Coastguard Worker 'True\n' 15299*cda5da8dSAndroid Build Coastguard Worker '>>> r.index(10)\n' 15300*cda5da8dSAndroid Build Coastguard Worker '5\n' 15301*cda5da8dSAndroid Build Coastguard Worker '>>> r[5]\n' 15302*cda5da8dSAndroid Build Coastguard Worker '10\n' 15303*cda5da8dSAndroid Build Coastguard Worker '>>> r[:5]\n' 15304*cda5da8dSAndroid Build Coastguard Worker 'range(0, 10, 2)\n' 15305*cda5da8dSAndroid Build Coastguard Worker '>>> r[-1]\n' 15306*cda5da8dSAndroid Build Coastguard Worker '18\n' 15307*cda5da8dSAndroid Build Coastguard Worker '\n' 15308*cda5da8dSAndroid Build Coastguard Worker 'Testing range objects for equality with "==" and "!=" compares ' 15309*cda5da8dSAndroid Build Coastguard Worker 'them as\n' 15310*cda5da8dSAndroid Build Coastguard Worker 'sequences. That is, two range objects are considered equal if ' 15311*cda5da8dSAndroid Build Coastguard Worker 'they\n' 15312*cda5da8dSAndroid Build Coastguard Worker 'represent the same sequence of values. (Note that two range ' 15313*cda5da8dSAndroid Build Coastguard Worker 'objects\n' 15314*cda5da8dSAndroid Build Coastguard Worker 'that compare equal might have different "start", "stop" and ' 15315*cda5da8dSAndroid Build Coastguard Worker '"step"\n' 15316*cda5da8dSAndroid Build Coastguard Worker 'attributes, for example "range(0) == range(2, 1, 3)" or ' 15317*cda5da8dSAndroid Build Coastguard Worker '"range(0, 3,\n' 15318*cda5da8dSAndroid Build Coastguard Worker '2) == range(0, 4, 2)".)\n' 15319*cda5da8dSAndroid Build Coastguard Worker '\n' 15320*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.2: Implement the Sequence ABC. Support ' 15321*cda5da8dSAndroid Build Coastguard Worker 'slicing\n' 15322*cda5da8dSAndroid Build Coastguard Worker 'and negative indices. Test "int" objects for membership in ' 15323*cda5da8dSAndroid Build Coastguard Worker 'constant\n' 15324*cda5da8dSAndroid Build Coastguard Worker 'time instead of iterating through all items.\n' 15325*cda5da8dSAndroid Build Coastguard Worker '\n' 15326*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.3: Define ‘==’ and ‘!=’ to compare range ' 15327*cda5da8dSAndroid Build Coastguard Worker 'objects\n' 15328*cda5da8dSAndroid Build Coastguard Worker 'based on the sequence of values they define (instead of ' 15329*cda5da8dSAndroid Build Coastguard Worker 'comparing\n' 15330*cda5da8dSAndroid Build Coastguard Worker 'based on object identity).\n' 15331*cda5da8dSAndroid Build Coastguard Worker '\n' 15332*cda5da8dSAndroid Build Coastguard Worker 'New in version 3.3: The "start", "stop" and "step" attributes.\n' 15333*cda5da8dSAndroid Build Coastguard Worker '\n' 15334*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 15335*cda5da8dSAndroid Build Coastguard Worker '\n' 15336*cda5da8dSAndroid Build Coastguard Worker ' * The linspace recipe shows how to implement a lazy version of ' 15337*cda5da8dSAndroid Build Coastguard Worker 'range\n' 15338*cda5da8dSAndroid Build Coastguard Worker ' suitable for floating point applications.\n', 15339*cda5da8dSAndroid Build Coastguard Worker 'typesseq-mutable': 'Mutable Sequence Types\n' 15340*cda5da8dSAndroid Build Coastguard Worker '**********************\n' 15341*cda5da8dSAndroid Build Coastguard Worker '\n' 15342*cda5da8dSAndroid Build Coastguard Worker 'The operations in the following table are defined on ' 15343*cda5da8dSAndroid Build Coastguard Worker 'mutable sequence\n' 15344*cda5da8dSAndroid Build Coastguard Worker 'types. The "collections.abc.MutableSequence" ABC is ' 15345*cda5da8dSAndroid Build Coastguard Worker 'provided to make\n' 15346*cda5da8dSAndroid Build Coastguard Worker 'it easier to correctly implement these operations on ' 15347*cda5da8dSAndroid Build Coastguard Worker 'custom sequence\n' 15348*cda5da8dSAndroid Build Coastguard Worker 'types.\n' 15349*cda5da8dSAndroid Build Coastguard Worker '\n' 15350*cda5da8dSAndroid Build Coastguard Worker 'In the table *s* is an instance of a mutable sequence ' 15351*cda5da8dSAndroid Build Coastguard Worker 'type, *t* is any\n' 15352*cda5da8dSAndroid Build Coastguard Worker 'iterable object and *x* is an arbitrary object that ' 15353*cda5da8dSAndroid Build Coastguard Worker 'meets any type and\n' 15354*cda5da8dSAndroid Build Coastguard Worker 'value restrictions imposed by *s* (for example, ' 15355*cda5da8dSAndroid Build Coastguard Worker '"bytearray" only\n' 15356*cda5da8dSAndroid Build Coastguard Worker 'accepts integers that meet the value restriction "0 <= x ' 15357*cda5da8dSAndroid Build Coastguard Worker '<= 255").\n' 15358*cda5da8dSAndroid Build Coastguard Worker '\n' 15359*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15360*cda5da8dSAndroid Build Coastguard Worker '| Operation | ' 15361*cda5da8dSAndroid Build Coastguard Worker 'Result | Notes ' 15362*cda5da8dSAndroid Build Coastguard Worker '|\n' 15363*cda5da8dSAndroid Build Coastguard Worker '|================================|==================================|=======================|\n' 15364*cda5da8dSAndroid Build Coastguard Worker '| "s[i] = x" | item *i* of *s* is ' 15365*cda5da8dSAndroid Build Coastguard Worker 'replaced by | |\n' 15366*cda5da8dSAndroid Build Coastguard Worker '| | ' 15367*cda5da8dSAndroid Build Coastguard Worker '*x* | ' 15368*cda5da8dSAndroid Build Coastguard Worker '|\n' 15369*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15370*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j] = t" | slice of *s* from *i* ' 15371*cda5da8dSAndroid Build Coastguard Worker 'to *j* is | |\n' 15372*cda5da8dSAndroid Build Coastguard Worker '| | replaced by the ' 15373*cda5da8dSAndroid Build Coastguard Worker 'contents of the | |\n' 15374*cda5da8dSAndroid Build Coastguard Worker '| | iterable ' 15375*cda5da8dSAndroid Build Coastguard Worker '*t* | |\n' 15376*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15377*cda5da8dSAndroid Build Coastguard Worker '| "del s[i:j]" | same as "s[i:j] = ' 15378*cda5da8dSAndroid Build Coastguard Worker '[]" | |\n' 15379*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15380*cda5da8dSAndroid Build Coastguard Worker '| "s[i:j:k] = t" | the elements of ' 15381*cda5da8dSAndroid Build Coastguard Worker '"s[i:j:k]" are | (1) |\n' 15382*cda5da8dSAndroid Build Coastguard Worker '| | replaced by those of ' 15383*cda5da8dSAndroid Build Coastguard Worker '*t* | |\n' 15384*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15385*cda5da8dSAndroid Build Coastguard Worker '| "del s[i:j:k]" | removes the elements ' 15386*cda5da8dSAndroid Build Coastguard Worker 'of | |\n' 15387*cda5da8dSAndroid Build Coastguard Worker '| | "s[i:j:k]" from the ' 15388*cda5da8dSAndroid Build Coastguard Worker 'list | |\n' 15389*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15390*cda5da8dSAndroid Build Coastguard Worker '| "s.append(x)" | appends *x* to the ' 15391*cda5da8dSAndroid Build Coastguard Worker 'end of the | |\n' 15392*cda5da8dSAndroid Build Coastguard Worker '| | sequence (same ' 15393*cda5da8dSAndroid Build Coastguard Worker 'as | |\n' 15394*cda5da8dSAndroid Build Coastguard Worker '| | "s[len(s):len(s)] = ' 15395*cda5da8dSAndroid Build Coastguard Worker '[x]") | |\n' 15396*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15397*cda5da8dSAndroid Build Coastguard Worker '| "s.clear()" | removes all items ' 15398*cda5da8dSAndroid Build Coastguard Worker 'from *s* (same | (5) |\n' 15399*cda5da8dSAndroid Build Coastguard Worker '| | as "del ' 15400*cda5da8dSAndroid Build Coastguard Worker 's[:]") | |\n' 15401*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15402*cda5da8dSAndroid Build Coastguard Worker '| "s.copy()" | creates a shallow ' 15403*cda5da8dSAndroid Build Coastguard Worker 'copy of *s* | (5) |\n' 15404*cda5da8dSAndroid Build Coastguard Worker '| | (same as ' 15405*cda5da8dSAndroid Build Coastguard Worker '"s[:]") | |\n' 15406*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15407*cda5da8dSAndroid Build Coastguard Worker '| "s.extend(t)" or "s += t" | extends *s* with the ' 15408*cda5da8dSAndroid Build Coastguard Worker 'contents of | |\n' 15409*cda5da8dSAndroid Build Coastguard Worker '| | *t* (for the most ' 15410*cda5da8dSAndroid Build Coastguard Worker 'part the same | |\n' 15411*cda5da8dSAndroid Build Coastguard Worker '| | as "s[len(s):len(s)] ' 15412*cda5da8dSAndroid Build Coastguard Worker '= t") | |\n' 15413*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15414*cda5da8dSAndroid Build Coastguard Worker '| "s *= n" | updates *s* with its ' 15415*cda5da8dSAndroid Build Coastguard Worker 'contents | (6) |\n' 15416*cda5da8dSAndroid Build Coastguard Worker '| | repeated *n* ' 15417*cda5da8dSAndroid Build Coastguard Worker 'times | |\n' 15418*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15419*cda5da8dSAndroid Build Coastguard Worker '| "s.insert(i, x)" | inserts *x* into *s* ' 15420*cda5da8dSAndroid Build Coastguard Worker 'at the | |\n' 15421*cda5da8dSAndroid Build Coastguard Worker '| | index given by *i* ' 15422*cda5da8dSAndroid Build Coastguard Worker '(same as | |\n' 15423*cda5da8dSAndroid Build Coastguard Worker '| | "s[i:i] = ' 15424*cda5da8dSAndroid Build Coastguard Worker '[x]") | |\n' 15425*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15426*cda5da8dSAndroid Build Coastguard Worker '| "s.pop()" or "s.pop(i)" | retrieves the item at ' 15427*cda5da8dSAndroid Build Coastguard Worker '*i* and | (2) |\n' 15428*cda5da8dSAndroid Build Coastguard Worker '| | also removes it from ' 15429*cda5da8dSAndroid Build Coastguard Worker '*s* | |\n' 15430*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15431*cda5da8dSAndroid Build Coastguard Worker '| "s.remove(x)" | remove the first item ' 15432*cda5da8dSAndroid Build Coastguard Worker 'from *s* | (3) |\n' 15433*cda5da8dSAndroid Build Coastguard Worker '| | where "s[i]" is equal ' 15434*cda5da8dSAndroid Build Coastguard Worker 'to *x* | |\n' 15435*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15436*cda5da8dSAndroid Build Coastguard Worker '| "s.reverse()" | reverses the items of ' 15437*cda5da8dSAndroid Build Coastguard Worker '*s* in | (4) |\n' 15438*cda5da8dSAndroid Build Coastguard Worker '| | ' 15439*cda5da8dSAndroid Build Coastguard Worker 'place | ' 15440*cda5da8dSAndroid Build Coastguard Worker '|\n' 15441*cda5da8dSAndroid Build Coastguard Worker '+--------------------------------+----------------------------------+-----------------------+\n' 15442*cda5da8dSAndroid Build Coastguard Worker '\n' 15443*cda5da8dSAndroid Build Coastguard Worker 'Notes:\n' 15444*cda5da8dSAndroid Build Coastguard Worker '\n' 15445*cda5da8dSAndroid Build Coastguard Worker '1. *t* must have the same length as the slice it is ' 15446*cda5da8dSAndroid Build Coastguard Worker 'replacing.\n' 15447*cda5da8dSAndroid Build Coastguard Worker '\n' 15448*cda5da8dSAndroid Build Coastguard Worker '2. The optional argument *i* defaults to "-1", so that ' 15449*cda5da8dSAndroid Build Coastguard Worker 'by default the\n' 15450*cda5da8dSAndroid Build Coastguard Worker ' last item is removed and returned.\n' 15451*cda5da8dSAndroid Build Coastguard Worker '\n' 15452*cda5da8dSAndroid Build Coastguard Worker '3. "remove()" raises "ValueError" when *x* is not found ' 15453*cda5da8dSAndroid Build Coastguard Worker 'in *s*.\n' 15454*cda5da8dSAndroid Build Coastguard Worker '\n' 15455*cda5da8dSAndroid Build Coastguard Worker '4. The "reverse()" method modifies the sequence in place ' 15456*cda5da8dSAndroid Build Coastguard Worker 'for economy\n' 15457*cda5da8dSAndroid Build Coastguard Worker ' of space when reversing a large sequence. To remind ' 15458*cda5da8dSAndroid Build Coastguard Worker 'users that it\n' 15459*cda5da8dSAndroid Build Coastguard Worker ' operates by side effect, it does not return the ' 15460*cda5da8dSAndroid Build Coastguard Worker 'reversed sequence.\n' 15461*cda5da8dSAndroid Build Coastguard Worker '\n' 15462*cda5da8dSAndroid Build Coastguard Worker '5. "clear()" and "copy()" are included for consistency ' 15463*cda5da8dSAndroid Build Coastguard Worker 'with the\n' 15464*cda5da8dSAndroid Build Coastguard Worker ' interfaces of mutable containers that don’t support ' 15465*cda5da8dSAndroid Build Coastguard Worker 'slicing\n' 15466*cda5da8dSAndroid Build Coastguard Worker ' operations (such as "dict" and "set"). "copy()" is ' 15467*cda5da8dSAndroid Build Coastguard Worker 'not part of the\n' 15468*cda5da8dSAndroid Build Coastguard Worker ' "collections.abc.MutableSequence" ABC, but most ' 15469*cda5da8dSAndroid Build Coastguard Worker 'concrete mutable\n' 15470*cda5da8dSAndroid Build Coastguard Worker ' sequence classes provide it.\n' 15471*cda5da8dSAndroid Build Coastguard Worker '\n' 15472*cda5da8dSAndroid Build Coastguard Worker ' New in version 3.3: "clear()" and "copy()" methods.\n' 15473*cda5da8dSAndroid Build Coastguard Worker '\n' 15474*cda5da8dSAndroid Build Coastguard Worker '6. The value *n* is an integer, or an object ' 15475*cda5da8dSAndroid Build Coastguard Worker 'implementing\n' 15476*cda5da8dSAndroid Build Coastguard Worker ' "__index__()". Zero and negative values of *n* clear ' 15477*cda5da8dSAndroid Build Coastguard Worker 'the sequence.\n' 15478*cda5da8dSAndroid Build Coastguard Worker ' Items in the sequence are not copied; they are ' 15479*cda5da8dSAndroid Build Coastguard Worker 'referenced multiple\n' 15480*cda5da8dSAndroid Build Coastguard Worker ' times, as explained for "s * n" under Common Sequence ' 15481*cda5da8dSAndroid Build Coastguard Worker 'Operations.\n', 15482*cda5da8dSAndroid Build Coastguard Worker 'unary': 'Unary arithmetic and bitwise operations\n' 15483*cda5da8dSAndroid Build Coastguard Worker '***************************************\n' 15484*cda5da8dSAndroid Build Coastguard Worker '\n' 15485*cda5da8dSAndroid Build Coastguard Worker 'All unary arithmetic and bitwise operations have the same ' 15486*cda5da8dSAndroid Build Coastguard Worker 'priority:\n' 15487*cda5da8dSAndroid Build Coastguard Worker '\n' 15488*cda5da8dSAndroid Build Coastguard Worker ' u_expr ::= power | "-" u_expr | "+" u_expr | "~" u_expr\n' 15489*cda5da8dSAndroid Build Coastguard Worker '\n' 15490*cda5da8dSAndroid Build Coastguard Worker 'The unary "-" (minus) operator yields the negation of its numeric\n' 15491*cda5da8dSAndroid Build Coastguard Worker 'argument; the operation can be overridden with the "__neg__()" ' 15492*cda5da8dSAndroid Build Coastguard Worker 'special\n' 15493*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 15494*cda5da8dSAndroid Build Coastguard Worker '\n' 15495*cda5da8dSAndroid Build Coastguard Worker 'The unary "+" (plus) operator yields its numeric argument ' 15496*cda5da8dSAndroid Build Coastguard Worker 'unchanged;\n' 15497*cda5da8dSAndroid Build Coastguard Worker 'the operation can be overridden with the "__pos__()" special ' 15498*cda5da8dSAndroid Build Coastguard Worker 'method.\n' 15499*cda5da8dSAndroid Build Coastguard Worker '\n' 15500*cda5da8dSAndroid Build Coastguard Worker 'The unary "~" (invert) operator yields the bitwise inversion of ' 15501*cda5da8dSAndroid Build Coastguard Worker 'its\n' 15502*cda5da8dSAndroid Build Coastguard Worker 'integer argument. The bitwise inversion of "x" is defined as\n' 15503*cda5da8dSAndroid Build Coastguard Worker '"-(x+1)". It only applies to integral numbers or to custom ' 15504*cda5da8dSAndroid Build Coastguard Worker 'objects\n' 15505*cda5da8dSAndroid Build Coastguard Worker 'that override the "__invert__()" special method.\n' 15506*cda5da8dSAndroid Build Coastguard Worker '\n' 15507*cda5da8dSAndroid Build Coastguard Worker 'In all three cases, if the argument does not have the proper type, ' 15508*cda5da8dSAndroid Build Coastguard Worker 'a\n' 15509*cda5da8dSAndroid Build Coastguard Worker '"TypeError" exception is raised.\n', 15510*cda5da8dSAndroid Build Coastguard Worker 'while': 'The "while" statement\n' 15511*cda5da8dSAndroid Build Coastguard Worker '*********************\n' 15512*cda5da8dSAndroid Build Coastguard Worker '\n' 15513*cda5da8dSAndroid Build Coastguard Worker 'The "while" statement is used for repeated execution as long as an\n' 15514*cda5da8dSAndroid Build Coastguard Worker 'expression is true:\n' 15515*cda5da8dSAndroid Build Coastguard Worker '\n' 15516*cda5da8dSAndroid Build Coastguard Worker ' while_stmt ::= "while" assignment_expression ":" suite\n' 15517*cda5da8dSAndroid Build Coastguard Worker ' ["else" ":" suite]\n' 15518*cda5da8dSAndroid Build Coastguard Worker '\n' 15519*cda5da8dSAndroid Build Coastguard Worker 'This repeatedly tests the expression and, if it is true, executes ' 15520*cda5da8dSAndroid Build Coastguard Worker 'the\n' 15521*cda5da8dSAndroid Build Coastguard Worker 'first suite; if the expression is false (which may be the first ' 15522*cda5da8dSAndroid Build Coastguard Worker 'time\n' 15523*cda5da8dSAndroid Build Coastguard Worker 'it is tested) the suite of the "else" clause, if present, is ' 15524*cda5da8dSAndroid Build Coastguard Worker 'executed\n' 15525*cda5da8dSAndroid Build Coastguard Worker 'and the loop terminates.\n' 15526*cda5da8dSAndroid Build Coastguard Worker '\n' 15527*cda5da8dSAndroid Build Coastguard Worker 'A "break" statement executed in the first suite terminates the ' 15528*cda5da8dSAndroid Build Coastguard Worker 'loop\n' 15529*cda5da8dSAndroid Build Coastguard Worker 'without executing the "else" clause’s suite. A "continue" ' 15530*cda5da8dSAndroid Build Coastguard Worker 'statement\n' 15531*cda5da8dSAndroid Build Coastguard Worker 'executed in the first suite skips the rest of the suite and goes ' 15532*cda5da8dSAndroid Build Coastguard Worker 'back\n' 15533*cda5da8dSAndroid Build Coastguard Worker 'to testing the expression.\n', 15534*cda5da8dSAndroid Build Coastguard Worker 'with': 'The "with" statement\n' 15535*cda5da8dSAndroid Build Coastguard Worker '********************\n' 15536*cda5da8dSAndroid Build Coastguard Worker '\n' 15537*cda5da8dSAndroid Build Coastguard Worker 'The "with" statement is used to wrap the execution of a block with\n' 15538*cda5da8dSAndroid Build Coastguard Worker 'methods defined by a context manager (see section With Statement\n' 15539*cda5da8dSAndroid Build Coastguard Worker 'Context Managers). This allows common "try"…"except"…"finally" ' 15540*cda5da8dSAndroid Build Coastguard Worker 'usage\n' 15541*cda5da8dSAndroid Build Coastguard Worker 'patterns to be encapsulated for convenient reuse.\n' 15542*cda5da8dSAndroid Build Coastguard Worker '\n' 15543*cda5da8dSAndroid Build Coastguard Worker ' with_stmt ::= "with" ( "(" with_stmt_contents ","? ")" | ' 15544*cda5da8dSAndroid Build Coastguard Worker 'with_stmt_contents ) ":" suite\n' 15545*cda5da8dSAndroid Build Coastguard Worker ' with_stmt_contents ::= with_item ("," with_item)*\n' 15546*cda5da8dSAndroid Build Coastguard Worker ' with_item ::= expression ["as" target]\n' 15547*cda5da8dSAndroid Build Coastguard Worker '\n' 15548*cda5da8dSAndroid Build Coastguard Worker 'The execution of the "with" statement with one “item” proceeds as\n' 15549*cda5da8dSAndroid Build Coastguard Worker 'follows:\n' 15550*cda5da8dSAndroid Build Coastguard Worker '\n' 15551*cda5da8dSAndroid Build Coastguard Worker '1. The context expression (the expression given in the "with_item") ' 15552*cda5da8dSAndroid Build Coastguard Worker 'is\n' 15553*cda5da8dSAndroid Build Coastguard Worker ' evaluated to obtain a context manager.\n' 15554*cda5da8dSAndroid Build Coastguard Worker '\n' 15555*cda5da8dSAndroid Build Coastguard Worker '2. The context manager’s "__enter__()" is loaded for later use.\n' 15556*cda5da8dSAndroid Build Coastguard Worker '\n' 15557*cda5da8dSAndroid Build Coastguard Worker '3. The context manager’s "__exit__()" is loaded for later use.\n' 15558*cda5da8dSAndroid Build Coastguard Worker '\n' 15559*cda5da8dSAndroid Build Coastguard Worker '4. The context manager’s "__enter__()" method is invoked.\n' 15560*cda5da8dSAndroid Build Coastguard Worker '\n' 15561*cda5da8dSAndroid Build Coastguard Worker '5. If a target was included in the "with" statement, the return ' 15562*cda5da8dSAndroid Build Coastguard Worker 'value\n' 15563*cda5da8dSAndroid Build Coastguard Worker ' from "__enter__()" is assigned to it.\n' 15564*cda5da8dSAndroid Build Coastguard Worker '\n' 15565*cda5da8dSAndroid Build Coastguard Worker ' Note:\n' 15566*cda5da8dSAndroid Build Coastguard Worker '\n' 15567*cda5da8dSAndroid Build Coastguard Worker ' The "with" statement guarantees that if the "__enter__()" ' 15568*cda5da8dSAndroid Build Coastguard Worker 'method\n' 15569*cda5da8dSAndroid Build Coastguard Worker ' returns without an error, then "__exit__()" will always be\n' 15570*cda5da8dSAndroid Build Coastguard Worker ' called. Thus, if an error occurs during the assignment to the\n' 15571*cda5da8dSAndroid Build Coastguard Worker ' target list, it will be treated the same as an error occurring\n' 15572*cda5da8dSAndroid Build Coastguard Worker ' within the suite would be. See step 7 below.\n' 15573*cda5da8dSAndroid Build Coastguard Worker '\n' 15574*cda5da8dSAndroid Build Coastguard Worker '6. The suite is executed.\n' 15575*cda5da8dSAndroid Build Coastguard Worker '\n' 15576*cda5da8dSAndroid Build Coastguard Worker '7. The context manager’s "__exit__()" method is invoked. If an\n' 15577*cda5da8dSAndroid Build Coastguard Worker ' exception caused the suite to be exited, its type, value, and\n' 15578*cda5da8dSAndroid Build Coastguard Worker ' traceback are passed as arguments to "__exit__()". Otherwise, ' 15579*cda5da8dSAndroid Build Coastguard Worker 'three\n' 15580*cda5da8dSAndroid Build Coastguard Worker ' "None" arguments are supplied.\n' 15581*cda5da8dSAndroid Build Coastguard Worker '\n' 15582*cda5da8dSAndroid Build Coastguard Worker ' If the suite was exited due to an exception, and the return ' 15583*cda5da8dSAndroid Build Coastguard Worker 'value\n' 15584*cda5da8dSAndroid Build Coastguard Worker ' from the "__exit__()" method was false, the exception is ' 15585*cda5da8dSAndroid Build Coastguard Worker 'reraised.\n' 15586*cda5da8dSAndroid Build Coastguard Worker ' If the return value was true, the exception is suppressed, and\n' 15587*cda5da8dSAndroid Build Coastguard Worker ' execution continues with the statement following the "with"\n' 15588*cda5da8dSAndroid Build Coastguard Worker ' statement.\n' 15589*cda5da8dSAndroid Build Coastguard Worker '\n' 15590*cda5da8dSAndroid Build Coastguard Worker ' If the suite was exited for any reason other than an exception, ' 15591*cda5da8dSAndroid Build Coastguard Worker 'the\n' 15592*cda5da8dSAndroid Build Coastguard Worker ' return value from "__exit__()" is ignored, and execution ' 15593*cda5da8dSAndroid Build Coastguard Worker 'proceeds\n' 15594*cda5da8dSAndroid Build Coastguard Worker ' at the normal location for the kind of exit that was taken.\n' 15595*cda5da8dSAndroid Build Coastguard Worker '\n' 15596*cda5da8dSAndroid Build Coastguard Worker 'The following code:\n' 15597*cda5da8dSAndroid Build Coastguard Worker '\n' 15598*cda5da8dSAndroid Build Coastguard Worker ' with EXPRESSION as TARGET:\n' 15599*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 15600*cda5da8dSAndroid Build Coastguard Worker '\n' 15601*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 15602*cda5da8dSAndroid Build Coastguard Worker '\n' 15603*cda5da8dSAndroid Build Coastguard Worker ' manager = (EXPRESSION)\n' 15604*cda5da8dSAndroid Build Coastguard Worker ' enter = type(manager).__enter__\n' 15605*cda5da8dSAndroid Build Coastguard Worker ' exit = type(manager).__exit__\n' 15606*cda5da8dSAndroid Build Coastguard Worker ' value = enter(manager)\n' 15607*cda5da8dSAndroid Build Coastguard Worker ' hit_except = False\n' 15608*cda5da8dSAndroid Build Coastguard Worker '\n' 15609*cda5da8dSAndroid Build Coastguard Worker ' try:\n' 15610*cda5da8dSAndroid Build Coastguard Worker ' TARGET = value\n' 15611*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 15612*cda5da8dSAndroid Build Coastguard Worker ' except:\n' 15613*cda5da8dSAndroid Build Coastguard Worker ' hit_except = True\n' 15614*cda5da8dSAndroid Build Coastguard Worker ' if not exit(manager, *sys.exc_info()):\n' 15615*cda5da8dSAndroid Build Coastguard Worker ' raise\n' 15616*cda5da8dSAndroid Build Coastguard Worker ' finally:\n' 15617*cda5da8dSAndroid Build Coastguard Worker ' if not hit_except:\n' 15618*cda5da8dSAndroid Build Coastguard Worker ' exit(manager, None, None, None)\n' 15619*cda5da8dSAndroid Build Coastguard Worker '\n' 15620*cda5da8dSAndroid Build Coastguard Worker 'With more than one item, the context managers are processed as if\n' 15621*cda5da8dSAndroid Build Coastguard Worker 'multiple "with" statements were nested:\n' 15622*cda5da8dSAndroid Build Coastguard Worker '\n' 15623*cda5da8dSAndroid Build Coastguard Worker ' with A() as a, B() as b:\n' 15624*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 15625*cda5da8dSAndroid Build Coastguard Worker '\n' 15626*cda5da8dSAndroid Build Coastguard Worker 'is semantically equivalent to:\n' 15627*cda5da8dSAndroid Build Coastguard Worker '\n' 15628*cda5da8dSAndroid Build Coastguard Worker ' with A() as a:\n' 15629*cda5da8dSAndroid Build Coastguard Worker ' with B() as b:\n' 15630*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 15631*cda5da8dSAndroid Build Coastguard Worker '\n' 15632*cda5da8dSAndroid Build Coastguard Worker 'You can also write multi-item context managers in multiple lines if\n' 15633*cda5da8dSAndroid Build Coastguard Worker 'the items are surrounded by parentheses. For example:\n' 15634*cda5da8dSAndroid Build Coastguard Worker '\n' 15635*cda5da8dSAndroid Build Coastguard Worker ' with (\n' 15636*cda5da8dSAndroid Build Coastguard Worker ' A() as a,\n' 15637*cda5da8dSAndroid Build Coastguard Worker ' B() as b,\n' 15638*cda5da8dSAndroid Build Coastguard Worker ' ):\n' 15639*cda5da8dSAndroid Build Coastguard Worker ' SUITE\n' 15640*cda5da8dSAndroid Build Coastguard Worker '\n' 15641*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.1: Support for multiple context expressions.\n' 15642*cda5da8dSAndroid Build Coastguard Worker '\n' 15643*cda5da8dSAndroid Build Coastguard Worker 'Changed in version 3.10: Support for using grouping parentheses to\n' 15644*cda5da8dSAndroid Build Coastguard Worker 'break the statement in multiple lines.\n' 15645*cda5da8dSAndroid Build Coastguard Worker '\n' 15646*cda5da8dSAndroid Build Coastguard Worker 'See also:\n' 15647*cda5da8dSAndroid Build Coastguard Worker '\n' 15648*cda5da8dSAndroid Build Coastguard Worker ' **PEP 343** - The “with” statement\n' 15649*cda5da8dSAndroid Build Coastguard Worker ' The specification, background, and examples for the Python ' 15650*cda5da8dSAndroid Build Coastguard Worker '"with"\n' 15651*cda5da8dSAndroid Build Coastguard Worker ' statement.\n', 15652*cda5da8dSAndroid Build Coastguard Worker 'yield': 'The "yield" statement\n' 15653*cda5da8dSAndroid Build Coastguard Worker '*********************\n' 15654*cda5da8dSAndroid Build Coastguard Worker '\n' 15655*cda5da8dSAndroid Build Coastguard Worker ' yield_stmt ::= yield_expression\n' 15656*cda5da8dSAndroid Build Coastguard Worker '\n' 15657*cda5da8dSAndroid Build Coastguard Worker 'A "yield" statement is semantically equivalent to a yield ' 15658*cda5da8dSAndroid Build Coastguard Worker 'expression.\n' 15659*cda5da8dSAndroid Build Coastguard Worker 'The yield statement can be used to omit the parentheses that would\n' 15660*cda5da8dSAndroid Build Coastguard Worker 'otherwise be required in the equivalent yield expression ' 15661*cda5da8dSAndroid Build Coastguard Worker 'statement.\n' 15662*cda5da8dSAndroid Build Coastguard Worker 'For example, the yield statements\n' 15663*cda5da8dSAndroid Build Coastguard Worker '\n' 15664*cda5da8dSAndroid Build Coastguard Worker ' yield <expr>\n' 15665*cda5da8dSAndroid Build Coastguard Worker ' yield from <expr>\n' 15666*cda5da8dSAndroid Build Coastguard Worker '\n' 15667*cda5da8dSAndroid Build Coastguard Worker 'are equivalent to the yield expression statements\n' 15668*cda5da8dSAndroid Build Coastguard Worker '\n' 15669*cda5da8dSAndroid Build Coastguard Worker ' (yield <expr>)\n' 15670*cda5da8dSAndroid Build Coastguard Worker ' (yield from <expr>)\n' 15671*cda5da8dSAndroid Build Coastguard Worker '\n' 15672*cda5da8dSAndroid Build Coastguard Worker 'Yield expressions and statements are only used when defining a\n' 15673*cda5da8dSAndroid Build Coastguard Worker '*generator* function, and are only used in the body of the ' 15674*cda5da8dSAndroid Build Coastguard Worker 'generator\n' 15675*cda5da8dSAndroid Build Coastguard Worker 'function. Using yield in a function definition is sufficient to ' 15676*cda5da8dSAndroid Build Coastguard Worker 'cause\n' 15677*cda5da8dSAndroid Build Coastguard Worker 'that definition to create a generator function instead of a normal\n' 15678*cda5da8dSAndroid Build Coastguard Worker 'function.\n' 15679*cda5da8dSAndroid Build Coastguard Worker '\n' 15680*cda5da8dSAndroid Build Coastguard Worker 'For full details of "yield" semantics, refer to the Yield ' 15681*cda5da8dSAndroid Build Coastguard Worker 'expressions\n' 15682*cda5da8dSAndroid Build Coastguard Worker 'section.\n'} 15683