>> if False:
    >> 
    >> (indented) block of code here is commented out

    >> I've no idea how efficient it is compared to triple-quoted strings or
    >> line by line comments.

    Gustavo> Actually, it's infinitly [sp?] more defficient (contrary of
    Gustavo> efficient?) than triple-quoted strings or line-by-line
    Gustavo> comments, because those two never make it to execution stage,
    Gustavo> because they're dropped by the compiler. :-)

If you use 'if 0:' the 2.4 byte code compiler also deletes it:

    >>> import dis
    >>> def f(a):
    ...   if False:
    ...     return a
    ...   return a+1
    ... 
    >>> dis.dis(f)
      2           0 LOAD_GLOBAL              0 (False)
                  3 JUMP_IF_FALSE            8 (to 14)
                  6 POP_TOP             

      3           7 LOAD_FAST                0 (a)
                 10 RETURN_VALUE        
                 11 JUMP_FORWARD             1 (to 15)
            >>   14 POP_TOP             

      4     >>   15 LOAD_FAST                0 (a)
                 18 LOAD_CONST               1 (1)
                 21 BINARY_ADD          
                 22 RETURN_VALUE        
    >>> def g(a):
    ...   if 0:
    ...     return a
    ...   return a+1
    ... 
    >>> dis.dis(g)
      4           0 LOAD_FAST                0 (a)
                  3 LOAD_CONST               1 (1)
                  6 BINARY_ADD          
                  7 RETURN_VALUE        

The 'if False:' case isn't optimized because you can (today, anyway)
redefine or override False.

Skip
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to