On Sat, Jan 26, 2019 at 10:43 AM David Mertz <me...@gnosis.cx> wrote:

> No. It's simpler than that! Functions return a single value, period.
>
> That single value might happen to be a tuple or something else unpackable.
>

d'uh -- I was thinking common use case.


> This makes it feel like we have multiple return values, but we never
> actually do. The fact that "tuples are spelled by commas not by
> parentheses" makes this distinction easy to ignore most of the time.
>

yup. And  unpacking behavior. So I guess the correct way to phrase that is
that functions return a single object, and that object may or may not be
unpackable.

Key to this is that unlike function parameters, python isn't doing anything
special when returning a value form a function, or when assigning a value
to a name:

* functions return a value

* assignment applies unpacking when assigning to multiple names.

These two things are orthogonal in the language.

The challenge in this case is that when you assign to a single name, there
is no unpacking:

x = 3,

So in this case,  the 1-tuple doesn't get unpacked  --  when you are
assigning to a single name, there is no unpacking to be done.

but you can unpack a one-tuple, by assigning to  name with a trailing comma:

In [62]: x, = (3,)


In [63]: x

Out[63]: 3

So the challenge is that to support this new feature, we'd need to changing
assignment, so that:

x = an_object

would look at an_object, and determine if it was one of these
function_return_objects that should have the first value unpacked if
assigned to a single name, but unpack the others if assigned to a tuple of
names -- and THAT is a pretty big change!

And it would still create odd behavior if teh function return value were
not assigned right away, but stored in some other container:

a_list = [fun1(), fun2()]

So really, there is no way to create this functionality without major
changes to the language.

-CHB


-CHB

-- 
Christopher Barker, PhD

Python Language Consulting
  - Teaching
  - Scientific Software Development
  - Desktop GUI and Web Development
  - wxPython, numpy, scipy, Cython
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to