>> l = []
1. ==
>> l == []
True
2. not
>> not l
True
3. 注意 is 与 == 的区别
>> l is []
False
显然不能用 is []
来对 list 进行判空。这里就涉及 is 与 == 两大运算符的区别了。
Python中对象包含的三个基本要素,分别是:
-
id(身份标识);
- 与编译器为对象分配的内存地址挂钩;
type(数据类型);
value(值);
is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪。== 比较操作符 和 is 同一性运算符(identical)区别:
- == 比较的是 value(值)是否相等;
- is 比较的是 id 是否相同,也即两对象是否指向的同一块内存空间;
但对于整型(integer),或者字符串类型(str):
>> a = 1
>> b = 1
>> a is b
True
>> id(a)
32212488L
>> id(b)
32212488L
>> a = 'hello'
>> b = 'hello'
>> id(a)
58279096L
>> id(b)
58279096L
>> a is b
True
这点和 C/C++ 编程是一致的,都利用了内存池的机制;