Encapsulation in Python

Mark Lawrence breamoreboy at yahoo.co.uk
Tue Mar 15 00:41:30 EDT 2016


On 15/03/2016 01:10, BartC wrote:
> On 15/03/2016 00:28, Mark Lawrence wrote:
>> On 14/03/2016 23:56, BartC wrote:
>
>>> Anything so terrible about that that Python needs to keep well clear of
>>> or that you think its users should be deprived of?
>>
>> Yes, it is not even valid Python.  Switch has been rejected via at least
>> one PEP and from what I see it adds nothing to the language, so let's
>> deprive it from people who clearly don't need it in the first place.
>
> Every time you need to test X against more than one other value, then
> you have a potential use for switch.
>
> But yes you can do without switch if you have too. Same for many features.
>
>> I am only rude to people such as yourself who refuse to provide code, in
>> fact anything, to support your case.  Your "benchmark" for the switch
>> was yet another laughable farce, which only tested the function calls,
>> building tuples, running loops, there was nothing to test with respect
>> to the actual switch which was meant to be tested.  So just in case you
>> missed it above, where is the profile for this test?
>
> I've shown the task. I'm sure you can also do some tests and show us
> some results.
>
>>> I agree with you. But once you've got the language right, then there's
>>> no harm looking at performance. A switch statement like the above can be
>>> executed in a single byte-code.
>>>
>>
>> Really?  Then please show us all just how it can be done via a patch to
>> the cPython code on the bug tracker.
>
> The one-byte-code switch works when all case expressions are known at
> compile-time. It makes use of a jump-table within the byte-code.
>
> The total sequence will be more than one byte-code, typically:
>
> LOAD_FAST                The index
> SWITCH                   Jump to the right label
> ....
> L5:                      One of multiple labels
>   ...                     Deal with the code in this branch
> JUMP_ABSOLUTE            Break out of the switch
>
> ...                      Provision is needed for the jump-table
>
> But only one is needed for testing and dispatch. Now I've sketched it
> out, perhaps you can fill in the details for yourself... (I'm not
> getting involved in CPython development.)
>
>

I have no interest at this level.  If I were I might as well have stuck 
with C in the first place.  I do find it rather strange that something 
so simple wasn't approved when the PEP(s) were discussed as it looks so 
easy to implement.

-- 
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.

Mark Lawrence




More information about the Python-list mailing list