code: def prefer_static_shape(x):
      """Return static shape of tensor `x` if available, else `tf.shape(x)`.
  
      Args:
        x: `Tensor` (already converted).
  
      Returns:
        Numpy array (if static shape is obtainable), else `Tensor`.
      """
      return prefer_static_value(array_ops.shape(x))
  
imports: import functools
  import hashlib
  import numpy
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import tensor_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import array_ops_stack
  from tensorflow.python.ops import check_ops
  from tensorflow.python.ops import cond
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops import linalg_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn
  from tensorflow.python.util import tf_inspect
label_desc: Use image node_id 21 for calling a global function with example usage: prefer_static_shape(x) and returns: prefer_static_value