Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Получить несколько переменных из функции через return

#python #python_3x #функции


Всем привет! такой вопрос, есть функция, например:

def func():
    r = requests.get('mysite.com')
    r1 = r.cookies('example1')
    r2 = r.cookies('example2')
    return r1, r2


как мне получить значения r1 и r2 максимально удобно из конструкции типа

z1 = func()
z2 = func()


но не вызывая функцию 2 раза? (чтобы не делать 2 запроса) и чтобы  z1 присвоился
строго r1, а z2- строго r2.
    


Ответы

Ответ 1



Присвойте оба значения сразу: z1, z2 = func()

Ответ 2



Функция func() возвращает кортеж (r1, r2) Если Вы выполните: r1_2 = func() В r1_2 будет кортеж (r1, r2), к которому можно обращаться по индексу: z1 = r1_2[0] z2 = r1_2[1] Можно сократить код, воспользовавшись особой магией питона: z1, z2 = func()

Ответ 3



Строго говоря, функция в Python всегда возвращает ОДНО значение. Однако это значение - любого типа. Например - кортеж, который вы можете распаковать указанными способами. Для удобства чтения кода пишут как у вас: return r1, r2 однако точно так же все будет работать, если вы подчеркнете тот факт, что возвращается кортеж явно указав скобки: return (r1, r2) где-то в PEP-8 рекомендуется первый ("ваш") вариант, однако иногда это приводит даже к синтаксическим ошибкам!! Не могу вспомнить где я это видел, но пример такой: def foo(): l = [1,2,3] a0, *a = l return a0, *a выдает ошибку, а это : def foo(): l = [1,2,3] a0, *a = l return (a0, *a) нет!

Комментариев нет:

Отправить комментарий