Clarity vs. code reuse/generality
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.
More information about the Python-list