code: def _print_Integral(self, e):
      integration_vars, limits = _unpack_integral_limits(e)
  
      if len(limits) == 1:
          # nicer (but not necessary) to prefer quad over nquad for 1D case
          module_str = self._module_format("scipy.integrate.quad")
          limit_str = "%s, %s" % tuple(map(self._print, limits[0]))
      else:
          module_str = self._module_format("scipy.integrate.nquad")
          limit_str = "({})".format(
              ", ".join(
                  "(%s, %s)" % tuple(map(self._print, l))
                  for l in limits
              )
          )
  
      return "{}(lambda {}: {}, {})[0]".format(
          module_str,
          ", ".join(map(self._print, integration_vars)),
          self._print(e.args[0]),
          limit_str,
      )
  
imports: from sympy.core import S
  from sympy.core.function import Lambda
  from sympy.core.power import Pow
  from .pycode import PythonCodePrinter, _known_functions_math, _print_known_const, _print_known_func, _unpack_integral_limits, ArrayPrinter
  from .codeprinter import CodePrinter
label_desc: Use image node_id 16 for calling the SciPyPrinter obj's underlying member method code with example usage: obj._print_Integral(e) and returns: str