[Python-ideas] Default return values to int and float

David Townshend aquavitae69 at gmail.com
Tue Oct 4 10:41:18 CEST 2011


On Tue, Oct 4, 2011 at 9:37 AM, Masklinn <masklinn at masklinn.net> wrote:

>
> On 2011-10-04, at 08:58 , David Townshend wrote:
>
> >>
> >>   def try_convert(target_type, obj, default, ignored=(TypeError,))
> >>       try:
> >>           return target_type(obj)
> >>       except ignored:
> >>           return default
> >>
> >
> > The problem with a general convert function is that to make it work, you
> > would need to account for several variations and the signature gets
> rather
> > clunky.  Personally, I think that the try format:
> >
> >    try:
> >        return float('some text')
> >    except ValueError:
> >        return 42
> >
> > is more readable than
> >
> >    try_convert('some text', float, 42, (ValueError,))
> >
> > because it is clear what it does. The second form is shorter, but not as
> > descriptive. However,
> >
> >    float('some text', default=42)
> >
> > follows the existing syntax quite nicely, and is more readable than
> either
> > of the other options.
> >
> > A generalised try_convert method would be useful, but I think I would
> rather
> > see a one-line version of the try statements, perhaps something like
> this:
> >
> >    x = try float('some text') else 42 if ValueError
> That's basically what the function you've rejected does (you got the
> arguments order wrong):
>
>    x = try_convert(float, 'some text', default=42, ignored=ValueError)
>
> Just rename an argument or two and you have the exact same thing.
>
> Same functionality, but try_convert is a function with lots of arguments
whereas my alternative is an expression.  But to be honest, I don't really
like either.  In cases that require the level of control that try_convert
provides, the try statement is cleaner.  The point I'm really trying to make
is that my initial proposal was for a specific but common use case (float
and int), not a general-purpose conversion tool.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20111004/75bc0e2e/attachment.html>


More information about the Python-ideas mailing list