Example for syntax highlight with Pygments ========================================== Translate this document to HTML with a pygments enhanced frontend:: rst2html-pygments --stylesheet=pygments-default.css or to LaTeX with:: rst2latex-pygments --stylesheet=pygments-default.sty to gain syntax highlight in the output. Convert between text <-> code source formats with:: pylit --code-block-marker='.. code-block:: python' Run the doctests with:: pylit --doctest for-else-test.py for-else-test ------------- Test the flow in a `for` loop with `else` statement. First define a simple `for` loop. .. code-block:: python def loop1(iterable): """simple for loop with `else` statement""" for i in iterable: print i else: print "iterable empty" print "Ende" Now test it: The first test runs as I expect: iterator empty -> else clause applies: .. code-block:: pycon >>> execfile('for-else-test.py') >>> loop1(range(0)) iterable empty Ende However, the else clause even runs if the iterator is not empty in the first place but after it is "spent": .. code-block:: pycon >>> loop1(range(3)) 0 1 2 iterable empty Ende It seems like the else clause can only be prevented, if we break out of the loop. Let's try .. code-block:: python def loop2(iterable): """for loop with `break` and `else` statement""" for i in iterable: print i break else: print "iterable empty" print "Ende" And indeed, the else clause is skipped after breaking out of the loop: .. code-block:: pycon >>> loop2(range(3)) 0 Ende The empty iterator runs as expected: .. code-block:: pycon >>> loop2(range(0)) iterable empty Ende