"return" 三元运算符和 warlus 运算符

"return" with Ternary and warlus operators

为什么当我尝试 return 像这样使用 warlus 和三元运算符 := 值时:

def get_index(elements: List[int], i: int, boundary: int) -> tp.Optional[int]:
    return x := elements[i] if elements[i] > boundary else None

我收到一个错误。

评论表明您不能在 return 语句中使用海象运算符,这是不正确的 - 您只是有语法错误。

这有效,但毫无意义,正如评论中也指出的那样:

from typing import List, Optional


def get_index(elements: List[int], i: int, boundary: int) -> Optional[int]:
    return (x := elements[i] if elements[i] > boundary else None)


print(get_index([1, 2, 3], 2, 1))

您只需要在海象赋值周围加上括号,表达式的值就是赋值。

但是,如果您所做的只是 return 那个值,为什么要分配给 x。相反:

from typing import List, Optional


def get_index(elements: List[int], i: int, boundary: int) -> Optional[int]:
    return elements[i] if elements[i] > boundary else None


print(get_index([1, 2, 3], 2, 1))