[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Zen of Python

On Tue, 28 May 2002, Fredrik Lundh wrote:

> Avi Bryant wrote:
> > What's the equivalent Python idiom?
> d.setdefault("spam", 42)

Not the same thing at all, unless you happen to be using a constant value.
Perhaps my example should have been

d at: 'spam' ifAbsentPut: [x * 42]

> if d.has_key("spam"):
>     d["spam"] = 42

I assume you mean "unless", not "if".  Nothing much wrong with this, I
agree, but it's a statement, not an expression.  The argument will be that
having to use extra temps is never bad because it always makes things more
readable anyway, which I don't necessarily agree with, but fair enough.

> or, if you insist:
> if_absent_put(d, "spam", lambda: 42)

Actually I'd prefer d.at("spam", if_absent_put=lambda: 42).  Which is a
shame because it doesn't correspond nicely to the [] operator.  Is
d["spam", if_absent_put=lambda:42] legal?

But that's clearly not actually idiomatic Python.  This is a discussion
about culture as much as anything, isn't it?

> > My guess is that it will be either less regular, or less explicit,
> > or both.
> whatever.

Whatever indeed.  This whole thread is turning into a language pissing
match.  Count me out.