[Python-3000] optional argument annotations

Guido van Rossum guido at python.org
Fri Nov 24 17:30:12 CET 2006


On 11/24/06, Jim Jewett <jimjjewett at gmail.com> wrote:
> On 11/23/06, Guido van Rossum <guido at python.org> wrote:
> > On 11/23/06, Tony Lownds <tony at pagedna.com> wrote:
> > > I have a working optional argument syntax implementation, I'm hoping
> > > to get some direction on
> > > the implementation decisions so far.... please see below.
>
> I would rather see it integrated into a Signature object (Brett had an
> implementation), instead of showing up as two separate attributes.

Yes, you're right; I forgot about that.

> > >  >>> f.func_returns
> > > Traceback (most recent call last):
> > >    File "<stdin>", line 1, in <module>
> > > AttributeError: 'function' object has no attribute 'func_returns'
>
> > I would prefer this to be None. Attributes that don't always exist are
> > a pain to use.
>
> I suspect he was trying to distinguish "returns None" from "Doesn't
> say what it returns".  There is no good way to do this, but a separate
> flag on a Signature object seems the least bad to me.

Hm, I think it would be fine if there *was* no distinction. IOW if

  def foo(a: None) -> None: pass

was indistinguishable from

  def foo(a): pass

In fact I think I'd prefer it that way. Having an explicit way to say
"no type here, move along" sounds fine. It's different from defaults,
whose absence translates in different behavior (i.e., requiring that a
value be passed in).

(It does imply that we can't use "-> None" to indicate "returns no
value". We'd have to spell that as "-> type(None)" or find some other
way. I think I don't care. Do others? Collin?)

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-3000 mailing list