Groovy有一个非常方便的运算符?.
。这将检查对象是否不是null
,如果不是,则访问方法或属性。我可以在Python中做同样的事情吗?
我找到的最近的是ternary conditional operator。现在我正在做
l = u.find('loc')
l = l.string if l else None
然而写
会很好l = u.find('loc')?.string
更新:除了下面提到的getattr
之外,我发现了一个相对不错的方法来处理列表:
[x.string if x else None for x in [u.find('loc'), u.find('priority'), ...]]
另一种选择,如果您要排除None
:
[x.string for x in [u.find('loc'), u.find('priority'), ...] if x]
答案 0 :(得分:4)
你可以写这样的东西
L = L and L.string
重要的是要注意,就像在你的三元例子中一样,这将为L的任何“Falsy”值做“else”部分
如果您需要专门检查无,则更清楚地写
if L is not None:
L = L.string
或任何“Falsy”版本
if L:
L = L.string
我认为使用getattr
对此也有点尴尬
L = getattr(L, 'string', None)