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


Groups > comp.lang.python > #80632

Re: I love assert

From Marko Rauhamaa <marko@pacujo.net>
Newsgroups comp.lang.python
Subject Re: I love assert
Date 2014-11-12 23:41 +0200
Organization A noiseless patient Spider
Message-ID <87a93wqeq3.fsf@elektro.pacujo.net> (permalink)
References <96c138e4-ab95-4e5f-a0c8-e696b5a926bb@googlegroups.com> <cf68f3b4-3312-4dda-a224-8f30f7b31b55@googlegroups.com>

Show all headers | View raw


Anton <anton.schattenfeld@gmail.com>:

> I am not sure how and when you use assert, but something that stops me
> from using assert is that in many cases I would use them to
> 1) Check type of an incoming argument/returned value
> 2) Check value of an incoming argument/returned value

You use asserts to boldly state that the asserted condition never fails.
If it should fail anyway, the world could come tumbling down and you
would hang your head in shame.

Asserts help the reader of the code understand why some possibilities
are not considered by the code. They are not considered because the
writer of the code asserts they are not really possible.

Asserts help not only lay the blame to the writer of the code but might
also make it easier to troubleshoot failures.

I use asserts sparingly, just like comments (which asserts are). I use
them to communicate nonobvious truths to the future maintainer of the
code.

For example, instead of

     # never reached

I will write

     assert False


Or I might indicate the exhaustion of possibilities:

     if status == OK:
         ...
     elif status == ERROR:
         ...
     else:
         assert status == WARNING
         ...


Marko

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


Thread

