
Assertions should not be used as shorthands for "if cond: raise Exc" in the general case.
I'm just a lurker and usually I agree with why the suggested features shouldn't be implemented, but I actually might chime in to pitch this one a bit more -- and I think it can be done nicely without breaking backward compatibility. As a scientist, I like assert statements for two reasons: 1) you can disable them to speed up the code, and 2) it's how we think as scientists. Consider these two pieces of code, and which one you'd prefer to read: if not condition: raise ValueError assert condition: raise ValueError As a scientist, I prefer the second one because I naturally read it as: "condition is true, therefore ..." and I can predict the next step of the algorithm naturally by filling in the "..." in my mind. It makes the assumptions of the code a bit more explicit than the code `if not condition:`, which I must think about and to translate to "the condition must be true" before I can continue reading. That, in addition to being able to disable the assert statements, makes me like and use them a reasonable amount. However, every time I do use them, I always think "crap, when this breaks I'm going to have to come back here and read my code/comments because the error message isn't very helpful", and that makes me not want to write assert statements. So I like writing them because while I'm writing/reading the code, they make sense, but I don't like reading their error message output because it isn't useful to me as a user/developer. I realize this is very minor, but I actually really like it, and I think the below syntax would be pretty nice and backwards compatible: assert condition: raise ValueError Jason