Search code examples
pythonbrackets

Different meanings of brackets in Python


I am curious, what do the 3 different brackets mean in Python programming? Not sure if I'm correct about this, but please correct me if I'm wrong:

  • [] - Normally used for dictionaries, list items
  • () - Used to identify params
  • {} - I have no idea what this does...

Or if these brackets can be used for other purposes, any advice is welcomed! Thanks!


Solution

  • 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.)