[Python-ideas] How assignment should work with generators?

Paul Moore p.f.moore at gmail.com
Mon Nov 27 07:39:43 EST 2017


On 27 November 2017 at 12:31, Kirill Balunov <kirillbalunov at gmail.com> wrote:
> As I can see at the moment, these cases should behave differently:
>
>>>> x, y = [1,2,3,4]             # must raise ValueError
>>>> x, y = iter([1,2,3,4])      # should work
>
> But at the same time, it violates current situation. So maybe, as you have
> said we need special syntax. I will think about it.

I would find this confusing. Consider where you don't have literals:

def f(vals):
    x, y = vals

data = [1,2,3,4]

f(data)
data = iter(data)
f(data)

Having the two calls behave differently would be a recipe for errors
as someone refactors the calling code.

Paul


More information about the Python-ideas mailing list