我知道这是在 Java 8 或 9 的管道中,但我认为必须有一种方法可以在 python 中做到这一点。例如,我正在编写一个复杂的表达式,并且懒得在所有级别添加空检查(下面的示例)
post_code = department.parent_department.get('sibling').employees.get('John').address.post_code
我不想担心几个中间值是“无”。例如,如果 parent_department 没有兄弟键,我想分流并返回 None 分配给 post_code。就像是
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