internal functions [Re: How do you feel ?]
howard.stearns at charter.net
Mon Aug 9 16:11:58 CEST 2004
Sorry. When I said "define a named function in a top-level assignment", I
didn't just mean using a reference to a previously defined function (i.e.,
it's name), I meant actually defining the function in the assignment.
If you haven't done this sort of thing for years, I could see it being
hard to imagine why I would want to do this. After all, isn't the code
clearer if we define the function with a name ahead of time? And doesn't
the debugger work better with functions that have a name?
Well, I agree with this for what might be called middle-ground uses.
However, I do a lot of work with very simple cases and very complicated ones.
In very simple cases, the code is more cluttered if I have to define the
function separately. Now, when the function is simple, Python let's me
define an anonymous function in the assignment. That's cool. But I also
have cases where the assignment is simple, but maybe the function isn't.
This came up for me when I tried to populate generic functions with
methods. (See generic functions thread. Though it looks like decorators
will soon help me out here...)
In very complex cases, I lament the shear distance between the function
definition and the one place in the code where it is referenced. (Again,
maybe decorators will help. Cool.)
Peter Hansen wrote:
> Howard Stearns wrote:
>> The one thing I've found annoying is that I haven't yet discovered how
>> to do whatever I want in lambda expressions. I have top-level
>> assignments where I'd like create a function to use as the the value
>> being assigned. I don't know how to define a named function in a
>> top-level assignment, and a lambda won't allow me to use 'try' and
>> other statements -- just expressions. Or am I looking at things wrong?
> What do you mean by "top-level assignment"? If it's the same
> meaning most Python programmers would give it, you just do this:
> def somefunc():
> topLevelName = somefunc
> There's your top-level assignment of a named function. Probably
> not what you meant, but can you clarify please?
More information about the Python-list