[Python-ideas] Repurpose `assert' into a general-purpose check
Ned Batchelder
ned at nedbatchelder.com
Mon Nov 27 22:34:37 EST 2017
More information about the Python-ideas mailing list
Mon Nov 27 22:34:37 EST 2017
- Previous message (by thread): [Python-ideas] Repurpose `assert' into a general-purpose check
- Next message (by thread): [Python-ideas] Repurpose `assert' into a general-purpose check
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 11/27/17 9:12 PM, Ivan Pozdeev via Python-ideas wrote: > The `assert' statment was created the same as in previous languages > like C/C++: a check to only do in debug mode, when you can't yet trust > your code to manage and pass around internal data correctly. Examples > are array bounds and object state integrity constraints. > > Unlike C, Python does the aforementioned checks all the time, i.e. > it's effectively always in "debug mode". Furthermore, validation > checks are an extremily common use case. > > I have been using assert in my in-house code for input validation for > a long time, the only thing preventing me from doing the same in > public code is the fact that it only raises AssertionError's while > library code is expected to raise TypeError or ValueError on invalid > input. > > The last drop that incited me to do this proposition was > https://stackoverflow.com/questions/2142202/what-are-acceptable-use-cases-for-pythons-assert-statement > where none of the _seven_ answer authors (beside me) managed to make a > _single realistic use case_ for `assert' as a debug-only check. > > --- > > So, I'm hereby proposing to: > > * make `assert' stay in optimized mode > * change its syntax to raise other types of exceptions > > E.g.: "assert condition, type, value" or "assert condition, type, > exception_constructor_argument(s)" to maintain backward compatibility. > You are proposing: assert condition, type, value Why not just use Python as it is now, with this:? if not condition: raise type(value) I don't see a reason to change the assert statement. You can do what you need without the change. --Ned.
- Previous message (by thread): [Python-ideas] Repurpose `assert' into a general-purpose check
- Next message (by thread): [Python-ideas] Repurpose `assert' into a general-purpose check
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-ideas mailing list