sorted(a) – функция: исходный список не трогает и возвращает новый. a.sort() – метод: переставляет элементы внутри самого списка и возвращает None.
temps = [5, -3, 7, 0, -8, 2, -1]
print(sorted(temps)) # [-8, -3, -1, 0, 2, 5, 7]
print(temps) # [5, -3, 7, 0, -8, 2, -1]
temps.sort()
print(temps) # [-8, -3, -1, 0, 2, 5, 7]
Главная ошибка – a = a.sort(). Метод честно сортирует список и возвращает None; это None и попадает в a, а упорядоченный список теряется. print(a) напечатает None.
a = [3, 1, 2]
a = a.sort()
print(a) # None
Обе формы принимают reverse=True: sorted(temps, reverse=True) даёт [7, 5, 2, 0, -1, -3, -8]. Меняется направление самого сравнения, поэтому равные элементы сохраняют исходный порядок – после sort() и reverse() он был бы обратным.