docs: def numericise(value, empty2zero=False, default_blank="", allow_underscores_in_numeric_literals=False):
      """Returns a value that depends on the input string:
          - Float if input can be converted to Float
          - Integer if input can be converted to integer
          - Zero if the input string is empty and empty2zero flag is set
          - The same input string, empty or not, otherwise.
  
      Executable examples:
  
      >>> numericise("faa")
      'faa'
      >>> numericise("3")
      3
      >>> numericise("3_2", allow_underscores_in_numeric_literals=False)
      '3_2'
      >>> numericise("3_2", allow_underscores_in_numeric_literals=True)
      '32'
      >>> numericise("3.1")
      3.1
      >>> numericise("", empty2zero=True)
      0
      >>> numericise("", empty2zero=False)
      ''
      >>> numericise("", default_blank=None)
      >>>
      >>> numericise("", default_blank="foo")
      'foo'
      >>> numericise("")
      ''
      >>> numericise(None)
      >>>
      """
      if value is not None:
          if "_" in value and not allow_underscores_in_numeric_literals:
              return value
          try:
              value = int(value)
          except ValueError:
              try:
                  value = float(value)
              except ValueError:
                  if value == "":
                      if empty2zero:
                          value = 0
                      else:
                          value = default_blank
  
      return value