python中红色表示方法,python3 三元表达式
我知道Python没有三元形式,但是我通过技巧达到了三元形式的效果。
摘自《Dive Into Python》:
在Python上,“AND”和“OR”执行预期的心跳星逻辑运算,但不返回心跳星值;相反,它返回一个要实际比较的值。
介绍
1 a 和 b #1
2 b3 和2 b #
4 5 a 和 b 和 c #3
6摄氏度
当使用and时,公式的值是在心跳很快的星的上下文中从左到右计算的。0,,[],(),),),在一个心跳很快的星球的背景下,无一为假;其他都是真的。没关系。几乎一切。默认情况下,心跳快的星型上下文中的类实例为真,但可以在类中定义特定的方法,使类实例的运算值为假。如果心跳快的星号上下文中的所有值都为真,将返回最后一个值。在本例中,and运算“A”的值为真,然后“B”的值为真,最后返回“B”。
2如果心跳快的星的上下文中的任何值为假,将返回第一个假值。在本例中,“”是第一个假值。
3,因为所有值都为真,并返回最后一个真值,“C”。
或者介绍
1 a 或 b #1
2 a3 或 b #2
4 b5 或[]或[] #3
6 []
7 def侧FX (:8。打印内部外汇) 9。返回1
10.11a 或sideFX(#4
12英尺高
使用1or时,如果在心跳快的星星的上下文中从左到右操作值,则类似于and。如果值为true,或立即返回值。在本例中,“a”是第一个真值。
2 OR运算“”的值为false,然后运算“b”的值为true,返回“b”。
3如果所有值都为假,则返回最后一个假值。or 的值为假,那么运算[]的值为假,连续运算{}的值为假,最后返回{}。
4.注意,在或心跳很快的星球的上下文中,继续执行表达式运算,直到找到第一个真值,忽略其余的比较值。如果某些值有副作用,这个特性非常重要。其中,永远不会调用函数sidefx。因为or运算“a”的值为真,所以它立即返回“a”。
使用and-or技术
1a=第一个 2b=第二个 31和球体# 1
4 first5 0和a或b #2
6 秒
这种语法像C语言中的bool吗?A: b型。因为整个公式是从左到右运算的,所以先运算and公式。1和 first 的运算值为 first ,然后 first 或 second 的运算值为 first 。
20和第一运算值为假,然后0或第二运算值为第二。
但是,这是and-or技术,是C语言的bool,因为这样的Python表达式只是心跳加速的星星的逻辑运算,而不是语言的具体结构?A: b语法是很重要的区别。如果a为false,表达式将不会按预期工作。
如果and-or技术无效
1 a=2 b=第二个 3 1和a或b #1
4 秒
1a是空字符串,所以在Python heartbeat的star上下文中,空字符串被认为是false。1和“”的运算值为“”,最后一个“或”秒”的运算值为“秒”。哦!这个值不是你想要的。
如果在and-or技能,bool和a或b表达式,心跳快的星星的上下文中,a的值为false,会不会像C语言表达式bool一样?像a: b一样工作。
AND-OR技巧之后真正的技巧是防止A的值为假。最常见的方法是将A设置为[a],B设置为[b],然后使用返回值列表中的第一个元素。应该是a或者b。
安全使用and或技能。
1a= 2b= second 3(1和[a]或[b] ) [0] #1
4
【a】是非空列表,所以绝不是假的。即使a是0," "或其他假值,它也是真的,因为列表[a]包含元素。
到目前为止,这种技术可能看起来问题超出了它的价值。毕竟,既然你可以用一个if语句做同样的事情,为什么要这么麻烦呢?嗯,很多时候你必须在两个常量值之间做出选择。我们知道A的值总是真的,所以我们不用担心使用这么简单的语法。仍然有很好的理由使用更复杂的安全形式。例如,在Python中,诸如lambda函数之类的if语句可能不可用。
但是,三元语法。X if C else Y集成在Python2.5中。
1defsmaller(x,y ) :2。returnxifxyelsey3.4smaller,20 )5 10
这样不是更简洁易懂吗?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。