2024-09-27 18:02:04 发布
网友
在JavaScript中,如果我不确定链的每个元素是否存在/是否未定义,我可以执行foo?.bar,如果bar在foo上不存在bar,解释器将自动短路,并且不会抛出错误
foo?.bar
bar
foo
Python中有类似的东西吗?目前,我一直在这样做:
if foo and foo.bar and foo.bar.baz: # do something
我的直觉告诉我,这不是检查链中每个元素是否存在的最佳方法。有没有一种更优雅/更像Python的方式来做到这一点
最具python风格的方式是:
try: # do something ... except (NameError, AttributeError) as e: # do something else ...
您可以使用^{}:
getattr(getattr(foo, 'bar', None), 'baz', None)
如果是字典,你可以使用get(keyname, value)
get(keyname, value)
{'foo': {'bar': 'baz'}}.get('foo', {}).get('bar')
最具python风格的方式是:
您可以使用^{} :
如果是字典,你可以使用
get(keyname, value)
相关问题 更多 >
编程相关推荐