Comments
# starts a comment that runs to the end of the line.
# A comment on its own line
x = 1 # A trailing commentA string literal as the first statement of a module, function, or class body parses and is discarded. There is no __doc__ at runtime.
Line joining
A statement continues on the next line after a trailing backslash, or freely inside (), [], and {}.
3 ['a', 'b']Identifiers and assignment
Identifiers start with a letter or underscore and continue with letters, digits, and underscores. Non-ASCII characters are allowed.
0 0 0Tuple unpacking
1 2
1 [2, 3, 4] 5
10 20Targets can also be attributes, subscripts, parenthesized lists, or nested patterns.
[1] 0
3 4 5 6 7A starred target such as *middle must be a plain name.
Walrus operator
:= assigns as an expression. Useful in conditions and comprehensions.
3Numbers
Integer literals are decimal by default, with 0x hex, 0o octal, and 0b binary forms. _ may separate digits. The value range and overflow behavior: Data types.
3735928559
511
170
1000000An underscore must sit between two digits. 1_, 1__2, and 0x_1 are rejected.
Float literals are IEEE-754 doubles.
3.14
1e-05
0.5
1e+16Complex literals such as 1j do not exist.
Strings
Strings take single, double, or triple quotes. An r prefix makes a raw string where backslashes stay literal. Adjacent literals concatenate into one. A b prefix builds bytes instead of a string.
single
double
triple
quoted
raw\n
hello worldEscape sequences
Supported escapes are \n, \t, \r, \a, \b, \f, \v, \\, \', \", \0, \xHH, \uHHHH, \UHHHHHHHH, and \NNN with 1 to 3 octal digits. An unknown escape keeps its backslash. Named escapes such as \N{GREEK SMALL LETTER ALPHA} are not supported and stay literal.
line break
tab
A hex
é unicode
Af-strings
hello world
answer is 43
0042
3.142
0xff
'world'
{literal braces}The format spec is [[fill]align][sign][#][0][width][,|_][.precision][type]. The conversions !r, !s, and !a come before the spec. Type characters are b c d e E f F g G n o s x X %. The , and _ options group digits, every three for decimal output and every four for _ with b, o, x, or X.
Booleans and None
The literals are True, False, and None. not negates. Truthiness rules: Data types.
True False None
FalseOperators
Arithmetic
10 4 21 2.3333333333333335
2 1 1024
-5 5/ always yields a float. // and % use floored division, so the result of % takes the sign of the divisor. With a string on the left, % is printf-style formatting (see Methods).
3 of piesComparison and chaining
Comparisons chain. Ordering works on numbers, strings, bytes, and on lists or tuples compared lexicographically. Mixing types that cannot be ordered raises TypeError.
True
True
True
Truecannot orderLogical
and and or short-circuit and return the deciding operand, not a coerced bool.
second
fallback
defaultBitwise
1 7 6 -6
16 8Membership and identity
True
True
True
True
TrueAugmented assignment
+= -= *= /= //= %= **= &= |= ^= <<= >>=
30Conditional expression
bigContainers
Literal forms: [1, 2, 3] is a list, (1, 2, 3) a tuple, (1,) a one-element tuple, () an empty tuple, {"a": 1} a dict, {1, 2, 3} a set. {} is an empty dict, so the empty set is set(). Semantics and methods: Data types and Methods.
(1,) ()
<class 'dict'> <class 'set'>Indexing and slicing
Indices start at 0. Negative indices count back from the end. Slices take [start:stop:step], and any part may be omitted. A negative step walks backwards.
1 5
[2, 3, 4]
[1, 2]
[4, 5]
[1, 3, 5]
[5, 4, 3, 2, 1]Comprehensions
[0, 1, 4, 9, 16]
[0, 2, 4, 6, 8]
[(0, 0), (0, 1), (1, 0), (1, 1)]
[[], [0], [0, 1]]
{0: 0, 1: 1, 2: 4, 3: 9}
[0, 1, 2]Generator expressions: Functions.
Type annotations
Annotations parse on variables, parameters, and return positions. They have no runtime effect. There is no __annotations__ and no runtime check. Treat them as documentation for humans and static analyzers.
7
ab