有没有人能解答一下
1
Hopetree 2018-05-03 18:20:36 +08:00 1
```
print(False==None) print(False==0) print(0==None) print(None==None) False True False True ``` |
2
alvin666 2018-05-03 18:22:21 +08:00 via Android 3
false 是一个布尔型的变量,在内存中有相应的空间且有存储变量内容,none 意思是空,内存中没有存储(但是有相应的空间)
|
3
annielong 2018-05-03 18:25:17 +08:00
一个是布尔一个是空,肯定是不一样的,甚至空的字符串和 none 都不是一样的
|
4
SuperMild 2018-05-03 18:39:40 +08:00 1
尽量避免不同类型之间直接比较,特别是动态类型或弱类型语言,往往出现奇怪现象,与其在这上面浪费脑力(同时也给看代码的人添麻烦),还不如采用最佳实践。
|
5
purebluesong 2018-05-03 18:39:48 +08:00
楼主之前是写弱类型语言的吧
|
6
lolizeppelin 2018-05-03 18:41:25 +08:00 via Android
flase 是 0
none 是 null |
7
clino 2018-05-03 18:42:24 +08:00 via Android
print(False==bool(None))
这样就能达到你的目的 |
8
huahuajun9527 2018-05-03 18:53:08 +08:00 1
False == None
相当于 False.__eq__(None) ``` >>> False.__eq__(None) NotImplemented >>> r = False.__eq__(None) >>> type(r) <class 'NotImplementedType'> ``` 而 NotImplemented 则参考下面链接的文章 参考: https://stackoverflow.com/questions/3588776/how-is-eq-handled-in-python-and-in-what-order https://stackoverflow.com/questions/878943/why-return-notimplemented-instead-of-raising-notimplementederror |
9
enenaaa 2018-05-03 19:10:18 +08:00
python 虽然是脚本,但是强类型语言
|
10
CSM 2018-05-03 20:13:39 +08:00 via Android
因为他们类型不同,不相等很合理。
我甚至觉得应该直接 raise 一个 TypeError 才合理 |
11
vipfts 2018-05-03 20:26:46 +08:00
print(type(False))
print(type(None)) >>>>>>>>>>>> <class 'bool'> <class 'NoneType'> |
12
SimbaPeng 2018-05-03 21:01:00 +08:00 via Android 1
Python 不同数据类型之间比较永远不相等,文档里都有写的
|
13
SimbaPeng 2018-05-03 21:02:38 +08:00 via Android
出了 number 这个大类下面的数据类型之间比较会进行数学上的比较之外
|
15
SimbaPeng 2018-05-03 21:06:15 +08:00 via Android
另外判断是否为 False 或 None 的时候请用 is
|
16
whx20202 2018-05-03 21:08:51 +08:00
java 里面 false 和 null 也不一样啊 ,虽然基本类型没法直接比
|
17
secondwtq 2018-05-03 21:22:37 +08:00
吃着屎说 真香
|
18
lmqdlr 2018-05-03 22:03:35 +08:00 via Android
Python 是动态类型的强类型啊,跟 js 那种坑货不一样
|
19
ltoddy 2018-05-03 22:23:53 +08:00
== 比较的时候,先调用__eq__()方法,然后如果没有的话,会再调用__hash__()方法,所以才会看到 False==0 返回 True 的结果。
|
20
Arnie97 2018-05-04 01:23:04 +08:00 via Android
建议用 is 和 is not 来和 None 比较
|
21
binux 2018-05-04 01:36:32 +08:00
就是这么规定的,这么吧。
|
22
markx 2018-05-04 02:52:35 +08:00
因为是强类型语言。
|
23
mingyun 2018-05-04 06:50:47 +08:00 1
日了狗了
>>> a='wtf' >>> b='wtf' >>> a is b True >>> c='wtf!' >>> d='wtf!' >>> c is d False |
25
jy02201949 2018-05-04 09:02:23 +08:00
我不明白你们一整天用关公战秦琼有什么实战的意义
|
26
John60676 OP @ltoddy bool 的父类是 int,且 True 的值为 1,False 的值为 0 吧,所以 False == 0 是 True
|
27
jasonyang9 2018-05-04 10:20:41 +08:00
一个小坑而已,多踩踩就好了
|
29
aaronzjw 2018-05-04 10:50:03 +08:00
pyhton 的小坑
if i and i < 0: do something |
30
ycz0926 2018-05-04 10:51:21 +08:00
类型不同,怎么比较呢?
(。。其实觉得 python 这点有点丑陋) |
31
aaronzjw 2018-05-04 10:51:26 +08:00
发错了,抱歉。有时候想要判断变量是否为 none 和变量为 0,这样会坑。。
|