#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) нет!
Комментариев нет:
Отправить комментарий