Я продолжаю в этой ситуации, когда я хочу использовать словарь, очень похожий на то, что возвращает «locals», но он содержит только переменные в ограниченной области действия функции , Есть ли способ сделать это в python?Получение локального словаря для области действия только в Python
Немного больше о том, почему я хочу это сделать: я играю с Django, и когда я иду, чтобы дать свой контекст шаблонов, я вынужден либо вручную сделать словарь (нарушая принципы DRY), либо пройти в locals(), который содержит гораздо больше записей, тогда необходимо (расточительно). Возможно, что-то мне не хватает в django, который бы облегчил необходимость решения на уровне python?
уточнить:
Итак, тот случай, когда я ударил несколько раз, где у меня есть:
@render_to('my_template.html')
def myview(request):
var1 = #blahblah
var2 = #...
# do stuff with vars
return {'var1': val1,'var2':val2}
Таким образом, вместо того чтобы повторять эти переменные и именовании, я буду делать:
@render_to('my_template.html')
def myview(request):
var1 = #blahblah
var2 = #...
# do stuff with vars
return locals()
Который я считаю более чистым, но я знаю его тип небрежного, поскольку в locals() есть еще около 30 записей(), тогда мне действительно нужно.
«вручную сделать словарь (в нарушении правил DRY« Что такое создание словаря с нарушением СУХОЙ? » –
Я имею в виду эту конкретную ситуацию. Если вы объявляете переменные (var = blahblah), то несколько строк позже , делая {'var': var}, похоже, вы повторяете свое решение об именах.С четырьмя или пятью переменными он становится утомительным и беспорядочным. – Albinofrenchy
Я не заметил. Во-первых, я не создаю много локальных переменных в своих функциях представления. Обычно только несколько. Если обработка сложная, я вытаскиваю ее из функции просмотра. Во-вторых, я часто загружаю словарь с контекстной информацией, которая не является частью функции просмотра, но создается только в словаре. Повторение обычно составляет только две или три вещи - объект, object_list, а иногда и ключ или два, вытащенные из запроса. –