Fredrik Lundh wrote:
Steven Bethard wrote:


Even if you could settle the syntax issue, once you've decided that you really do need a true block in an anonymous function, you're not really saving much space by not declaring it:

def f(*args):
   # body line 1
   # body line 2
   # ...
   # body line N
x = func or f

v.s.

x = func or lambda *args:
               # body line 1
               # body line 2
               # ...
               # body line N


you meant:

    def x(*args):
        # body line 1
        # body line 2
        # ...
        # body line N

    v.s.

    x = func or lambda *args:
        # body line 1
        # body line 2
        # ...
        # body line N

right?

You're welcome to name the function whatever you want -- notice in my example that the function is used in the statement:


x = func or f

If you'd prefer the statement to read:

x = func or x

that's also fine. Depends on what exactly 'x' is, and whether or not it really makes sense for the function I called 'f' to have the same name as the variable called 'x'. It certainly may, but since I wasn't giving real code, I didn't want to commit to that.

Perhaps a better example would have been something along the lines of:

dict(a=lambda *args:
           # body 1
     ,
     b=lambda *args:
           # body 2
     ,
     c=lambda *args:
           # body 3
)[s](values)

v.s.

def a_func(*args):
    # body 1
def b_func(*args):
    # body 2
def c_func(*args):
    # body 3
dict(a=a_func, b=b_func, c=c_func)[s](values)

where it's clear that I'm trying to use lambdas where expressions are required.

I assume that the point you were trying to make is that:

def f(*args):
    return expr

is equivalent to

f = lambda *args: expr

?

Steve
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to