code: def from_product(cls, iterables, sortorder=None, names=None):
          
          from pandas.core.arrays.categorical import _factorize_from_iterables
          from pandas.core.reshape.util import cartesian_product
  
          if not is_list_like(iterables):
              raise TypeError("Input must be a list / sequence of iterables.")
          elif is_iterator(iterables):
              iterables = list(iterables)
  
          codes, levels = _factorize_from_iterables(iterables)
          codes = cartesian_product(codes)
          return MultiIndex(levels, codes, sortorder=sortorder, names=names)
docs: Make a MultiIndex from the cartesian product of multiple iterables.
  
          Parameters
          ----------
          iterables : list / sequence of iterables
              Each iterable has unique labels for each level of the index.
          sortorder : int or None
              Level of sortedness (must be lexicographically sorted by that
              level).
          names : list / sequence of str, optional
              Names for the levels in the index.
  
          Returns
          -------
          index : MultiIndex
  
          See Also
          --------
          MultiIndex.from_arrays : Convert list of arrays to MultiIndex.
          MultiIndex.from_tuples : Convert list of tuples to MultiIndex.
          MultiIndex.from_frame : Make a MultiIndex from a DataFrame.
  
          Examples
          --------
          >>> numbers = [0, 1, 2]
          >>> colors = ['green', 'purple']
          >>> pd.MultiIndex.from_product([numbers, colors],
          ...                            names=['number', 'color'])
          MultiIndex(levels=[[0, 1, 2], ['green', 'purple']],
                     codes=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
                     names=['number', 'color'])