On Sat, May 12, 2018 at 7:12 AM, Angus Hollands <goose...@gmail.com> wrote: > e.g > > while value.in_use given value = get_next_pool_item(): > print(value.refcount()) > > Instead of > > while (value:=get_next_pool_item()) and value.in_use: > print(value.refcount()) > > In addition, the two cases are not identical - if the API is such that > get_next_pool_item should not return None values, this wouldn't be caught in > the ":=" approach, unless you add more conditions. Yes, you could argue that > I've cherry picked an example here. Actually, I haven't; I observed this > after writing the example. > > What am I getting at here? In effect, the "given" keyword provides a > superset of use cases to that of ":=". Dare I say it, but explicit is better > than implicit.
I'm not sure what you're getting at here. To make your two versions equivalent, you'd need to write them like this: while value and value.in_use given value = get_next_pool_item(): print(value.refcount()) while (value:=get_next_pool_item()) and value.in_use: print(value.refcount()) or like this: while value.in_use given value = get_next_pool_item(): print(value.refcount()) while (value:=get_next_pool_item()).in_use: print(value.refcount()) There, now they're identical. There's no superset or subset of use cases. And I have no idea how that connects with the oft-misused "explicit is better than implicit". (I'm still fairly sure that "explicit" and "strongly typed" are both synonyms for "stuff I like", with their antonyms "implicit" and "weakly typed" both being synonyms for "stuff I don't like". Years of discussion have not disproven this theory yet.) ChrisA _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/