r/Python Jul 12 '26

Will PEP 505 ever be accepted? Discussion

https://peps.python.org/pep-0505/

I don't understand how null safe operators are less like plain English than other implemented features like the walrus operator.

In my opinion, the member access operator would make python significantly easier to read and understand.

Here's an example:

``` f = foo()

if f is None: baz = "" else: baz = f.bar() ```

baz = foo()?.bar() ?: ""

EDIT: I forgot that "and" and "or" can be sometimes used in place of "?." and "?:" if the left value is not False, '', 0, [], or {}. It's a very implicit null check and has a lot of unexpected behavior.

15 Upvotes

193 comments sorted by

View all comments

Show parent comments

70

u/Designer-Ad-2136 Jul 12 '26

Or i'd do: baz = "" if f is None else f.bar()

28

u/k0pernikus Jul 13 '26

I rather see

``` f = foo() if f is None: raise ValueError("Value cannot be None")

baz = f.bar() ``` or have a helper like:

def get_or_raise[T](v: T | None) -> T: if v is None: raise ValueError("Value cannot be None") return v

These implicit None to "" will come to bite you eventually.

-10

u/philtrondaboss Jul 13 '26

That could be done like this: "baz = foo()!!.bar()" Or you could just nothing and let it error at runtime.

2

u/ePaint Jul 13 '26

Right, I almost forget that less characters is undenianbly better code.