In article <[email protected]>,
Steven D'Aprano <[email protected]> wrote:
> On Tue, 17 Jul 2012 09:52:59 -0400, Roy Smith wrote:
>
> > you could write in Python:
> >
> > # Type matching will get checked at run-time
> > def my_function(mpf, ot):
> > assert isinstance(mpf, MassivelyParallelFrobinator)
> > assert isinstance(ot, OtherThing)
>
> Keep in mind that assertions are not guaranteed to run. Code like the
> above is buggy, because if Python is run under the -O (optimize) flag,
> assertions will be stripped out.
One could equally say that "code like the above is efficient, because if
Python is run under the -O (optimize) flag, assertions will be stripped
out" :-)
> Better is to use explicit type checks and raise an exception yourself:
>
> if not isinstance(x, int):
> raise TypeError('expected an int, got %r' % x)
Maybe, but that's two lines where one does just fine. If you're going
to go for type-bondage, you might as well be efficient and succinct
about it.
--
http://mail.python.org/mailman/listinfo/python-list