如果让 Python 中的语法

Emp*_*ess 6 python

来自 Swift,我在使用 .None 类型的 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 
Run Code Online (Sandbox Code Playgroud)

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

let f = getVariableByName
if f(Variables.varA) == nil, let varB = f(Variables.varB), let varC = f(Variables.varC) {
    // Do something with varB and varC
}
Run Code Online (Sandbox Code Playgroud)

什么是更“pythonic”的处理方式None

Ted*_*man 8

您可以使用python 3.8 及更高版本中的海象运算符( :=) 将赋值语句转换为表达式。然后你可以检查赋值结果是否在Noneif语句内,以决定是否继续。

if (var_a := self.get_variable_by_name(Variables.var_a)) is not None:
    var_b = self.get_variable_by_name(Variables.var_b)
    var_c = self.get_variable_by_name(Variables.var_c)
    if var_b is not None and var_c is not None:
        # Do stuff...
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用“:=”运算符:

if varB := getVariableByName(Variables.varB):
    pass
Run Code Online (Sandbox Code Playgroud)

  • 该答案缺少有关所使用运算符的信息(Python 3.8+ 中的“海象运算符”/“赋值表达式运算符”)。特德·克莱因·伯格曼 (Ted Klein Bergman) 下面的回答提供了这样的知识。 (3认同)