Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2016 09:59:14

titov_
Зарегистрирован: 2015-08-02
Сообщения: 31
Репутация: +  0  -
Профиль   Адрес электронной почты  

Распаковывание кортежа

Зачем нужно распаковывание кортежа и чем оно отличается от обычного доступа к данным?

Офлайн

#2 Март 3, 2016 10:39:25

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Распаковывание кортежа

представьте что у вас есть функция

def foo(a,b,c,d): pass
и последовательность (список, кортеж, строка и тп) элементы который вы хотите передать в функцию. Теперь сравните что удобнее:
data = [0, 1, 2, 3]
foo(data[0], data[1], data[2], data[3])
foo(*data)
Это лишь один из примеров.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 3, 2016 10:40:16

Zula
Зарегистрирован: 2015-12-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Распаковывание кортежа

Например, метод может возвращать несколь результатов. Пример из django - метод get_or_create возвращает объект вашей модели и True/False если объект был/не был создан:

my_article = models.Article.objects.get_or_create(...)
print(type(my_article))
>>> <class 'tuple'>
Вы конечно можете в коде после этого использовать:
if my_article[1]:
    send_email_notification(...)
my_article[0].some_useful_field = 'Article title'
my_article[0].save()
Но это же не очень удобно? Так намного удобней и читаемей:
my_article, created = models.Article.objects.get_or_create(...) 
Тут tuple из двух элементов возвращаемый методом get_or_create распаковывается в переменные my_article & created.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version