code: def kronecker_product(*matrices):
      """
      The Kronecker product of two or more arguments.
  
      This computes the explicit Kronecker product for subclasses of
      ``MatrixBase`` i.e. explicit matrices. Otherwise, a symbolic
      ``KroneckerProduct`` object is returned.
  
  
      Examples
      ========
  
      For ``MatrixSymbol`` arguments a ``KroneckerProduct`` object is returned.
      Elements of this matrix can be obtained by indexing, or for MatrixSymbols
      with known dimension the explicit matrix can be obtained with
      ``.as_explicit()``
  
      >>> from sympy import kronecker_product, MatrixSymbol
      >>> A = MatrixSymbol('A', 2, 2)
      >>> B = MatrixSymbol('B', 2, 2)
      >>> kronecker_product(A)
      A
      >>> kronecker_product(A, B)
      KroneckerProduct(A, B)
      >>> kronecker_product(A, B)[0, 1]
      A[0, 0]*B[0, 1]
      >>> kronecker_product(A, B).as_explicit()
      Matrix([
          [A[0, 0]*B[0, 0], A[0, 0]*B[0, 1], A[0, 1]*B[0, 0], A[0, 1]*B[0, 1]],
          [A[0, 0]*B[1, 0], A[0, 0]*B[1, 1], A[0, 1]*B[1, 0], A[0, 1]*B[1, 1]],
          [A[1, 0]*B[0, 0], A[1, 0]*B[0, 1], A[1, 1]*B[0, 0], A[1, 1]*B[0, 1]],
          [A[1, 0]*B[1, 0], A[1, 0]*B[1, 1], A[1, 1]*B[1, 0], A[1, 1]*B[1, 1]]])
  
      For explicit matrices the Kronecker product is returned as a Matrix
  
      >>> from sympy import Matrix, kronecker_product
      >>> sigma_x = Matrix([
      ... [0, 1],
      ... [1, 0]])
      ...
      >>> Isigma_y = Matrix([
      ... [0, 1],
      ... [-1, 0]])
      ...
      >>> kronecker_product(sigma_x, Isigma_y)
      Matrix([
      [ 0, 0,  0, 1],
      [ 0, 0, -1, 0],
      [ 0, 1,  0, 0],
      [-1, 0,  0, 0]])
  
      See Also
      ========
          KroneckerProduct
  
      """
      if not matrices:
          raise TypeError("Empty Kronecker product is undefined")
      if len(matrices) == 1:
          return matrices[0]
      else:
          return KroneckerProduct(*matrices).doit()
  
imports: from functools import reduce
  from math import prod
  from sympy.core import Mul, sympify
  from sympy.functions import adjoint
  from sympy.matrices.exceptions import ShapeError
  from sympy.matrices.expressions.matexpr import MatrixExpr
  from sympy.matrices.expressions.transpose import transpose
  from sympy.matrices.expressions.special import Identity
  from sympy.matrices.matrixbase import MatrixBase
  from sympy.strategies import canon, condition, distribute, do_one, exhaust, flatten, typed, unpack
  from sympy.strategies.traverse import bottom_up
  from sympy.utilities import sift
  from .matadd import MatAdd
  from .matmul import MatMul
  from .matpow import MatPow
label_desc: Use image node_id 1 for calling a global function with example usage: kronecker_product() and returns: matrices, KroneckerProduct