Странное поведение Python 'is'

python python-3.x

95 просмотра

1 ответ

Версия Python: Python 3.5.1 (v3.5.1: 37a07cee5969, 6 декабря 2015, 01:38:48) [MSC v.1900 32 бит (Intel)] на win32.

>>> 256 is (2**8)
True
>>> 512 is (2**9)
False

UPD

>>> print(id(256), id(2**8))
1933723392 1933723392
>>> print(id(512), id(2**9))
60976880 60976704
Автор: pank Источник Размещён: 08.11.2019 10:59

Ответы (1)


2 плюса

Решение

isпроверяет, хранятся ли две переменные в одной и той же ячейке памяти . Следующее заявляет, что два числа хранятся в разных местах в памяти:

>>> 512 is (2**9)
False

Очень вероятно, что вы действительно хотели бы знать, были ли числа равны . Для этого проверьте на равенство:

>>> 512 == (2**9)
True

Исключительный случай: None

Noneне имеет никакой разумной ценности. Следовательно, проверка , если что - то равное по , Noneкак правило , не полезно. Чтобы узнать, есть ли какая-либо переменная None, используйте is:

>>> x = None
>>> x is None
True
Автор: John1024 Размещён: 20.08.2016 07:13
Вопросы из категории :
32x32