Python中的可选链接

2024-09-27 18:02:04 发布

您现在位置:Python中文网/ 问答频道 /正文

在JavaScript中,如果我不确定链的每个元素是否存在/是否未定义,我可以执行foo?.bar,如果barfoo上不存在bar,解释器将自动短路,并且不会抛出错误

Python中有类似的东西吗?目前,我一直在这样做:

if foo and foo.bar and foo.bar.baz:
    # do something

我的直觉告诉我,这不是检查链中每个元素是否存在的最佳方法。有没有一种更优雅/更像Python的方式来做到这一点


Tags: and方法元素iffoo错误barbaz
3条回答

最具python风格的方式是:

try:
    # do something
    ...
except (NameError, AttributeError) as e:
    # do something else
    ...

您可以使用^{}

getattr(getattr(foo, 'bar', None), 'baz', None)

如果是字典,你可以使用get(keyname, value)

{'foo': {'bar': 'baz'}}.get('foo', {}).get('bar')

相关问题 更多 >

    热门问题