python冷知识

辨析True/False/None/is/==

之前看到有人在写代码时,定义了一个列表l = []然后在处理过程中直接if l is True或者if l is None

首先,True和False的类型都是bool类型,它们的值分别等于1或者0。也就说所有等于1的变量都等于True,所有等于0的变量都等于False

所以,所以拿一个列表和True、False比较,永远是错误的。那么len(name_list) is True是正确的吗?既然True等于1,False等于0,用列表的长度和True、False比较总可以吧?不,仍旧错误!因为这里又混淆了is和==的区别:

  • ==比较的是两个变量的值,只要值相等该逻辑表达式就成立

  • is比较的是两个变量的值和id,什么时候可以is成立呢?前提是值必须相同,再次类型必须相同,0==True,但是0的类型是int,True的类型是bool,所以0 is True怎么可能会成立呢?最后,id必须一样,在一个作用域内,创建两个值相同的字符串,它们的id是一样的;但是创建两个值一样的列表,它们的id仍旧不一样!

在这里插入图片描述
搞清楚了==和is后,再来聊聊None

刚才说了True和False的误区后,其实还有部分人另辟蹊径,使用None来判断列表是否为空,只可惜,越错越远

[] is None[] == None这两种写法,到底谁对谁错呢?都错!

None是一个特殊的变量,它的类型是NoneType,意思就是没有类型,也没有值,那么想判断空列表、空字典、空元组,怎么可能和None比?

但是None可以重新转换成其余的变量类型的,比如a = None,然后a = [1,2]。另外在python3中,不可以用==接None,必须使用is,为什么呢?因为None很特殊,它只有唯一一个,意思就是定义再多的None,其实都是那个唯一的None,所以只能用is None啦。

最后,当你想判断列表为空,到底该怎么办呢?

我们知道if判断的是语句的真假,什么是真假?在python中,假有以下几种情况:

  1. 所有空列表、空字符串、空字典等等都是假

  2. 所有零值都是假,False也是假

  3. 最后,最特殊的None也是假

除假以外全部为真。所以判断列表为空,只需要if l:即可。

python最大整数是多少?

很多帖子上都使用了sys.maxint,得到的值为2147447412 ,可是这个用法已经弃用了,新版本的用法为:sys.maxsize,在64位机上大小扩展到了9223372036854775807,达到了惊人的九百二十二万亿。可惜,我在测试type(sys.maxsize**2)之后发现仍旧是一个整数,也就是说python的int整数已经没有上限了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值