code: def zero_pad(
      x: Union[ivy.Array, ivy.NativeArray],
      /,
      pad_width: Iterable[Tuple[int]],
      *,
      out: Optional[ivy.Array] = None,
  ) -> ivy.Array:
      """Pad an array with zeros.
  
      Parameters
      ----------
      x
          Input array to pad.
      pad_width
          Number of values padded to the edges of each axis. Specified as
          ((before_1, after_1), … (before_N, after_N)), where N is number of axes of x.
      out
          optional output array, for writing the result to. It must have a shape that the
          inputs broadcast to.
  
      Returns
      -------
      ret
          Padded array of rank equal to x with shape increased according to pad_width.
  
      This function conforms to the `Array API Standard
      <https://data-apis.org/array-api/latest/>`_. This docstring is an extension of the
      `docstring <https://data-apis.org/array-api/latest/
      API_specification/generated/array_api.concat.html>`_
      in the standard.
  
      Both the description and the type hints above assumes an array input for simplicity,
      but this function is *nestable*, and therefore also accepts :class:`ivy.Container`
      instances in place of any of the arguments.
  
      Examples
      --------
      With :class:`ivy.Array` input:
  
      >>> x = ivy.array([1., 2., 3.,4, 5, 6])
      >>> y = ivy.zero_pad(x, pad_width = [[2, 3]])
      >>> print(y)
      ivy.array([0., 0., 1., 2., 3., 4., 5., 6., 0., 0., 0.])
  
      >>> x = ivy.array([[1., 2., 3.],[4, 5, 6]])
      >>> y = ivy.zero_pad(x, pad_width = [[2, 3], [2, 3]])
      >>> print(y)
      ivy.array([[0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 1., 2., 3., 0., 0., 0.],
         [0., 0., 4., 5., 6., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0.]])
  
      >>> x = ivy.Container(a = ivy.array([1., 2., 3.]), b = ivy.array([3., 4., 5.]))
      >>> y = ivy.zero_pad(x, pad_width = [[2, 3]])
      >>> print(y)
      {
          a: ivy.array([0., 0., 1., 2., 3., 0., 0., 0.]),
          b: ivy.array([0., 0., 3., 4., 5., 0., 0., 0.])
      }
      """
      return current_backend(x).zero_pad(x, pad_width, out=out)
  
imports: from typing import Union, Optional, Tuple, List, Iterable, Sequence
  from numbers import Number
  from numpy.core.numeric import normalize_axis_tuple
  import ivy
  from ivy.utils.backend import current_backend
  from ivy.func_wrapper import handle_array_function, to_native_arrays_and_back, handle_out_argument, handle_nestable, handle_array_like_without_promotion, handle_view, handle_device, handle_backend_invalid
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 17 for calling a global function with example usage: zero_pad(pad_width) and returns: current_backend