I love assert Peter Cacioppi <peter.cacioppi@gmail.com> - 2014-11-11 11:40 -0800
  Re: I love assert Ben Finney <ben+python@benfinney.id.au> - 2014-11-12 07:03 +1100
    Re: I love assert Grant Edwards <invalid@invalid.invalid> - 2014-11-11 21:43 +0000
  Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-11 12:08 -0800
  Re: I love assert Rob Gaddi <rgaddi@technologyhighland.invalid> - 2014-11-11 12:20 -0800
  Re: I love assert Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-11-11 20:34 +0000
  Re: I love assert TP <wingusr@gmail.com> - 2014-11-11 12:57 -0800
  Re: I love assert Terry Reedy <tjreedy@udel.edu> - 2014-11-11 17:34 -0500
  Re: I love assert Ben Finney <ben+python@benfinney.id.au> - 2014-11-12 09:52 +1100
  Re: I love assert Tim Chase <python.list@tim.thechases.com> - 2014-11-11 17:03 -0600
  Re: I love assert Peter Cacioppi <peter.cacioppi@gmail.com> - 2014-11-11 15:02 -0800
  Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-11 15:38 -0800
  Re: I love assert Dan Stromberg <drsalists@gmail.com> - 2014-11-11 17:56 -0800
  Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-12 13:21 +1100
  Re: I love assert Ben Finney <ben+python@benfinney.id.au> - 2014-11-12 13:35 +1100
    Re: I love assert Grant Edwards <invalid@invalid.invalid> - 2014-11-12 14:10 +0000
  Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-12 13:44 +1100
    Re: I love assert wxjmfauth@gmail.com - 2014-11-11 23:14 -0800
  Re: I love assert Terry Reedy <tjreedy@udel.edu> - 2014-11-12 03:29 -0500
  Re: I love assert Anton <anton.schattenfeld@gmail.com> - 2014-11-12 12:53 -0800
    Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-12 23:41 +0200
      Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-12 13:52 -0800
        Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-12 23:56 +0200
          Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-12 15:04 -0700
            Re: I love assert Anton <anschatten@gmail.com> - 2014-11-12 14:13 -0800
              Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-12 15:41 -0700
                Re: I love assert Anton <anschatten@gmail.com> - 2014-11-12 14:48 -0800
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 01:01 +0200
                Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-15 10:40 +1100
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 02:12 +0200
                Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-15 12:04 +1100
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 03:30 +0200
                Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-15 12:48 +1100
                Re: I love assert Tim Chase <python.list@tim.thechases.com> - 2014-11-14 20:14 -0600
                Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-15 13:16 +1100
                Re: I love assert albert@spenarnc.xs4all.nl (Albert van der Horst) - 2014-11-29 17:35 +0000
                Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-12 16:02 -0700
                Re: I love assert Anton <anschatten@gmail.com> - 2014-11-12 15:43 -0800
                Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-13 10:10 +1100
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 01:23 +0200
                Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-13 10:27 +1100
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 01:31 +0200
              Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-12 14:47 -0800
                Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-14 22:37 +1100
                Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-14 09:40 -0700
          Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-12 15:07 -0700
            Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 00:47 +0200
              Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-12 14:56 -0800
              Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-13 09:58 +1100
              Re: I love assert Ian Kelly <ian.g.kelly@gmail.com> - 2014-11-12 16:05 -0700
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 01:12 +0200
              Re: I love assert Lie Ryan <lie.1296@gmail.com> - 2014-11-14 01:09 +1100
        Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-14 22:33 +1100
          Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-14 10:18 -0800
            Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-14 21:12 +0200
              Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-14 12:41 -0800
                Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-14 22:50 +0200
            Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-15 13:58 +1100
              Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-14 20:09 -0800
                Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-17 13:09 +1100
                Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-16 19:25 -0800
      Re: I love assert Anton <anschatten@gmail.com> - 2014-11-12 14:00 -0800
        Re: I love assert Anton <anschatten@gmail.com> - 2014-11-12 14:04 -0800
          Re: I love assert Marko Rauhamaa <marko@pacujo.net> - 2014-11-13 00:34 +0200
    Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-13 09:43 +1100
  Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-14 22:15 +1100
  Re: I love assert Richard Riehle <rriehle@itu.edu> - 2014-11-14 14:09 -0800
    Decorators (was: Re: I love assert) Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 00:18 +0200
      Re: Decorators Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-11-14 22:37 +0000
        Re: Decorators Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 00:47 +0200
      Re: Decorators (was: Re: I love assert) Richard Riehle <rriehle@itu.edu> - 2014-11-14 18:19 -0800
        Re: Decorators (was: Re: I love assert) Mayank Tripathi <oquanox@gmail.com> - 2014-11-15 02:36 +0000
        Re: Decorators (was: Re: I love assert) Tim Chase <python.list@tim.thechases.com> - 2014-11-14 20:30 -0600
          Re: Decorators Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 09:00 +0200
            Re: Decorators Grant Edwards <invalid@invalid.invalid> - 2014-11-15 15:32 +0000
        Re: Decorators (was: Re: I love assert) Richard Riehle <rriehle@itu.edu> - 2014-11-14 23:42 -0800
        Re: Decorators Mark Lawrence <breamoreboy@yahoo.co.uk> - 2014-11-15 13:12 +0000
          Re: Decorators Marko Rauhamaa <marko@pacujo.net> - 2014-11-15 15:24 +0200
            Re: Decorators Terry Reedy <tjreedy@udel.edu> - 2014-11-15 15:28 -0500
        Re: Decorators (was: Re: I love assert) Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-16 02:39 +1100
  Re: I love assert TP <wingusr@gmail.com> - 2014-11-27 01:22 -0800
    Re: I love assert alister <alister.nospam.ware@ntlworld.com> - 2014-11-27 09:59 +0000
      Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-29 12:30 +1100
        Re: I love assert MRAB <python@mrabarnett.plus.com> - 2014-11-29 02:56 +0000
          Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-29 20:31 +1100
            Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-29 21:40 +1100
            Re: I love assert MRAB <python@mrabarnett.plus.com> - 2014-11-29 19:49 +0000
        Re: I love assert Chris Angelico <rosuav@gmail.com> - 2014-11-29 14:02 +1100
        Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-29 14:33 -0800
          Re: I love assert Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-11-30 19:18 +1100
            Re: I love assert Ethan Furman <ethan@stoneleaf.us> - 2014-11-30 11:34 -0800

csiph-web