Ответ 1
Проверка того, содержит ли строка символы в нем, проверяя len(str(result))
, определенно не pythonic (см. http://www.python.org/dev/peps/pep-0008/).
result = foo() # foo will return None if failure
if result:
# deal with result.
pass
None
и ''
принуждают к логическому False
.
Если вы действительно спрашиваете, почему str(None)
возвращает 'None'
, то я считаю, что это необходимо для трехзначной логики. True
, False
и None
могут использоваться вместе, чтобы определить, является ли логическое выражение True
, False
или не может быть определено. Функция идентификации является самой простой для представления.
True -> 'True'
False -> 'False'
None -> 'None'
Было бы действительно странно, если бы str(None)
был ''
:
>>> or_statement = lambda a, b: "%s or %s = %s" % (a, b, a or b)
>>> or_statement(True, False)
'True or False = True'
>>> or_statement(True, None)
'True or None = True'
>>> or_statement(None, None)
'None or None = None'
Теперь, если вы действительно хотите получить авторитетный ответ, спросите Guido.
Если вы действительно хотите, чтобы str(None)
дал вам ''
, прочитайте этот другой вопрос: Python: самый идиоматический способ конвертировать None в пустую строку?