Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #52079

Re: Newbie: static typing?

From Terry Reedy <tjreedy@udel.edu>
Subject Re: Newbie: static typing?
Date 2013-08-06 19:02 -0400
References (1 earlier) <mailman.223.1375749359.1251.python-list@python.org> <ktqdkq$v3k$1@dont-email.me> <mailman.233.1375781390.1251.python-list@python.org> <ktqin6$n5u$1@dont-email.me> <CAPTjJmqz5jenHXqBdQWfoG_FUhUPQ7=TH1eS3MhVHiK2oAnjcA@mail.gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.279.1375830173.1251.python-list@python.org> (permalink)

Show all headers | View raw


On 8/6/2013 6:50 AM, Chris Angelico wrote:
> On Tue, Aug 6, 2013 at 11:28 AM, Rui Maciel <rui.maciel@gmail.com> wrote:
>> Chris Angelico wrote:
>>> def add_three_values(x,y,z):
>>>      return x+y+z
>>>
>>> Do you want to test these values for compatibility? Remember, you
>>> could take a mixture of types, as most of the numeric types can safely
>>> be added. You can also add strings, or lists, but you can't mix them.
>>> And look! It already raises TypeError if it's given something
>>> unsuitable:
>>
>> If the type problems aren't caught right away when the invalid types are
>> passed to a function then the problem may only manifest itself in some far
>> away point in the code, making this bug needlessly harder to spot and fix,
>> and making the whole ordeal needlessly too time consuming.
>
> There are two problems that can result from not checking:
>
> 1) The traceback will be deeper and may be less clear.
>
> 2) Some code will be executed and then an exception thrown.

3) The code falls into an infinite loop or recursion.

The solution is to think before looping or recursing.  This often 
involves value checking (non-negative int or non-fractional float, for 
instance) rather than type checking in the usual static type-checking sense.

One also needs to be careful about passing unbounded iterators to other 
functions and remember that unboundedness is contagious. (filter(pred, 
unbounded_iterator) is an unbounded iterator). Again, this is a 'value' 
or implicit sub-type issue rather than a explicit, visible 'type' issue.

Infinite recursion will be caught eventually when memory runs out (and 
that is an advantage of recursion over iteration ;-), but I prefer to 
avoid it anyway.

-- 
Terry Jan Reedy

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-05 21:46 +0100
  Re: Newbie: static typing? Gary Herron <gary.herron@islandtraining.com> - 2013-08-05 14:07 -0700
    Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 10:05 +0100
      Re: Newbie: static typing? Steven D'Aprano <steve@pearwood.info> - 2013-08-06 09:26 +0000
      Re: Newbie: static typing? Joshua Landau <joshua@landau.ws> - 2013-08-06 10:29 +0100
        Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 11:12 +0100
          Re: Newbie: static typing? Burak Arslan <burak.arslan@arskom.com.tr> - 2013-08-06 16:27 +0300
          Re: Newbie: static typing? Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-08-06 15:57 +0200
          Re: Newbie: static typing? Chris Angelico <rosuav@gmail.com> - 2013-08-06 15:06 +0100
          Re: Newbie: static typing? "Eric S. Johansson" <esj@harvee.org> - 2013-08-06 09:58 -0400
          Re: Newbie: static typing? Chris Angelico <rosuav@gmail.com> - 2013-08-06 15:38 +0100
      Easier to Ask Forgiveness than Permission (was: Newbie: static typing?) Ben Finney <ben+python@benfinney.id.au> - 2013-08-07 08:23 +1000
  Re: Newbie: static typing? Ian Kelly <ian.g.kelly@gmail.com> - 2013-08-05 17:38 -0600
  Re: Newbie: static typing? Ben Finney <ben+python@benfinney.id.au> - 2013-08-06 10:35 +1000
    Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 10:01 +0100
      Re: Newbie: static typing? Joshua Landau <joshua@landau.ws> - 2013-08-06 10:19 +0100
        Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 11:07 +0100
          Re: Newbie: static typing? Rotwang <sg552@hotmail.co.uk> - 2013-08-06 15:25 +0100
          Re: Newbie: static typing? Ben Finney <ben+python@benfinney.id.au> - 2013-08-07 08:34 +1000
      Re: Newbie: static typing? Chris Angelico <rosuav@gmail.com> - 2013-08-06 10:29 +0100
        Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 11:28 +0100
          Re: Newbie: static typing? Chris Angelico <rosuav@gmail.com> - 2013-08-06 11:50 +0100
          Re: Newbie: static typing? Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-08-06 18:54 -0400
          Re: Newbie: static typing? Terry Reedy <tjreedy@udel.edu> - 2013-08-06 19:02 -0400
          Re: Newbie: static typing? Chris Angelico <rosuav@gmail.com> - 2013-08-07 01:16 +0100
          RE: Newbie: static typing? "Prasad, Ramit" <ramit.prasad@jpmorgan.com.dmarc.invalid> - 2013-08-08 16:46 +0000
  Re: Newbie: static typing? Steven D'Aprano <steve@pearwood.info> - 2013-08-06 05:21 +0000
    Re: Newbie: static typing? Rui Maciel <rui.maciel@gmail.com> - 2013-08-06 10:04 +0100
  Re: Newbie: static typing? Grant Edwards <invalid@invalid.invalid> - 2013-08-06 15:05 +0000

csiph-web