Remix.run Logo
IshKebab 20 hours ago

You should do normally do

    data = collection.get("key")
    if data is not None:
         ...
    else:
         ....
japhyr 20 hours ago | parent | next [-]

Wouldn't this be a little cleaner?

    data = collection.get("key")
    if data:
        ...
    else:
        ...
pansa2 20 hours ago | parent | next [-]

If valid `data` can be zero, an empty string, or anything else “falsy”, then your version won’t handle those values correctly. It treats them the same as `None`, i.e. not found.

japhyr 19 hours ago | parent [-]

:facepalm:

blackbear_ 19 hours ago | parent | prev | next [-]

No, this would crash with numpy arrays, pandas series and such, with a ValueError: The truth value of an array with more than one element is ambiguous.

Shish2k 20 hours ago | parent | prev | next [-]

That behaves differently (eg if collection["key"] = 0)

IshKebab 17 hours ago | parent | prev | next [-]

No, truthiness (implicit bool coercion) is another thing you should avoid. This will do weird things if data is a string or a list or whatever.

tayo42 20 hours ago | parent | prev [-]

it depends on what's in the if blocks

echoangle 19 hours ago | parent | prev [-]

The value in the collection could be the actual value None, that’s different from the collection not having the key.

eesmith 18 hours ago | parent | next [-]

    missing = object()
    data = collection.get("key", missing)
    if data is missing:
         ...
    else:
         ....
IshKebab 17 hours ago | parent | prev [-]

That's why I said "normally".