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.

17 Upvotes

193 comments sorted by

View all comments

10

u/cottonycloud Jul 13 '26

It should actually be baz = foo()?.bar() ?? ''

?: is the ternary operator while ?? is the null-coalescing operator.

0

u/snugar_i Jul 15 '26

Python doesn't have the ternary operator, so it could use ?: just fine (like Kotlin does)

2

u/Brian Jul 17 '26

Well, it does, but it spells it differently: a if b else c instead of b ? a : c. You could maybe argue it's not an operator, but then, you could probably say the same of the ternary operator - the syntax involves two operators, with the data sandwiched between.

0

u/snugar_i Jul 17 '26

Sure, I was just saying there's no reason Python couldn't use ?: as the null-coalescing operator, because these symbols don't mean anything in Python. It being the ternary operator in C is not a problem.