None
в Python - это объект.Почему не len (None) возвращает 0?
>>> isinstance(None, object)
True
И как таковой он может использовать такие функции, как __str __()
>>> str(None)
'None'
Но почему это не сделать то же самое для __len __()?
>>> len(None)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
len(None)
TypeError: object of type 'NoneType' has no len()
Похоже, что это было бы Pythonic таким же образом, что if list
приемлемо, даже если переменная None
, а не просто пустой список.
Есть ли случаи, которые сделали бы использование len(None)
еще одной проблемой?
Потому что 'None' не имеет' __len__'; это не ['Sized'] (https://docs.python.org/2/library/collections.html#collections.Sized). – jonrsharpe
@jonrsharpe Но это может быть просто добавленная функция, которая возвращает 0 независимо от того, что. – SuperBiasedMan
это могло бы, но это не имело бы большого смысла. Почему объект имеет длину, если это не коллекция объектов? –