これがJava 8または9のパイプラインにあることは知っていますが、Pythonでこれを行う方法が必要だと思います. たとえば、複雑な式を書いていて、すべてのレベルで null チェックを追加するのが面倒だとします (以下の例)。
post_code = department.parent_department.get('sibling').employees.get('John').address.post_code
いくつかの中間値が「なし」であることを心配したくありません。たとえば、parent_department に兄弟キーがない場合、post_code に割り当てられた None をシャントして返したいとします。何かのようなもの
post_code = department?.parent_department?.get('sibling')?.employees?.get('John')?.address?.post_code
これは Python 2.7.1 で実行できますか? これはデバッグ中の問題が増えることを意味しますが、すべての事前チェックを行ったと仮定し、いずれかの値が null の場合は内部エラーを意味するため、特定の行が失敗したというエラー トレースを取得するだけで十分です。
これはより冗長な方法です。ランダムな例外をスローしないワンライナーが必要です
def get_post_code(department):
if department is None:
return None
if department.parent_department is None:
return None
if department.parent_department.get('sibling') is None:
return None
... more checks...
return post_code = department.parent_department.get('sibling').employees.get('John').address.post_code