code: def get_variable(mesh, name, shape, dtype=tf.float32,
                   master_dtype=None, slice_dtype=None, activation_dtype=None,
                   initializer=None, trainable=True,
                   **kwargs):
    
    if dtype is None:
      dtype = VariableDType(master_dtype, slice_dtype, activation_dtype)
    elif isinstance(dtype, tf.DType):
      dtype = VariableDType(
          master_dtype or dtype, slice_dtype or dtype, activation_dtype or dtype)
    elif not isinstance(dtype, VariableDType):
      raise ValueError("dtype should be a tf.dtype or a mtf.VariableDType")
    scope_name = tf.get_variable_scope().name
    if scope_name:
      full_name = scope_name + "/" + name
    else:
      full_name = name
    if full_name in mesh.graph.name_to_variable:
      var = mesh.graph.name_to_variable[full_name]
    else:
      var = Variable(
          mesh, name, convert_to_shape(shape), dtype, initializer, trainable,
          **kwargs)
      if var.name != full_name:
        raise ValueError(
            "Expected var.name == full_name.  %s vs %s" % (var.name, full_name))
      mesh.graph.name_to_variable[full_name] = var
    return var.outputs[0]
docs: Create a new variable or retrieve an already-created one.
  
    Args:
      mesh: a Mesh
      name: a string (uses the existing tf.variable_scope())
      shape: a Shape
      dtype: a VariableDType or a tf.DType
      master_dtype: an optional tf.DType (deprecated - use dtype arg)
      slice_dtype: an optional tf.DType (deprecated - use dtype arg)
      activation_dtype: an optional tf.DType (deprecated - use dtype arg)
      initializer: an optional tf initializer function
      trainable: a boolean
      **kwargs: additional keyword arguments to tf.get_variable
  
    Returns:
      a Tensor with the given shape and dtype equal to dtype.activation_dtype