2013-02-21 18 views
50

corro quanto segue nella interprete Python:doppio uguale VS è in python

>>> foo = 10 
>>> dir(foo) == dir(10) 
True 
>>> dir(foo) is dir(10) 
False 
>>> 

Perché è questo?

risposta

100

is verifica che 2 argomenti facciano riferimento allo stesso oggetto, == verifica che 2 argomenti abbiano lo stesso valore. dir() restituisce un list che contiene gli stessi dati per foo e 10, ma le istanze effettive di list per le 2 cose sono diverse.

+0

roba interessante :) – ben

+32

Un buon esempio è 1 == Veri restituisce Vero, ma 1 è Vero restituisce Falso. – Andrew

+4

Un punto ancora più direttamente rilevante è che 'dir (10) è dir (10)' non sarà nemmeno 'True' (escludendo qualche tipo di ottimizzazione dell'interprete), mentre' dir (1) == dir (10) ' sarà 'True'. –