Test per vuoto vs test per nulla

3

Esiste un consenso tra le lingue su come i test per il vuoto siano distinti dai test per il noneness? In python la seguente espressione è falsa:

{} is {}

Tuttavia questa espressione restituisce True

False is False

Perché la prima espressione non viene valutata su True?

    
posta Niklas Rosencrantz 15.06.2013 - 07:12
fonte

1 risposta

7

Penso che la parte che ti sei perso sia la parola chiave "is" in realtà.

"è" riferimenti di test, o "identità" di un oggetto. {} è un dizionario vuoto, espressione "{} è {}" crea due dizionari vuoti. I loro valori sono "uguali" ma le loro identità non sono perché quei due dizionari risiedono in posizioni diverse nella memoria in quanto il dizionario è un oggetto creato dinamicamente.

"False is False" funziona perché è una costante, quindi entrambi i valori si riferiscono allo stesso blocco di memoria. Poiché non ha senso che Python allochi blocchi di memoria diversi ogni volta che vede "False" nel codice.

    
risposta data 15.06.2013 - 07:41
fonte

Leggi altre domande sui tag