assertions to validate function parameters
Carl Banks
pavlovevidence at gmail.com
Sat Jan 27 09:19:59 EST 2007
On Jan 25, 11:26 pm, Steven D'Aprano
<s... at REMOVE.THIS.cybersource.com.au> wrote:
> Note also that for real code, a bare assert like that is uselessly
> uninformative:
>
> >>> x = 1
> >>> assert x == 3Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> AssertionError
In real code, a traceback usually prints the line of code containing
the failed assertion.
> This is better:
>
> >>> assert x == 3, "x must be equal to three but is %s instead" % xTraceback (most recent call last):
> File "<stdin>", line 1, in ?
> AssertionError: x must be equal to three but is 1 instead
>
> This is even better still:
>
> >>> if x != 3:... raise ValueError("x must be equal to three but is %s instead" % x)
> ...
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> ValueError: x must be equal to three but is 1 instead
These are are verbose to the point of silliness, and usually not worth
the effort since assertions are only supposed to check for ostensibly
impossible conditions. Thus it shouldn't pop up often enough to
justify writing a verbose error message in advance, and when it does
trigger you're going to have to print the failed result in a debuging
run anyways.
Carl Banks
More information about the Python-list
mailing list