[Tim, objects to abusing assertions] [Paul Prescod] > So you prefer > > if __debug__ and node.nodeType!=ELEMENT_TYPE: > raise TypeError I personally prefer if node.nodeType != ELEMENT_TYPE: raise TypeError if that is in fact a correct test of whatever user-input precondition it is you're verifying. An assert would be appropriate if it were "impossible" for the test to fail. > Unfortunately there's no way to turn that off at "compile time" so you > always incur the __debug__ lookup cost. That would send us back to two > versions of the methods. Actually, there is: if __debug__: if node.nodeType != ELEMENT_TYPE: raise TypeError Python produces no code for that block under -O (btw, this is the same mechanism that makes asserts vanish under -O: it's __debug__ that's magic, not asserts). As a user, though, I don't expect -O to turn off argument verification! Same as the Python implementation in these respects: public API functions *always* check their arguments, while some private API functions check only in Debug builds (and via the C library's assert() function, as it's a bug in the implementation if a private API is misused). do-s-right-thing-ly y'rs - tim
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4