Что такое правило Python о «распаковке» генератора?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Что такое правило Python о «распаковке» генератора?

Сообщение Anonymous »

Вот простой ограниченный генератор: < /p>

Код: Выделить всё

def bounded_naturals(limit):
num = 1
while num 
Если я напишу < /p>
bn_gen = bounded_naturals(3)
< /code>
bn_gen
будет объектом генератора, как и ожидалось.
Но если я напишу

Код: Выделить всё

(a, b, c) = bounded_naturals(3)
< /code>
a
, b и c будут 1, 2 и 3 соответственно. Это поражает меня как странного, поскольку в коде, кажется, нет ничего, что просит генератор создавать значения. Есть ли место в спецификации Python, которое требует этой интерпретации?

Код: Выделить всё

bn_gen = (a, b, c) = bounded_naturals(3)
< /code>
I get both results! bn_gen
будет объектом генератора, а , b и c будет 1, 2 и 3. Как я должен понять, что происходит?
Наконец, если я напишу

Код: Выделить всё

(a, b) = bounded_naturals(3)
< /code>
I get: ValueError: too many values to unpack (expected 2).

Если компилятор достаточно умный, чтобы сделать эти другие трюки, почему он не достаточно умный, чтобы спросить генератор только столько элементов, сколько необходимо в этом случае?>

Подробнее здесь: https://stackoverflow.com/questions/665 ... -generator
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»