Ідентичність проти рівності
У цьому розділі розглядається різниця між ідентичністю та рівністю. Ідентичність визначає, чи дві змінні посилаються на той самий об'єкт у пам'яті; рівність визначає, чи мають два об'єкти однакове значення. Розуміння цієї відмінності є важливим для написання коректних умов, перевірок та логіки обробки даних.
Що таке is?
isперевіряє ідентичність об'єкта — чи дві змінні вказують на той самий об'єкт у пам'яті;==перевіряє рівність значень — чи мають два об'єкти однаковий вміст.
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
Коли використовувати is і коли уникати його
- Використовуйте
isдля порівняння з синглтонами, такими якNone;
123value = None if value is None: print("No value")
is not— це перевірка ідентичності з запереченням;
123var = 64 if var is not None: print("var has a value: ", var)
- Уникайте використання
isдля перевірки рівності між числами або рядками. Через внутрішнє кешування/інтернування ідентичність може іноді "працювати", але це ненадійно між різними запусками та середовищами, використовуйте==замість цього;
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
- Для булевих значень надавайте перевагу перевірці істинності.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Заповніть пропуски: використовуйте is або ==:
2. Який правильний спосіб перевірити на «відсутність значення»?
3. Яке твердження є рекомендованим?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Ідентичність проти рівності
Свайпніть щоб показати меню
У цьому розділі розглядається різниця між ідентичністю та рівністю. Ідентичність визначає, чи дві змінні посилаються на той самий об'єкт у пам'яті; рівність визначає, чи мають два об'єкти однакове значення. Розуміння цієї відмінності є важливим для написання коректних умов, перевірок та логіки обробки даних.
Що таке is?
isперевіряє ідентичність об'єкта — чи дві змінні вказують на той самий об'єкт у пам'яті;==перевіряє рівність значень — чи мають два об'єкти однаковий вміст.
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
Коли використовувати is і коли уникати його
- Використовуйте
isдля порівняння з синглтонами, такими якNone;
123value = None if value is None: print("No value")
is not— це перевірка ідентичності з запереченням;
123var = 64 if var is not None: print("var has a value: ", var)
- Уникайте використання
isдля перевірки рівності між числами або рядками. Через внутрішнє кешування/інтернування ідентичність може іноді "працювати", але це ненадійно між різними запусками та середовищами, використовуйте==замість цього;
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
- Для булевих значень надавайте перевагу перевірці істинності.
123flag = True if flag: # clearer than: if flag is True print("flag is True")
1. Заповніть пропуски: використовуйте is або ==:
2. Який правильний спосіб перевірити на «відсутність значення»?
3. Яке твердження є рекомендованим?
Дякуємо за ваш відгук!