osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Python-Dev] PEP 572 and assert


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.

ChrisA