#python
#python
Вопрос:
Допустим, у меня есть переменная в python a
если a
есть None
, то str(None)
собирается вернуться None
или что-то еще?
Я запустил это в интерфейсе и сделал что-то вроде:
a = str(None)
print(a is None)
И он напечатал False
, почему это?
Комментарии:
1.
str(None) == 'None'
вернет true, если это поможет вам понять2.
a
это строка из 4 символов, в которой указано слово None (не pythonNone
). Это может помочь визуализировать его, с помощьюprint(list(a))
которого символы разделяются на список['N', 'o', 'n', 'e']
.3. если a равно None, то будет ли str (None) возвращать None или что-то еще? Почему бы просто не посмотреть на результат
str(None)
напрямую?4.
print(str(None))
довольно быстро расскажет вам, как выглядит возвращаемое значение. Не спрашивайте нас, когда вы сможете заставить компьютер дать вам правильный ответ.
Ответ №1:
В Python str
всегда будет возвращать строку. В данном случае str(None)
это строка "None"
. "None"
не равно None
, поскольку одно является строкой, а другое — фактическим значением.
Ответ №2:
Преобразование его в строку изменяет его на слово «None». Попробуйте следующее.
a = str(None)
print(type(a))
print(type(None))
print('None' == None)
Это приведет к следующему.
<class 'str'>
<class 'NoneType'>
False
Строка и нетип не равны.
Ответ №3:
Оператор is
является оператором идентификации, что означает, что он возвращает True
, если обе переменные являются одним и тем же объектом. Однако объекты, ссылающиеся на них, None
всегда будут иметь str(None)
один и тот же идентификатор и None
не будут иметь один и тот же идентификатор, поэтому возвращается ваш оператор печати False
.
is
Оператор не имеет никакого отношения к тому, равно ли что-то по значению, для этого вы должны использовать ==
operator . Смотрите примеры ниже.
a = str(None)
>>>print(a == None)
False
>>> print(a is None)
False
>>> print(a is str(None))
False
>>> print(a == str(None))
True
Ответ №4:
Что касается вашего первого вопроса (кстати, у вас должен быть только один на сообщение), вы можете выяснить это, выполнив его самостоятельно.
Что касается вашего второго вопроса, вы печатаете значение выражения a is None
. a
есть либо None
одно, либо другого. В любом случае, вы получите логическое значение. В данном случае a
это не None
что иное, как строка.
Ответ №5:
Возможно, вам нужно распечатать результат a , и тогда вы знаете, почему результат False
.
a = str(None)
print(type(a))
print(a is None)