Clarity vs. code reuse/generality
Terry Reedy
tjreedy at udel.edu
Fri Jul 3 16:36:50 EDT 2009
Steven D'Aprano wrote:
> On Fri, 03 Jul 2009 16:19:22 +0000, kj wrote:
>
>> In <mGo3m.591$P5.76 at nwrddc02.gnilink.net> Alan G Isaac
>> <alan.isaac at gmail.com> writes:
>>
>>> 1. Don't use assertions to test argument values!
>> Out of curiosity, where does this come from?
>
> Assertions are disabled when you run Python with the -O (optimise) flag.
> If you rely on assertions to verify data, then any time the user runs
> python with -O your code will be running without error checking.
>
> assert should be used to verify program logic, not to sanitize data.
In other words, assertions should never happen, whereas your assertions
could easily happen with 'bad' input. An example of program logic
assertion would be 'assert <loop-invariant>' at the top of the loop.
That would be useful for development, but would not be needed for
production use of tested code.
tjr
More information about the Python-list
mailing list