On Tue, 17 Jul 2018 18:56:36 +1000 Chris Angelico <rosuav at gmail.com> wrote: > On Tue, Jul 17, 2018 at 6:50 PM, Serhiy Storchaka <storchaka at 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? > > > > Asserts with side effects are already a bad idea. PEP 572 makes no > change to this. If you're putting any sort of side effects inside > assertions, you're playing with fire. Well, PEP 572 makes it easier to put side effects in side assertions since you can now stuff an assignment inside an assert. Which is what Serhiy's / Barry's example shows. Regards Antoine.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4