Identità vs Uguaglianza
Questo capitolo distingue tra identità e uguaglianza. L'identità determina se due variabili fanno riferimento allo stesso oggetto in memoria; l'uguaglianza determina se due oggetti hanno lo stesso valore. Comprendere questa distinzione è essenziale per scrivere condizionali, validazioni e logiche di elaborazione dati corrette.
Che cos'è is?
isverifica l'identità dell'oggetto — se due variabili puntano allo stesso oggetto in memoria;==verifica l'uguaglianza dei valori — se due oggetti hanno gli stessi contenuti.
1234567a = [1, 2] b = [1, 2] c = a print(a == b) # True - same contents print(a is b) # False - different list objects print(a is c) # True - c refers to the very same list as a
Quando usare is e quando evitarlo
- Utilizzare
isnel confronto con singleton comeNone;
123value = None if value is None: print("No value")
is notè il controllo di identità negato;
123var = 64 if var is not None: print("var has a value: ", var)
- Evitare l'uso di
isper verificare l'uguaglianza tra numeri o stringhe. A causa del caching/interning interno, l'identità può sembrare "funzionare" a volte, ma non è affidabile tra diverse esecuzioni e ambienti; utilizzare invece==;
123456789x = 256 y = 256 print(x == y) # True (same value) print(x is y) # May appear True; do not rely on identity here s1 = "hello" s2 = "he" + "llo" print(s1 == s2) # True print(s1 is s2) # Implementation detail; avoid using is here
- Per i booleani, preferire i controlli di veridicità.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Completa gli spazi con is o ==:
2. Qual è il modo corretto per verificare l'assenza di "valore"?
3. Quale affermazione è raccomandata?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain more about why using `is` with numbers or strings is unreliable?
When should I use `==` instead of `is` in my code?
Can you give more examples of identity vs equality in Python?
Awesome!
Completion rate improved to 5
Identità vs Uguaglianza
Scorri per mostrare il menu
Questo capitolo distingue tra identità e uguaglianza. L'identità determina se due variabili fanno riferimento allo stesso oggetto in memoria; l'uguaglianza determina se due oggetti hanno lo stesso valore. Comprendere questa distinzione è essenziale per scrivere condizionali, validazioni e logiche di elaborazione dati corrette.
Che cos'è is?
isverifica l'identità dell'oggetto — se due variabili puntano allo stesso oggetto in memoria;==verifica l'uguaglianza dei valori — se due oggetti hanno gli stessi contenuti.
1234567a = [1, 2] b = [1, 2] c = a print(a == b) # True - same contents print(a is b) # False - different list objects print(a is c) # True - c refers to the very same list as a
Quando usare is e quando evitarlo
- Utilizzare
isnel confronto con singleton comeNone;
123value = None if value is None: print("No value")
is notè il controllo di identità negato;
123var = 64 if var is not None: print("var has a value: ", var)
- Evitare l'uso di
isper verificare l'uguaglianza tra numeri o stringhe. A causa del caching/interning interno, l'identità può sembrare "funzionare" a volte, ma non è affidabile tra diverse esecuzioni e ambienti; utilizzare invece==;
123456789x = 256 y = 256 print(x == y) # True (same value) print(x is y) # May appear True; do not rely on identity here s1 = "hello" s2 = "he" + "llo" print(s1 == s2) # True print(s1 is s2) # Implementation detail; avoid using is here
- Per i booleani, preferire i controlli di veridicità.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Completa gli spazi con is o ==:
2. Qual è il modo corretto per verificare l'assenza di "valore"?
3. Quale affermazione è raccomandata?
Grazie per i tuoi commenti!