我有以下代码
num1 = 10
someBoolValue = True
如果someBoolValue
是True
,则需要将num1
的值设置为20
;否则不执行任何操作。所以,这是我的代码
num1 = 20 if someBoolValue else num1
有什么方法可以避免...else num1
部分,让它看起来更干净吗?相当于
if someBoolValue:
num1 = 20
我试着用...else pass
替换它,就像这样:num1=20 if someBoolValue else pass
。我得到的只是语法错误。我也不能省略...else num1
部分。
使用这个:
我认为这在Python中是不可能的,因为您实际要做的事情可能会扩展到如下内容:
如果排除
else num1
,将收到一个语法错误,因为我非常确定赋值必须实际返回某些内容。正如其他人已经提到的,您可以这样做,但这是不好的,因为您可能会在下次阅读这段代码时弄糊涂自己:
出于同样的原因,我不是
num1 = someBoolValue and 20 or num1
的忠实粉丝。我得仔细考虑那条线在干什么。要真正实现您的目标,最好的方法是使用原始版本:
这是最好的verison的原因,因为很明显你想做什么,你不会把自己搞糊涂,也不会让其他人在以后接触到这段代码。
另外,顺便说一下,
num1 = 20 if someBoolValue
是有效的Ruby代码,因为Ruby的工作方式有些不同。一行:
但别那么做。通常不需要这种样式。人们更喜欢较长的形式,为了清晰和一致。
(同样,应避免戴骆驼帽。所以应该使用
some_bool_value
。)请注意,没有
else
部分的内联表达式some_value if predicate
不存在,因为如果谓词为false,则不会有返回值。但是,在所有情况下,表达式都必须具有明确定义的返回值。这与Ruby或Perl中的用法不同。相关问题 更多 >
编程相关推荐