1) Я бы так написал
sort_value = request.GET.get('sort', default_sort_value)
orm_sort_key, sort_string = parse_sort_argument(sort_value)
2) Как вариант, если много аргументов надо передать функции:
orm_sort_key, sort_string = parse_sort_argument(
request.GET.get('sort', default_sort_value),
)
Сниппет из жизни: в коде встречается много подобных ветвлений:
if one:
if two:
if three:
if four:
success()
else:
print error4
else:
print error3
else:
print error2
else:
print error1
Вот придумал такой вот ход (может и не я первый придумал):
class Break(Exception): pass
try:
if not one:
raise Break(error1)
if not two:
raise Break(error2)
if not three:
raise Break(error3)
if not four:
raise Break(error4)
success()
except Break, e:
print e
except AnotherError, e:
print e
Как вы считаете, нормальное решение для длинных ветвлений? Мне оно кажется самым линейным, понятным и надёжным.
Я вообще стараюсь использовать вместо логики “if” логику “if not”, это хорошо экономит отступы.