Goto (Posting On Python-List Prohibited)

bartc bc at freeuk.com
Sat Dec 30 17:43:36 EST 2017


On 30/12/2017 20:36, Ben Bacarisse wrote:
> bartc <bc at freeuk.com> writes:
> 
>> On 30/12/2017 16:53, mm0fmf wrote:
>>> On 30/12/2017 14:41, bartc wrote:
>>>> it looks a bit naff
>>>
>>> Understatement of 2017.
>>
>> I'm honest about my own ideas, but my remarks were about the use of
>> special symbols such as "::" and "@".
>>
>> Before completely dismissing it however, you should look at how
>> another language such as Python can achieve the same thing.
>>
>> Namely, take any block of code within a function, and allow it to be
>> executed or shared from anywhere else in the function, with the
>> minimum of disruption.
> 
> That's what a local function does and it does it with the clean
> semantics of a function call.
> 
> When this idea came up in comp.lang.c you could not see the point, yet
> you appear to have a use-case common enough that you have a solution
> worked out using gotos.

C doesn't in general have local functions. My own languages don't 
implement them properly. So I tend not to use them.

>> If it looks better than what I'd come up with, then I'll use that instead.
> 
> What looks better is always going to be an unreliable and subjective
> measure, but calling a named function almost certainly scales better and
> will allow for better structuring (such as when one block needs to use
> another one).

Using a local (or even non-local) function is what I'm trying to avoid, 
as I prefer to keep the code inline, and not disrupt it too much.

You may also want to execute a block only temporarily, or as part of a 
short test. So you don't want to go to the trouble of hoisting a block 
of code into a local function.

(And in C, which has local block scopes, there would be trouble with 
visibility of all the variables the block uses, unless the local 
function is untidily placed right where the original block was.)

-- 
bartc



More information about the Python-list mailing list