On Sep 21, 6:07 pm, Cristian <[EMAIL PROTECTED]> wrote: > On Sep 21, 2:48 pm, [EMAIL PROTECTED] wrote: > > > > > There are already anonymous functions in Python. > > > lambda x, y, z: x + y + z > > > is the same as: > > > def _(x, y, z): return x + y + z > > > As for the method stuff, check out staticmethod(). If you assign > > staticmethod(<function here>) to an object, it will be treated as a > > normal function and not as a "method." > > > I have my own personal opinions about how methods should be in Python, > > but, whatever. It's weird to deal with stuff like this: > > > x.y = re.match # Assign a function to an attribute of a class, but it > > doesn't work because you can't assign anything but methods! > > x.y = staticmethod(re.match) # Ugly > > True, there is lambda, but that is very limited. It might be useful > for key arguments, but not much else. It doesn't solve the teaching > problem of "See, functions are just like any other data type. You can > assign it to a variable." It would be a footnote if it's mentioned at > all. My hope is to subtly reinforce the notion that functions are data > and can be passed around. The current function declaration doesn't > help with this. Creating a function and assigning it to a name is > exactly what Python does, why not have it come out in the syntax? It's > not necessary, yes, but I think it would be helpful for teaching > purposes. > > Again, it's not necessary as much as it's more intuitive and obvious > what's going on. This helps a beginner sort out the process from the > syntax without taking it on faith. They can see the class declaration > and see "I'm defining just another attribute to this class only this > time it happens to be method". > > There is nothing functionally lacking in Python. I'm just curious if > there's anything Python can do syntax-wise to help a person better > grasp programming ideas and Python's inner workings.
Guido apparently doesn't like lambda; I'm not really sure why, it's extremely useful. There were rumors of it leaving in Python 3000, but thankfully there was the decision to keep them. (I have a feeling if they weren't kept in, a project fork would have happened or such.) Anyway, one of the biggest problems implementation wise is indentation in an expression - there is no expression currently that uses significant whitespace. Python draws a pretty clear line between expression and statement. I do agree with you however, it seems as if there is an arbitrary line between function definitions and normal variable assignment that shouldn't be there for the sake of consistency. A question: if you WERE to implement function definitions as normal expressions, how would you go about embedding it within an expression? x = map(def a: <line of code> <line of code> <line of code> , [1, 2, 3]) It looks hideous in my opinion and lining up the , with the def is ugly. Not to mention currently, inside groupings, whitespace is ignored. How would you handle a whitespace signif. expression inside a grouping which by definition ignores whitespace? -- http://mail.python.org/mailman/listinfo/python-list