code: def intersection(a, b, presorted=False, buffersize=None, tempdir=None,
                   cache=True):
      
  
      return IntersectionView(a, b, presorted=presorted, buffersize=buffersize,
                              tempdir=tempdir, cache=cache)
docs: Return rows in `a` that are also in `b`. E.g.::
  
          >>> import petl as etl
          >>> table1 = [['foo', 'bar', 'baz'],
          ...           ['A', 1, True],
          ...           ['C', 7, False],
          ...           ['B', 2, False],
          ...           ['C', 9, True]]
          >>> table2 = [['x', 'y', 'z'],
          ...           ['B', 2, False],
          ...           ['A', 9, False],
          ...           ['B', 3, True],
          ...           ['C', 9, True]]
          >>> table3 = etl.intersection(table1, table2)
          >>> table3
          +-----+-----+-------+
          | foo | bar | baz   |
          +=====+=====+=======+
          | 'B' |   2 | False |
          +-----+-----+-------+
          | 'C' |   9 | True  |
          +-----+-----+-------+
  
      If `presorted` is True, it is assumed that the data are already sorted by
      the given key, and the `buffersize`, `tempdir` and `cache` arguments are
      ignored. Otherwise, the data are sorted, see also the discussion of the
      `buffersize`, `tempdir` and `cache` arguments under the
      :func:`petl.transform.sorts.sort` function.