<div dir="ltr">StackOverflow <a href="http://stackoverflow.com/search?q=%5Bpython%5D+null+coalesce" target="_blank" rel="nofollow" style="cursor: pointer;">has many questions</a> on the topic of null coalescing operators in Python, but I can't find any discussions of them on this list or in any of the PEPs. Has the addition of null coalescing operators into Python ever been discussed publicly?<div><br></div><div>Python has an "or" operator that can be used to coalesce false-y values, but it does not have an operator to coalesce "None" exclusively.</div><div><br></div><div>C# has nice operators for handling null: "??" (null coalesce), "?." (null-aware member access), and "?[]" (null-aware index access). They are concise and easy to reason about. I think these would be a great addition to Python.</div><div><br></div><div>As a motivating example: when writing web services, I often want to change the representation of a non-None value but also need to handle None gracefully. I write code like this frequently: </div><div><br></div><div>    response = json.dumps({</div><div>        'created': created.isoformat() if created is not None else None,<br></div><div>        'updated': updated.isoformat() if updated is not None else None,</div><div>        ...</div><div>    })</div><div><br></div><div>With a null-aware member access operator, I could write this instead:</div><div><br></div><div><div>    response = json.dumps({</div><div>        'created': created?.isoformat(),<br></div><div>        'updated': updated?.isoformat(),</div><div>        ...</div><div>    })</div></div><div><br></div><div>I can implement this behavior myself in pure Python, but it would be (a) nice to have it the in the standard library, and (b) even nicer to have an operator in the language, since terseness is the goal.</div><div><br></div><div>I assume that this has never been brought up in the past because it's so heinously un-Pythonic that you'd have to be a fool to risk the public mockery and shunning associated with asking this question. Well, I guess I'm that fool: flame away...</div><div><br></div><div>Thanks,</div><div>Mark</div></div>