[Python-ideas] Statement local functions and classes (aka PEP 3150 is dead, say 'Hi!' to PEP 403)
Nick Coghlan
ncoghlan at gmail.com
Fri Oct 14 05:38:32 CEST 2011
On Fri, Oct 14, 2011 at 1:07 PM, Carl M. Johnson
<cmjohnson.mailinglist at gmail.com> wrote:
> To me the limitations of 403 are its strength. I don't want to see people doing crazy inside-out code.
This has long been my fear with PEP 3150, but I'm beginning to wonder
if that fear is overblown.
> Let's say we had a keyword OoO for "out of order":
>
> OoO result = flange(thingie):
> OoO thing = doohickie(majiger):
> part_a = source / 2
> part_b = source ** 2
> majiger = blender(part_a, part_b)
But now consider this:
part_a = source / 2
part_b = source ** 2
majiger = blender(part_a, part_b)
thingie = doohickie(majiger)
result = flange(thingie)
And now with a couple of operations factored out into functions:
def make_majiger(source):
part_a = source / 2
part_b = source ** 2
return blender(part_a, part_b)
def make_thingie(source):
return doohickie(make_majigger(source))
result = flange(make_thingie(source))
All PEP 3150 is allowing you to do is indent stuff that could
potentially be factored out into a function at some point, without
forcing you to factor it out *right now*:
result = flange(thingie) given:
thingie = doohickie(majiger) given:
part_a = source / 2
part_b = source ** 2
majiger = blender(part_a, part_b)
So is the "inline vs given statement" question really any more scary
than the "should I factor this out into a function" question?
I expect the style guidelines will boil down to:
- if you're writing a sequential process "first we do A, then we do B,
then we do C, etc", use normal inline code
- if you're factoring out subexpressions from a single step in an
algorithm, use a given statement
- as a general rule, given statements should be used for code that
could reasonably be factored out into its own function
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list