short path evaluation, why is f() called here: dict(a=1).get('a', f())

Paul Rubin http
Mon Jan 14 18:15:28 EST 2008


Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
> map = {'a': Aclass, 'b': Bclass, 'c': Cclass}
> class_ = map.get(astring, default=Zclass)
> 
> The result I want is the class, not the result of calling the class 
> (which would be an instance). If I wanted the other semantics, I'd be 
> using defaultdict instead.

I used default as a keyward arg name indicating the presence of
a callable.  I probably should have called it defaultfunc or something.

x = d.get('a', f)      # --> default value is f
x = d.get('a', defaultfunc=f)  # --> default value is result of f() .



More information about the Python-list mailing list