内联条件介于两个以上的值之间

use*_*596 7 python if-statement

我需要做这样的事情:

if A
 function(a)
elif B
 function(b)
else
 function(c)
Run Code Online (Sandbox Code Playgroud)

我在这里找到了更简单的版本:

function(a if A else c)
Run Code Online (Sandbox Code Playgroud)

有版本elif吗?就像是:

function(a if A b elif B else c)
Run Code Online (Sandbox Code Playgroud)

我该怎么写这个(如果存在的话)?上面的代码看起来不正确.

mat*_*yce 8

不,没有elif.链接ifs:

function(a if A else b if B else c)
Run Code Online (Sandbox Code Playgroud)

这相当于(优先级从左到右):

function(a if A else (b if B else c))
Run Code Online (Sandbox Code Playgroud)

显然,这可能会变得复杂(并且超过PEP8 80 char限制),EG:

move(N if direction == "N" else E if direction == "E" else S if direction == "S" else W)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,较长的形式更好:

if direction == "N":
    move(N)
elif direction == "E":
    move(E)
elif direction == "S":
    move(S)
else:
    move(W)
Run Code Online (Sandbox Code Playgroud)