(original) (raw)
On Tue, Jul 17, 2018 at 1:50 AM, Serhiy Storchaka <storchaka@gmail.com> wrote:
Recently Barry shown an example:
assert len(subdirs := list(path.iterdir())) == 0, subdirs
It looks awful to me. It looks even worse than using asserts for validating the user input. The assert has a side effect, and it depends on the interpreter option (-O). Even if subdirs is not used outside of the assert \*now\*, it is easy to introduce an error later, and it is hard to notice it if tests are not ran with the -O option regularly.
Does PEP 572 encourages writing such code, discourages this, or completely forbids?
The PEP has no specific opinion except it is not forbidden.
Personally I like Barry's example just fine -- assuming \`subdirs\` is not used later, this feels like a good use case.