osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] Call for prudence about PEP-572


On 09/07/18 08:26, Mat?j Cepl wrote:
> On 2018-07-07, 15:48 GMT, Guido van Rossum wrote:
>>      if validate(name := re.search(pattern, line).group(1)):
>>          return name
> Except there is no error handling for situations when
> re.search() returns None, so one shouldn't use it anyway (most
> of the time). Which seems to me like another nice example why
> one should stay away from this style as much as possible. I am
> too lazy to be tempted into this
> nice-example-terrible-production-code world.
So wrap it in a try/except to capture the re.search returning None:

 ??? try:
 ??? ??? if validate(name := re.search(pattern, line).group(1)):
 ???? ??? ??? return name
except TypeError:
 ? ??? ??? # No match case

And this solution is even better if the validate function raises an 
exception rather than True/False

which I think is much better than trying to do multiple steps :

 ?? match = re.search(pattern, line)
 ?? if match is not None:
 ??? ?? name = match.group(1)
 ?? ? ? if name and validate(name):
 ??? ?? ? ???? return name
 ?????? else:
 ?????????? # No valid case
 ?? else:
 ?? ??? # No Match case

> Best,
>
> Mat?j


-- 
-- 
Anthony Flury
email : *Anthony.flury at btinternet.com*
Twitter : *@TonyFlury <https://twitter.com/TonyFlury/>*