Решение на Пет малки функции от Георги Павлов
Резултати
- 10 точки от тестове
- 0 бонус точки
- 10 точки общо
- 19 успешни тест(а)
- 0 неуспешни тест(а)
Код
Лог от изпълнението
................... ---------------------------------------------------------------------- Ran 19 tests in 0.162s OK
История (3 версии и 2 коментара)
Георги обнови решението на 22.03.2015 17:45 (преди над 9 години)
Георги обнови решението на 23.03.2015 12:29 (преди над 9 години)
Имам въпрос относно сравнението на типове с isinstance() и type(). В pep8 пише, че трябва да се ползва isinstance(), за да се сравняват типове, но когато промених решението си и днес пуснах едни от допълнителните тестове във форума, се оказа, че isinstance() приравнява bool към int. Това означава ли, че в определени случай трябва да се използва type() и да се пренебрегне style guide-а?
По-добра идея е да се използваш isinstance
, тъй като той би върнал истина, че инстанции на collections.defaultdict
и collections.OrderedDict
са инстанции на dict
, тъй като първите наследяват от dict
.
Когато ви дадохме домашното все още не ви бяхме показали isinstance
и на последната ни лекция споменахме, че няма да сме критични по тази тема. Т.е. в реда на нещата е да използвате type
, конкретно за тази задача.
Причината isinstance(True, int)
да връща истина е, че в питон bool
наследява от int
:
>>> True.__class__.__mro__
<<< (bool, int, object)
Гледай на това като на имплементационен детайл, който поради една или друга причина прави това възможно:
>>> True + True
<<< 2
>>> 8 * (True + True)
<<< 16
>>> True + True - False
<<< 2
>>> 8 * False
<<< 0