Configuring an object via a dictionary

Peter J. Holzer hjp-python at hjp.at
Sun Mar 17 11:11:53 EDT 2024


On 2024-03-17 17:15:32 +1300, dn via Python-list wrote:
> On 17/03/24 12:06, Peter J. Holzer via Python-list wrote:
> > On 2024-03-16 08:15:19 +0000, Barry via Python-list wrote:
> > > > On 15 Mar 2024, at 19:51, Thomas Passin via Python-list <python-list at python.org> wrote:
> > > > I've always like writing using the "or" form and have never gotten bit
> > > 
> > > I, on the other hand, had to fix a production problem that using “or” introducted.
> > > I avoid this idiom because it fails on falsy values.
> > 
> > Perl has a // operator (pronounced "err"), which works like || (or),
> > except that it tests whether the left side is defined (not None in
> > Python terms) instead of truthy. This still isn't bulletproof but I've
> > found it very handy.
> 
> 
> So, if starting from:
> 
>     def method( self, name=None, ):
> 
>  rather than:
> 
>     self.name = name if name else default_value
> 
> ie
> 
>     self.name = name if name is True else default_value

These two lines don't have the same meaning (for the reason you outlined
below). The second line is also not very useful.



> the more precise:
> 
>     self.name = name if name is not None or default_value
> 
> or:
> 
>     self.name = default_value if name is None or name

Those are syntax errors. I think you meant to write "else" instead of
"or".

Yes, exactly. That's the semantic of Perl's // operator.

JavaScript has a ?? operator with similar semantics (slightly
complicated by the fact that JavaScript has two "nullish" values).

        hp

-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp at hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-list/attachments/20240317/5d231102/attachment.sig>


More information about the Python-list mailing list