Python中的if-let语法

2024-10-02 08:18:24 发布

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

从斯威夫特来的时候,我有点难对付。没有一种Python。我有几个函数,如果在数组中找不到我要找的对象,它们可能会返回None。在

然后我必须按如下方式嵌套代码:

varA = self.getVariableByName(Variables.varA) 
if varA is None: 
    varB = self.getVariableByName(Variables.varB)
    varC = self.getVariableByName(Variables.varC) 
    if varB is not None and varC is not None: 
        # Do something with varB and varC 

在Swift中,我曾经能够绑定if语句中的变量

^{pr2}$

处理None的更“python”方式是什么?在


Tags: and对象函数selfnoneifis方式
2条回答
if not hasattr(Variables, 'varA'):
  varB = Variables.varB

但可以肯定的是,varB可能会丢失,因此最好检查是否存在这样的属性,或者使用默认值的getattr(),或者捕捉AttributeError异常。在

我相信处理这种情况最好的方法是异常处理。 E、 g.使self.getVariableByName在找不到元素时引发异常。然后你可以:

try:
    varA = self.getVariableByName(Variables.varA)
except RuntimeError:
    varB = self.getVariableByName(Variables.varB)
    varC = self.getVariableByName(Variables.varC)
    # do something with varB and varC

以获得与你的斯威夫特一样的例子。在

如果您不能/不想更改self.getVariableByName,您可以做的最好是:

^{pr2}$

相关问题 更多 >

    热门问题