Найти - Пользователи
Полная версия: Распаковывание кортежа
Начало » Python для новичков » Распаковывание кортежа
1
titov_
Зачем нужно распаковывание кортежа и чем оно отличается от обычного доступа к данным?
JOHN_16
представьте что у вас есть функция
def foo(a,b,c,d): pass
и последовательность (список, кортеж, строка и тп) элементы который вы хотите передать в функцию. Теперь сравните что удобнее:
data = [0, 1, 2, 3]
foo(data[0], data[1], data[2], data[3])
foo(*data)
Это лишь один из примеров.
Zula
Например, метод может возвращать несколь результатов. Пример из 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.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB