On Thu, Apr 26, 2018 at 10:17:34AM +0200, Antoine Pitrou wrote:
> I also wonder how long it will be before someone writes:
>
> def f(arg):
> global _lazy_value
> if predicate(arg) and (_lazy_value := frobnicate()) > arg:
> ...
>
> (or something similar with "nonlocal")
What if they did? I don't think that's especially worse than any other
use of a global, including the current version:
def f(arg):
global _lazy_value
_lazy_value = frobnicate()
if predicate(arg) and _lazy_value > arg:
...
I'm not putting either version forward as paragons of Pythonic code, but
honestly, they're not so awful that we should reject this PEP because of
the risk that somebody will do this. People write crappy code and misuse
features all the time. I cannot count the number of times people write
list comps just for the side-effects, intentionally throwing away the
resulting list:
[alist.sort() for alist in list_of_lists]
[print(alist) for alist in list_of_lists]
and the honest truth is that when I'm engaged in exploratory coding in
the REPR, sometimes if I'm feeling lazy I'll do it too. The world goes
on, and comprehensions are still useful even if people sometimes misuse
them.
--
Steve
_______________________________________________
Python-Dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com