Python 學習筆記
is 是判定 object 相同,
is 是判定 object 相同,
== 是判定 value 相同
所謂 object 相同,若 a 是某 class,b = a,經過這種只有 copy 外殼的 shadow copy,而非 b 另外配置記憶體,逐 byte copy a 成員的 deep copy,可說 a is b。
簡言之, a = b 只有 shadow copy,內部一樣,所以 a is b 為 True。
# code
簡言之, a = b 只有 shadow copy,內部一樣,所以 a is b 為 True。
# code
class A:
def f2(x): return x
def f2(x): return x
a = range(100)
a1 = A
a2 = a1
print 'id(a1)={}, id(a2)={}'.format(id(a1), id(a2))
print id(a1.a), id(a2.a)
print a1 is a2
# output
id(a1)=34986168, id(a2)=34986168
46065184 46065184
True
而比對字串, value, 使用 is 非常危險.
除非是同 set 內的 string, 怎知兩個是相等呢?
a = '123.jpg'
a.split('.')[1] is 'jpg' # FALSE
a.split('.')[1] == 'jpg' # TRUE
沒有留言:
張貼留言