[Tutor] Another assert() question

Kent Johnson kent37 at tds.net
Sat Jul 12 22:34:00 CEST 2008


On Sat, Jul 12, 2008 at 4:01 PM, Dick Moores <rdm at rcblue.com> wrote:
> _Python in a NutShell_, p. 138 has a bit on the assert statement which I
> don't completely understand.
>
> It says the syntax is
>
> assert condition[, expression]
>
> I was hoping to put some sort of explanation of failure in an assert
> statement. But how to do it?
>
> In my code I have
>
> assert(len(list(set(colors_used_this_cycle))) ==
> len(colors_used_this_cycle), "A color has been used twice!")

Leave out the outermost parentheses, assert is a statement, not a function call.

In [2]: assert(False, "Asserted false")

This is "assert condition" where the condition is a tuple with two
elements, hence true so there is no output.

In [3]: assert False, "Asserted false"
---------------------------------------------------------------------------
<type 'exceptions.AssertionError'>        Traceback (most recent call last)

/Users/kent/<ipython console> in <module>()

<type 'exceptions.AssertionError'>: Asserted false

This is the form with an optional expression and works the way you want.

Kent


More information about the Tutor mailing list