Square brackets: []
Lists and indexing/lookup/slicing
- Lists:
[]
, [1, 2, 3]
, [i**2 for i in range(5)]
- Indexing:
'abc'[0]
→ 'a'
- Lookup:
{0: 10}[0]
→ 10
- Slicing:
'abc'[:2]
→ 'ab'
Parentheses: ()
(AKA "round brackets")
Tuples, order of operations, generator expressions, function calls and other syntax.
- Tuples:
()
, (1, 2, 3)
- Although tuples can be created without parentheses:
t = 1, 2
→ (1, 2)
- Order of operations:
(n-1)**2
- Generator expressions:
(i**2 for i in range(5))
- Function or method calls:
print()
, int()
, range(5)
, '1 2'.split(' ')
- with a generator expression:
sum(i**2 for i in range(5))
Curly braces: {}
Dictionaries and sets, as well as in string formatting
- Dicts:
{}
, {0: 10}
, {i: i**2 for i in range(5)}
- Sets:
{0}
, {i**2 for i in range(5)}
- Except the empty set:
set()
- In string formatting to indicate replacement fields:
- F-strings:
f'{foobar}'
- Format strings:
'{}'.format(foobar)
Regular expressions
All of these brackets are also used in regex. Basically, []
are used for character classes, ()
for grouping, and {}
for repetition. For details, see The Regular Expressions FAQ.
Angle brackets: <>
Used when representing certain objects like functions, classes, and class instances if the class doesn't override __repr__()
, for example:
>>> print
<built-in function print>
>>> zip
<class 'zip'>
>>> zip()
<zip object at 0x7f95df5a7340>
(Note that these aren't proper Unicode angle brackets, like ⟨⟩
, but repurposed less-than and greater-than signs.)