17.07.18 18:48, Guido van Rossum пише:
On Tue, Jul 17, 2018 at 8:28 AM, Serhiy Storchaka <storch...@gmail.com <mailto:storch...@gmail.com>> wrote:
    Should not the assert statement introduce an implicit lexical scope
    for preventing leaking variables?

I don't see why. As Chris said, side effects in asserts are nothing new and this PEP is not the one to do something about it.

This side effect is new. No other expressions that can be used in asserts leaked local variables before. The only exception is list comprehensions in Python 2, and this was fixed in Python 3.

We can't make the assignment expression itself creating its own scope, because this will invalidate its purpose. But the problem with assert ccould be solved by making assert creating a new lexical scope.

    assert expr, msg

could be translated to

    if __debug__ and not (lambda: expr)():
        raise AssertionError(msg)

instead of

    if __debug__ and not expr:
        raise AssertionError(msg)

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to