Разве не должно быть лучшего способа сделать это?
Там есть - он известен как "функция" ...:
def safeget(adict, key, type, default):
try: return type(adict.get(key, default))
except (ValueError, TypeError): return default
year = safeget(request.GET, 'year', int, 0)
FWIW, я не думаю, что когда-либо использовал этот «шаблон» - различные игнорируемые вами случаи ошибок, похоже, должны обрабатываться отдельно по причинам пользовательского интерфейса (отсутствует необязательное поле по умолчаниюхорошо, но если кто-то ошибочно набрал, скажем, 201o
(ключи 0
и o
закрыты, а в некоторых шрифтах их результаты выглядят похожими), как правило, нехорошо превращать свой ввод в0
Итак, я не думаю, что это так часто и не очень желательно, чтобы требовать что-то вроде специальной синтаксической формы в языке или даже встроенной функции.
Но хорошая вещь оВспомогательные функции, такие как safeget
, заключаются в том, что мы с вами можем мирно согласиться не соглашаться с вопросами проектирования (может быть, мы просто привыкли делать разные виды программного обеспечения, например!), позволяя каждому из нас легко иметь именно такого помощника.ФУНКЦИИКаждый из них желает в своих личных «служебных» модулях! -)