Насколько эффективно извлекает значение из функции (python) и передает его в контекст (Django) - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть функция в отдельном django файле function.py.

Моя функция состоит из длинных вычислений, которые я затем перехожу к представлениям. внутри основной функции есть функции a(). Это как передать значение (это самая короткая версия, чтобы передать вам идею о том, что я пытаюсь сказать).

def a():

    x=3
    y=4
    z=6


    def b():
        x1=x+1
        return x1

    def c():
        y1=y+1
        return y1

    def d():
         z1=z+1


   return b(), c(), d()



def home(request):

abc=a()

context={'value1':abc[0],'value2':abc[1],'value3':abc[2],}

print(value1)

Вот как я передаю значение. Это эффективный способ или есть более эффективные способы передачи значений из функции, поскольку до сих пор я вручную передавал context in views через индексацию, как я это сделал. Каково ваше мнение, чтобы облегчить мою работу?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2020

Жесткое кодирование индексов обычно считается не-Pythoni c. Чтобы избежать этого, вы можете сжать имена с помощью кортежа, возвращенного функцией, а затем передать заархивированную последовательность кортежей в конструктор dict:

context = dict(zip(('value1', 'value2', 'value3'), a()))

Если у вас есть дополнительные переменные контекста, вы можете вместо этого распакуйте вышесказанное в буквальном смысле с другими элементами:

context = {'other1': 1, 'other2': 2, **dict(zip(('value1', 'value2', 'value3'), a()))}
2 голосов
/ 14 апреля 2020

Если ab c возвращает три значения, то я придерживаюсь полученного вами кода.

Если abc вернул много значений (или произвольное число значений), то вы могли бы использовать понимание словаря.

context = {'value%s' % i: j for i, j in enumerate(abc, 1)}

Это не будет более эффективным с точки зрения производительности представления, но может сделать код более легким для чтения / поддержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...