[Python-ideas] logics (was:thoughts on generator.throw())
spir
denis.spir at free.fr
Wed Mar 18 19:23:13 CET 2009
Le Wed, 18 Mar 2009 13:10:52 -0400,
Gerald Britton <gerald.britton at gmail.com> s'exprima ainsi:
> *Then* I wondered why "raise" is a keyword and not a
> function. If it were a function you could use it easily in places
> where today you cannot:
>
> if 'foo' == 'bar' or raise(FooBar): # only proceed if 'foo'
> equals 'bar' otherwise raise FooBar exception
>
> is invalid syntax because raise is not a function.
I'm very happy this is invalid syntax :-)
I consider this kind of practice conceptual distortion. More precisely: an abuse of both (!) flow control and logical operator semantics. It reminds me of joyful (hum!) times with C routines written by "clever" people.
Denis
PS
I would go much farther that python about logical types and operators.
Lazy evaluation is ok, because the alternative is not simpler:
if n != 0 and 1/n > threshold:
But I'm not happy at all with the following:
>>> (3==3) + 1
2
>>> 1 or True
1
I think logical operators (and or not) should accept only logical value. And logical values should not operate with numbers.
------
la vita e estrany
More information about the Python-ideas
mailing list