On Jul 31, 8:28 am, Steven D'Aprano <st...@remove-this- cybersource.com.au> wrote: > On Thu, 30 Jul 2009 18:06:31 -0500, Robert Kern wrote: > > On 2009-07-30 16:44, r wrote: > >> On Jul 30, 4:29 pm, Emmanuel Surleau<emmanuel.surl...@gmail.com> wrote: > >>>> 1.) No need to use "()" to call a function with no arguments. Python > >>>> --> "obj.m2().m3()" --ugly > >>>> Ruby --> "obj.m1.m2.m3" -- sweeet! > >>>> Man, i must admit i really like this, and your code will look so much > >>>> cleaner. > >>> It has benefits - code does look better. It has also significant cons > >>> - it is ambiguous. > >>> For instance: > > >>> a = b > > >>> Is b a variable or a method called without parameter? > > >> Hello Emanuel, > >> Again, who so ever names a method with such a non-descriptive name will > >> get whats coming to him. And if you did for some reason use such a > >> cryptic name as "b", do yourself (and everyone else) a favor and follow > >> it with "()" to denote the method call. Remember when something is > >> optional that means you have an option to use it OR not use it. > > > I believe his point is that it is ambiguous to the compiler, not humans > > reading the code. Python functions and methods are first class objects. > > They can be passed around. If they were auto-called, then you could not > > do this. > > Oh my, "r" is still around is he??? And now he's singing the praises of > Ruby, the language which he treated as the Devil's Spawn when he first > arrived. That's hilarious. > > But back on topic... "r" has missed the point. It's not that a=b is hard > to understand because b is a poor name. The example could have been: > > def factory_function(): > magic = time.time() # or whatever > def inner(): > return magic > return inner > > my_function = factory_function > > It's still ambiguous. Does the programmer intend my_function to become > factory_function itself, or the output of factory_function?
Not only that - does 'return inner' return the function inner or the result of function inner? How does ruby pass a function as an object? Iain -- http://mail.python.org/mailman/listinfo/python-list