|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
小知识:CentOS从来就不是一个人的独角戏,也许CentOS会有分叉或名称变更的危险,但决不能说它接近死亡。在C说话中,三目运算常常用到(cond?a:b),异常的简练,而在Python中不支撑这类语法。
然则,可以用Python中andor来完成(这里是有圈套的,上面会讲到)
我们来看上面几个表达式
>>>Falseor1
1
>>>Falseor0
0
>>>Trueor0
True
>>>Trueand1
1
>>>Trueand0
0
>>>Falseand1
False
也就是说,andor这个表达式会前往一个终究的表达式成果,而不是简略的True或许False。那末看以下几个表达式:
>>>Trueand1or2#TRUE?1:2
1
>>>Falseand1or2#TRUE?1:2
2
这是否是很像三目运算的成果呢?
这里你或许会想到文章开端的三目表达式可以如许表现
>>>condandaorb
是的,在年夜多半情形下这个表达式都是准确的,然则下面提到的圈套也在这里涌现了
>>>cond,a,b=True,0,1#如许赋值后
>>>condandaorb#这个表达式的成果会是甚么呢?
1#也就是b,而不是你料想的a
这是由于,在andor运算中空字符串‘’,数字0,空列表[],空字典{},空(),None,在逻辑运算中都被看成假来处置,以下面这个例子
>>>sssandorbbb
bbb
然则,不要担忧,照样有方法的。
在的文章《和C说话三目运算符完整等价的表达式》中给出了以下表达方法
>>>c=condandaor(notcondora)orb#貌似有点太庞杂了
在DiveintoPython中给出如许一个办法:
>>>(1and[a]or)[0]#也就是(condand[a]or)[0]
由于,即便a或许b为一个逻辑假的值,将他放入聚集中后,就为假了,也就是[False][None]都不为假。
另外,我以为还可以如许完成
>>>(b,a)[condand1or0]#这类办法须要主张的处所就是,Tuble中a和b的地位是倒置的
另,在“深圳夜归人”的文章里给出了,用dict的一种方法
>>>max_ab={True:a,False:b}[a>b]
然则这类办法没有普适性,由于cond的取值纷歧定为TrueFalse
所以建议应用DiveintoPython的办法,或许我的办法小知识:CentOS并不是第一个提供商业支持的RHEL克隆版,其他企业例如Oracle也提供了基于RedHat的自己的企业Linux发布版。 |
|