Re: Possible Addition to Python Language: Marked Sub-condition
On Sun, 8 Mar 2020 at 15:02, Shrinivas Kulkarni <shrinivk@gmail.com> wrote:
Hello Everyone
While writing python code, I frequently come across the need to do certain tasks based on combined conditions.
Much of the task for all the sub-conditions are common but some are specific to one or more of these sub-conditions.
A simplified example:
########################## Code ########################## if (color == BLUE and count == 20) or (color == RED and count % 5 == 0): rotate_the_wheel() # Common to the two sub-conditions if(color == BLUE and count == 20): # First sub-condition set_signal() if(color == RED and count % 5 == 0): # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions
I am not sure if there is a better way to do this. If not, maybe there can be an extension to the language, which would allow marking a sub-condition just like we mark a sub-expression in a regular expression.
I would have thought that simply naming the sub-conditions would be sufficient. blue_20 = (color == BLUE and count == 20) red_5 = (color == RED and count % 5 == 0) if blue_20 or red_5: rotate_the_wheel() # Common to the two sub-conditions if blue_20: # First sub-condition set_signal() if red_5: # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions I don't know how experienced you are with Python programming, but if you had framed your question as "how do I modify this code to avoid repeating the conditions?" you would likely have been given this advice on the python-list mailinglist, or other similar Python programming help resources. Starting with a proposed language change before you've explored the existing options isn't likely to be the best approach (and would likely have meant you could resolve your issue without needing to bring it to python-ideas at all). Paul
This isn't a terrible use of the walrus operator either. if blue_20 := (color==BLUE and count==20) or red_5 := (color==RED and count%5==0) rotate_the_wheel() # Common to the two sub-conditions if blue_20: # First sub-condition set_signal() if red_5: # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions On Sun, Mar 8, 2020 at 12:02 PM Paul Moore <p.f.moore@gmail.com> wrote:
On Sun, 8 Mar 2020 at 15:02, Shrinivas Kulkarni <shrinivk@gmail.com> wrote:
Hello Everyone
While writing python code, I frequently come across the need to do certain tasks based on combined conditions.
Much of the task for all the sub-conditions are common but some are specific to one or more of these sub-conditions.
A simplified example:
########################## Code ########################## if (color == BLUE and count == 20) or (color == RED and count % 5 == 0): rotate_the_wheel() # Common to the two sub-conditions if(color == BLUE and count == 20): # First sub-condition set_signal() if(color == RED and count % 5 == 0): # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions
I am not sure if there is a better way to do this. If not, maybe there can be an extension to the language, which would allow marking a sub-condition just like we mark a sub-expression in a regular expression.
I would have thought that simply naming the sub-conditions would be sufficient.
blue_20 = (color == BLUE and count == 20) red_5 = (color == RED and count % 5 == 0) if blue_20 or red_5: rotate_the_wheel() # Common to the two sub-conditions if blue_20: # First sub-condition set_signal() if red_5: # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions
I don't know how experienced you are with Python programming, but if you had framed your question as "how do I modify this code to avoid repeating the conditions?" you would likely have been given this advice on the python-list mailinglist, or other similar Python programming help resources.
Starting with a proposed language change before you've explored the existing options isn't likely to be the best approach (and would likely have meant you could resolve your issue without needing to bring it to python-ideas at all).
Paul _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@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/3M2BOI... Code of Conduct: http://python.org/psf/codeofconduct/
-- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.
On 2020-03-09 14:16, David Mertz wrote:
This isn't a terrible use of the walrus operator either.
if blue_20 := (color==BLUE and count==20) or red_5 := (color==RED and count%5==0) rotate_the_wheel() # Common to the two sub-conditions if blue_20: # First sub-condition set_signal() if red_5: # Second sub-condition clear_signal() proc_post_rotate() # Common to the two sub-conditions
[snip] The problem there is that if the first part of the condition is true, the second part won't be evaluated, so red_5 won't be set.
participants (3)
-
David Mertz
-
MRAB
-
Paul Moore