code: def vf2pp_isomorphism(G1, G2, node_label=None, default_label=None):
      """Return an isomorphic mapping between `G1` and `G2` if it exists.
  
      Parameters
      ----------
      G1, G2 : NetworkX Graph or MultiGraph instances.
          The two graphs to check for isomorphism.
  
      node_label : str, optional
          The name of the node attribute to be used when comparing nodes.
          The default is `None`, meaning node attributes are not considered
          in the comparison. Any node that doesn't have the `node_label`
          attribute uses `default_label` instead.
  
      default_label : scalar
          Default value to use when a node doesn't have an attribute
          named `node_label`. Default is `None`.
  
      Returns
      -------
      dict or None
          Node mapping if the two graphs are isomorphic. None otherwise.
      """
      try:
          mapping = next(
              vf2pp_all_isomorphisms(G1, G2, node_label, default_label)
          )
          return mapping
      except StopIteration:
          return None
  
file_path: networkx/networkx/algorithms/isomorphism/vf2pp.py
imports: import collections
  import networkx
label_desc: Use image node_id 1 for calling a global function with example usage: vf2pp_isomorphism(G1, G2, node_label, default_label) and returns: mapping, None