[Python-ideas] PEP 3150 (statement local namespaces) updated based on April discussion

Stephen J. Turnbull stephen at xemacs.org
Tue Jun 14 07:02:13 CEST 2011

Greg Ewing writes:

 > 2) Very often [mathematicians] *do* write out the
 >    subsequently-defined terms formally.

It strikes me that this is just the tension between the declarative
style of coding, and the imperative style of doing the same thing.
*The same code ends up being written* (modulo a bit of syntactic sugar
like "where:" or "given:"), just the statement order is permuted.

I have nothing against the declarative style.  But at least for these
simple examples including this syntax in Python violates TOOWTDI, and
my experience in Lisp is that indeed the extra flexibility hinders
readability because whichever style one personally favors, lots of
folks use the other one.

Python already allows you to (verbosely) use this style, anyway.

    def behavior_of_experimental_subject (subject):

        def behavior(now, later):
            return now + later

        now = subject.randomness()
        later = subject.perversity()
        return behavior(now, later)

My feeling here is that if the declarative order is not sufficiently
important to justify the local function and the extra return
statement, using the imperative order won't be that costly in
readability terms.

More information about the Python-ideas mailing list