[Python-Dev] PEP 572 and assert (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Tue Jul 17 05:05:07 EDT 2018
- Previous message (by thread): [Python-Dev] PEP 572 and assert
- Next message (by thread): [Python-Dev] PEP 572 and assert
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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.
- Previous message (by thread): [Python-Dev] PEP 572 and assert
- Next message (by thread): [Python-Dev] PEP 572 and assert
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]