code: def _shape_and_function(
      draw,
      *,
      allow_none=False,
      min_num_dims=1,
      max_num_dims=5,
      min_dim_size=1,
      max_dim_size=10,
  ):
      shape = draw(
          helpers.get_shape(
              allow_none=allow_none,
              min_num_dims=min_num_dims,
              max_num_dims=max_num_dims,
              min_dim_size=min_dim_size,
              max_dim_size=max_dim_size,
          )
      )
  
      VARS = "abcdefghijklmnopqrstuvw"
      args = ""
      out = ""
      for i in range(len(shape)):
          args += f"{VARS[i]},"
          out += f"{VARS[i]}+"
      fn_str = f"lambda {args[:-1]}: {out[:-1]}"
  
      def fn2(*args):
          return args[0]
  
      if len(shape) > 1:
  
          def fn3(*args):
              return args[0] == args[1]
  
      else:
  
          def fn3(*args):
              return args[0] > 10
  
      function = draw(st.sampled_from([eval(fn_str), fn2, fn3]))
  
      return shape, function
  
file_path: ivy/ivy_tests/test_ivy/test_frontends/test_numpy/test_creation_routines/test_from_shape_or_value.py
imports: from hypothesis import strategies
  import ivy_tests.test_ivy.helpers
  import ivy_tests.test_ivy.helpers.globals
  from ivy_tests.test_ivy.helpers import handle_frontend_test, BackendHandler
label_desc: Use image node_id 2 for calling a global function with example usage: _shape_and_function(draw) and returns: shape,  function, args, unknown, unknown