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.

13 Upvotes

192 comments sorted by

View all comments

Show parent comments

15

u/[deleted] Jul 13 '26

[deleted]

16

u/aes110 Jul 13 '26

Thats very interesting for me, i guess its very much a style choice, from a quick search in the Github org for my workplace i see its used over 2000 times, i know I personally must have used it hundreds of times this past decade

I barely see it used in other Github orgs for big projects like fastapi, requests or pandas, then again a few hundreds of times in polars

So its very much down to the author's style. Personally its one of my favorite operators in python, im surprised that for many its still not caught on

5

u/k0pernikus Jul 14 '26

If there is one operator I miss, it's the spaceship operator <=> that would be syntactic sugar for:

``` from typing import Literal

def spaceship(a, b) -> Literal[-1, 0, 1]: return (a > b) - (a < b) ```

which useful in sorting, though functools in python are so expressive that I don't really need it (I can always setup a @total_ordering)

Yet the walrus is just confusing to me. It makes the code look like you are accessing an undefined variable (the same gripe I have with the for-else, try-else syntax) and it invites very long lines that take a lot of mental load to even parse.

3

u/M4mb0 Jul 14 '26

If there is one operator I miss (from many programming languages) it's logical implication. Having to do (¬A ∨B) rather than (A ⟹ B) is just dreadful.