Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的一行if赋值_Python_Conditional Expressions - Fatal编程技术网

python中的一行if赋值

python中的一行if赋值,python,conditional-expressions,Python,Conditional Expressions,下面这个话题 有没有办法缩短此处建议的语句: num1 = (20 if intvalue else 10) 如果指定的值与条件中的值相同 这就是它现在的样子: num1 = (intvalue if intvalue else 10) intvalue出现两次。有没有办法只使用一次intvalue就能得到相同的语句?更优雅的东西?您可以在这里使用或: num1 = intvalue or 10 或短路;如果第一个表达式为true,则返回该值,否则返回第二个值的结果。可怕的是,someBo

下面这个话题

有没有办法缩短此处建议的语句:

num1 = (20 if intvalue else 10)
如果指定的值与条件中的值相同

这就是它现在的样子:

num1 = (intvalue if intvalue else 10)

intvalue
出现两次。有没有办法只使用一次
intvalue
就能得到相同的语句?更优雅的东西?

您可以在这里使用

num1 = intvalue or 10

短路;如果第一个表达式为true,则返回该值,否则返回第二个值的结果。

可怕的是,someBoolValue的值可能为10,而不仅仅是true或False。请参见编辑,我的意思是integer valueBe。真正地仔细的使用
短路。这里没有问题(因为
someBoolValue
只能是True或False),但不要忘记,其他一些对象,如dict和list,在为空时被视为False。@FunkySayu:是的,但在条件表达式中,同样的值将被视为False。@John:是的,Python中的所有对象都有一个,包括字符串。第二个表达式的值在这里并不重要。另外,请注意
0
是错误的,因此
num1=0或10
将导致
num1==10
,即使
0
是整数值。正如@FunkySayu所说,使用类似的
时,您应该非常小心。@Frost:注意,问题中的条件表达式使用的测试完全相同:
intvalue if intvalue else 10