python赋值语句合法条件_Python带条件判断的赋值语句

Python的赋值语句,有一种带条件判断的语法,将赋值和条件判断融为一行代码,使需要条件判断的赋值代码写起来更加简练高效。这种赋值语句中的条件判断,可以是if判断,也可以是or和and判断。

赋值语句中的if

请看下面的代码示例:

>>> a = 123 if True else 321

>>> a

123

>>> a = 123 if False else 321

>>> a

321

以上代码,给变量a赋值,如果if True,a的取值就是if前面的那个值,如果if False,a的取值就是else后面的值。以上代码写的比较简单,实际情况下if判断可以写的很复杂。

赋值语句中的and和or

先看代码吧:

>>> a = 10 or 20

>>> a

10

>>> a = 10 and 20

>>> a

20

>>> b = 0 or 1

>>> b

1

>>> b = 0 and 1

>>> b

0

这种语法在python中叫“短路运算符”,属于python的布尔操作。下面总结一下赋值语句中and和or的语法规则:

表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。

表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。

若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

其实跟条件判断是一样的,对于or,从左到右找第一个True,如果都是False,就取最后一个为False的值;对于and,从左到右找第一个False,如果都是True,就取最后一个为True的值。请看下面代码:

>>> a = 0 or False or None

>>> a

>>> type(a)

>>>

>>> a = 1 and True and 'abc'

>>> a

'abc'

不建议用本文介绍的带条件判断的赋值语句,写特别复杂的语句,这种语句一旦复杂了,就失去了可读性,让人无法理解,还容易出错。

另类条件赋值

我不知道应该如何称呼,也没有看到英文,就直接上代码吧:

>>> a = (1,2)[True]

>>> a

2

>>> a = (1,2)[False]

>>> a

1

>>>

>>> x = 1

>>> a = ('abc', '123')[x == 1]

>>> a

'123'

>>> a = ('abc', '123')[x != 1]

>>> a

'abc'

>>> a = ['abc', '123'][x != 1]

>>> a

'abc'

这样的赋值,其实就是取tuple总的一个元素,用一个条件来生产出0或1,因此tuple和list都可以,True相当于1,False相当于0。

-- EOF --

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值