I meant avoiding the overhead of the expression evaluation enclosed in the assert itself, not the active/disabled state (that comes at virtually no cost). ex: >>> runtime_assert( { i:None for i in range( 10000000 ) } )
By using the syntax you describe ('boolean and not expr'), you loose all the benefit of the Python grammar: - self-contained - able to catch semantic/syntax bugs ex: >>> f=1 >>> runtime_assert( f==1 ) >>> runtime_assert( f=1 ) File "<stdin>", line 1 runtime_assert( f=1 ) ^ SyntaxError: invalid syntax -----Original Message----- From: Python-ideas <python-ideas-bounces+eloi.gaudry=fft...@python.org> On Behalf Of Serhiy Storchaka Sent: Saturday, May 5, 2018 2:05 PM To: python-ideas@python.org Subject: Re: [Python-ideas] Runtime assertion with no overhead when not active 05.05.18 11:04, Eloi Gaudry пише: > Briefly, the idea is to add a new assert that can be switch on/off > depending on some variable/mechanism at runtime. The whole point of > this assert is that it should not bring any overhead when off, i.e. > by avoiding evaluating the expression enclosed in the runtime > assert. It thus relies on Python grammar. You should have an overhead for checking if it is switched on/off, isn't? And this overhead is virtually the same as testing the value of the global boolean variable. > runtime_assert( expr ) > > #would result in if expr and runtime_assert_active: > > print RuntimeAssertionError() How this will be different from if debug and not expr: print(RuntimeAssertionError()) ? _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/