python中三元运算符的缩写

python中三元运算符的缩写,python,conditional-operator,Python,Conditional Operator,我似乎记得三元算子存在性检验的删节。例如: a = None b = a if a else 'Not None!' # b is now 'Not None!' 我以为是这样的 a else 'Not None!' 但这不起作用。也许有另一种方法可以使用其他内置类型来缩写它?没有,没有可用的缩写 你在想一个或“不是一个!”相反 作为旁注:。。。如果其他的被称为一个;这是一个三元运算符,但这两个运算符之间的SQL也是如此。。。在里面表达式。不,没有可用的缩写 你在想一个或“不是一个!”相反

我似乎记得三元算子存在性检验的删节。例如:

a = None
b = a if a else 'Not None!'
# b is now 'Not None!'
我以为是这样的

a else 'Not None!'

但这不起作用。也许有另一种方法可以使用其他内置类型来缩写它?

没有,没有可用的缩写

你在想一个或“不是一个!”相反


作为旁注:。。。如果其他的被称为一个;这是一个三元运算符,但这两个运算符之间的SQL也是如此。。。在里面表达式。

不,没有可用的缩写

你在想一个或“不是一个!”相反


作为旁注:。。。如果其他的被称为一个;这是一个三元运算符,但这两个运算符之间的SQL也是如此。。。在里面表达式。

是的,在您的案例中有一个缩写

b = a or 'Not None!'
几乎相当于

b = a if a else 'Not None!'
唯一的区别是,在第一种情况下对a进行一次评估,在第二种情况下对a进行两次评估。在这两种情况下,放入b的值都是相同的


另外,请注意,在这两种代码中,如果a不是None,但仍然是False-y,则可能会得到意外的结果。考虑如果A是0,例如

< p>是的,在你的例子中有一个缩写。
b = a or 'Not None!'
几乎相当于

b = a if a else 'Not None!'
唯一的区别是,在第一种情况下对a进行一次评估,在第二种情况下对a进行两次评估。在这两种情况下,放入b的值都是相同的


另外,请注意,在这两种代码中,如果a不是None,但仍然是False-y,则可能会得到意外的结果。想想如果A是0,比如

< p>会发生什么?这对我来说确实没有意义。
a = None
b = a if a else 'Not None!'
你把b设置为非无!对于a的任何错误值,包括无

也许你在想

a = None
b = 'Not None!' if a is None else a
还是什么

不管怎样,除了那些你可以逍遥法外的情况

b = a or 'Not None!'


没有办法避免两次提到一个问题,这对我来说真的没有意义

a = None
b = a if a else 'Not None!'
你把b设置为非无!对于a的任何错误值,包括无

也许你在想

a = None
b = 'Not None!' if a is None else a
还是什么

不管怎样,除了那些你可以逍遥法外的情况

b = a or 'Not None!'


没有办法避免两次提及本应显而易见的问题。Post作为答案?值得注意的是,在else案例计算为False的某些上下文中,它们并不相同,如果您确实想要可读性,则应始终使用三元运算符。这主要是在旧代码中看到的,因为三元运算符不在旧版本的Python中。缩短时间并不能让事情变得更好。也许你在想:cond和x或者yWell,一些人喜欢的速记依赖于短路逻辑,错误是a或者“不是无!”。不过我不喜欢。缩写为三元运算符?这应该是显而易见的。Post作为答案?值得注意的是,在else案例计算为False的某些上下文中,它们并不相同,如果您确实想要可读性,则应始终使用三元运算符。这主要是在旧代码中看到的,因为三元运算符不在旧版本的Python中。缩短时间并不能让事情变得更好。也许你在想:cond和x或者yWell,一些人喜欢的速记依赖于短路逻辑,错误是a或者“不是无!”。不过我不喜欢。缩写为三元运算符?苏梅塔:D