code: def cartesian_product(args):
      pools = map(tuple, args)
      result = [[]]
      for pool in pools:
          result = [x + [y] for x in result for y in pool]
      for prod in result:
          yield tuple(prod)
  
imports: from ..libmp.backend import xrange
  from .calculus import defun
label_desc: Use image node_id 11 for calling a global function with example usage: cartesian_product(args) without return types