input: Write a function to find and return the top 3 largest numbers from a list of integers. If the list has fewer than 3 numbers, return as many as are available in descending order. The function should handle an empty list by returning an empty list.
  
  assert top_three([7, 13, 5, 8, 50, 11, 64, 48]) == [64, 50, 48]
  assert top_three([5, 1, 2]) == [5, 2, 1]
  assert top_three([3]) == [3]
  assert top_three([]) == []
  assert top_three([10, 10, 10]) == [10, 10, 10]
output: def top_three(nums):
      if not nums:
          return []
      sorted_nums = sorted(nums, reverse=True)
      return sorted_nums[:3]