Case Statements
BartC
bc at freeuk.com
Wed Mar 16 06:34:20 EDT 2016
On 16/03/2016 04:06, Mario R. Osorio wrote:
> On Tuesday, March 15, 2016 at 9:55:27 PM UTC-4, jj0ge... at gmail.com wrote:
>> You have apparently mistaken me for someone who's worried. I don't use Python, I was just curious as to why a construct that is found, not only to be useful in 95% of other languages, but is generally considered more flexible and readable than the if-elif, was missing in Python. (your link "Switch Statement Code Smell" not withstanding)
>>
>> Have a great day :)
>
> Switch and case statements are such a waste of time that, in order to understand them you have to mentally use if/elseif/else/endif statements. Furthermore, the concepts of switch and case could not even exist without the notion of if/elseif/else/endif statements. Why then, add an extra level of complication??.
You're understanding them wrong then. Switch can be used like a
'computed go to', where you execute the nth statement of a selection, or
select the nth value of a list /without needing to evaluate any of the
others/.
Or it can be more general, where each statement or value in the
selection has a corresponding 'case', and it will directly execute or
select it according to the switch expression:
switch d:
case 1:
n = p//8
pal = 2
case 4:
n = p//2
pal=16
case 8:
n = p
pal = 256
case 16:
n = p*2
case 24:
n = p*3
case 32:
n = p*4
a = 1
else:
raise ...
Sure, there are half a dozen ways of writing such code. But you don't
want to think of it in terms if-elif where you first have to test all
the other cases when d is 32, and have to keep writing 'd==' over and over.
And you don't want to take this straightforward bit of code and spread
it over many functions and classes and methods; it's all here.
(BTW why does Python have 'elif' when if-else is all that is really needed?)
> Go play with Java or Maybe C++. Have fun with their fancy if/elseif/else/endif statements oops, sorry, they call them switch and/or case statements.
>
> Wish you the best and please lete us know if and when you have a deep fall through a breakeless case ...
C got those badly wrong. (It got a lot of things wrong.) That doesn't
mean that switch, properly implemented, is bad.
--
Bartc
More information about the Python-list
mailing list