蟒蛇?(条件/三元)运算符用于分配

Wil*_*ill 88 c python language-features

C和许多其他语言都有条件(也称为三元)运算符.这允许您根据条件的真实性在两个值之间做出非常简洁的选择,这使得表达式(包括赋值)非常简洁.

我想念这个,因为我发现我的代码有很多条件赋值,在Python中占用四行:

if condition:
    var = something
else:
    var = something_else
Run Code Online (Sandbox Code Playgroud)

而在C中它是:

var = condition? something: something_else;
Run Code Online (Sandbox Code Playgroud)

文件中的一次或两次没问题,但是如果你有很多条件分配,那么线条的数量就会爆炸,最糟糕的是,眼睛会吸引它们.

我喜欢条件运算符的简洁性,因为它在我浏览代码时会让我认为没有战略意义的东西分散注意力.

那么,在Python中,有没有什么技巧可以用来将赋值放到一行上来近似条件运算符的优点,正如我所概述的那样?

car*_*arl 164

Python有这样一个运算符:

variable = something if condition else something_else
Run Code Online (Sandbox Code Playgroud)

或者,虽然不推荐(参见@ karadoc的评论):

variable = (condition and something) or something_else
Run Code Online (Sandbox Code Playgroud)

  • 那个"变量=条件和某种东西或某些东西"甚至都不起作用.例如,"True和False或True"返回True,而"True?False:True"将返回False. (9认同)

Gre*_*ill 14

在较旧的Python代码中,您可能会看到诀窍:

condition and something or something_else
Run Code Online (Sandbox Code Playgroud)

然而,这已经被极其优越的... if ... else ...构造所取代:

something if condition else something_else
Run Code Online (Sandbox Code Playgroud)

  • @Will:因为"if if not whatever"是不是语法正确的Python? (4认同)