100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > tricks about and-or in python

tricks about and-or in python

时间:2021-10-09 15:23:42

相关推荐

tricks about  and-or in python

看python多线程那部份的东西时看到一个好玩的东西,因为我也是初学python。所以写在这里加强一下记忆。

关于and

先看个例子:

1 ‘a' and 'b' and 'c'2 '' and 'b'3 'a' and 'b'

这个的输出是:

1 'c'2 ''3 'b'

解释一下为什么:

在布尔环境中除了0,‘’,{},[],(),None是假以外,其它几乎所有东西的布尔环境都是真。在用and的时候如果所有的布尔环境都是真,那么返回的是最后一个布尔环境为真的值。

如果有一个为假,则返回第一个布尔环境为假的值。

关于 or

1 'a' or 'b'2 '' or 'b'3 '' or {} or None

输出:

1 'a'2 'b'3 None

同样给出这段输出的解释:

不难发现or的规则和and是类似的:遇到布尔环境为真的立即返回这个值,所以第一个输出是‘a’,而第二个中‘’为假‘b’为真,所以返回的是‘b’。当所有的值的布尔环境都为假时,返回的是最后一个值。

关于and-or

熟悉c语言或者java语言的一定知道三元预算符这个说法,也就是bool?1:0这种形式,其实and-or和这个类似。

来吧,少年,再举个栗子

1 a = 'first'2 b = 'second'3 1 and a or b4 0 and a or b

输出如下:

1 ‘first’2 ‘second’

原因是酱紫的:1为真对吧,所以返回的是a;0为假,所以返回的是b。

但四,这里有陷阱!

比如:

1 a = ''2 b = 'second'3 1 and a or b

你猜它的输出是什么

没错,你想错了>~~<!

'second'

因为1 and '' 的值为''(还记得前面说过的吗),'' or 'second'的运算结果是‘second’。

所以在用and-or的时候一定要保证a为真。否则会蛋疼的少年!

那么如何规避这种错误的结果呢,《Dive into python》中给出了思路

你可以这样,这样,然后这样>~<(为毛我第一次写博客这么兴奋啊)

1 a = ''2 b = 'second'3 (1 and [a] or [b])[0]

因为[a]是一个非空列表,所以[a]一定是真。

最后要说的是and,or,and-or的远算都是从左往右。

写完鸟》!《

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。