That makes sense. As Guido mentioned, this is similar to reusing a variable in 
a for-loop. You do it at your own risk. Ok consider me convinced. I will use 
the following sentence to explain name binding in partial matching:
“Match statements are liable to any or all names bound in any of the patterns 
used, and your code is incorrect if you aren't prepared for that."

> On 14 Feb 2021, at 7:20 PM, Chris Angelico <ros...@gmail.com> wrote:
> 
> On Sun, Feb 14, 2021 at 11:26 PM Abdulla Al Kathiri
> <alkathiri.abdu...@gmail.com <mailto:alkathiri.abdu...@gmail.com>> wrote:
>> 
>> My idea was that in the case of partial matching or full matching without 
>> passing the guard, the binding names has some sort of self destruction and 
>> return to the previous state. Using different variable names would resolve 
>> the issue and if I want to modify the global variables, I could choose to do 
>> so in the case block after the case succeeded. At least, this way, it would 
>> be more explicit, conveying the person intention (or forgetting if the 
>> original global value was later needed). I saw many people online talking 
>> about this the last couple of days so I thought I would bring it up here.  
>> Any other syntax variant could be used to achieve the same thing.
>> 
> 
> It's not about syntax. Python doesn't have an idea of "self
> destruction and return to the previous state". The nearest equivalent
> is a very special case at the end of an exception handler, where after
> "except Exception as e:" you'll get an implicit "e = None; del e" to
> prevent a refloop. That's not a return to the previous state, that's a
> conscious clearing of one reference.
> 
> If this "unwinding" were desired, the best way would be to simply make
> it a permanent part of the match semantics - no syntax for selecting
> which behaviour you want. There's no backward compatibility to be
> maintained (yet). But that would be inconsistent with the rest of
> Python, where things happen step by step, and if something breaks,
> everything prior to it has happened.
> 
> ChrisA
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org 
> <mailto:python-ideas@python.org>
> To unsubscribe send an email to python-ideas-le...@python.org 
> <mailto:python-ideas-le...@python.org>
> https://mail.python.org/mailman3/lists/python-ideas.python.org/ 
> <https://mail.python.org/mailman3/lists/python-ideas.python.org/>
> Message archived at 
> https://mail.python.org/archives/list/python-ideas@python.org/message/5K65WY7B6O7EO5ZKWZZCS3OYV2HCIBQJ/
>  
> <https://mail.python.org/archives/list/python-ideas@python.org/message/5K65WY7B6O7EO5ZKWZZCS3OYV2HCIBQJ/>
> Code of Conduct: http://python.org/psf/codeofconduct/ 
> <http://python.org/psf/codeofconduct/>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LQWGSE7DYQHXQQCVJDDRXROZ7WHYDHQQ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to