我是否认为没有办法在Python的一行中放置if语句和else语句?

时间:2014-06-12 21:19:03

标签: python if-statement

我是否正确地认为我不能在Python的一行中添加if语句和相应的else语句?

NB:

variable = value1 if condition else value2

不是两个陈述。它是一个可以取两个表达式之一的值的语句。

我想做点什么

if condition a=value1 else b=value2

我认为这需要在Python中使用完整的if-else吗?像

if condition:
    a=value1
else:
    b=value2

正如我上面已经提到的那样

注意(这是定义什么是语句以及什么是表达式所固有的,每个程序员都应该熟悉它),因为我指的是两个不同的变量,上面与

完全不同
if condition:
    a=value1
else:
    a=value2

我当然可以简单地使用条件表达式

a = value1 if condition else value2

因此,我的问题不是Does Python have a ternary conditional operator?

的重复

3 个答案:

答案 0 :(得分:2)

my_items = {}
my_items["a" if condition else "b"] = value

我认为会更好......

但你可以做到

globals()["a" if condition else "b"] = value

这将完全符合你的要求(虽然一般来说这是不赞成的)

如果你想真正做到可以做到

eval("a=value1" if condition else "b=value2") 

但我永远不会建议实际做这样的事情

说实话,我很难想到你真正想要的任何有效用例

if condition:
  a = value1
else:
  b = value2

答案 1 :(得分:2)

Python要求你将if和你的其他行放在不同的行上,因为如果不这样做会使你的代码难以阅读,并且很容易编写令人不快的不可读的代码。

使用此功能,您的代码不太可能更好。

相反,请考虑使用函数为代码提供更有意义的方面,通过返回元组,您可以同时更改ab

答案 2 :(得分:1)

实际上不会推荐它,但你也可以使用元组解包:

a,b = (value1 if condition else a), (value2 if not condition else b)