Вопрос на собеседовании python junior developer — вывод списка
Наткнулся на github на список вопросов к собеседованию python разработчика. Заинтересовал вопрос про вывод списка, ответ на который морально устарел.
Что выведет такой код?
В первую очередь это вопрос на внимательность. Но есть и о чём порассуждать.
1. Сразу начнём с PEP8. Называть переменную List нельзя, такой формат именования используется для классов.
class List():
. pass # точка в начале - иначе пикабу не даёт выставить табуляцию
2. Заметна опечатка — создался List, срез делается по list. Но тут начинается интересное. Эта версия кода в python3.6 вызовет ошибку TypeError: 'type' object is not subscriptable.
Связано это с тем, что list — ключевое слово для создания списка в формате list(). Но без круглых скобок list — это сам класс list, а не экземпляр. У самого класса список не определена операция получения элемента по номеру (subscription).
С обновлением системы указания типов в 3.9 питоне, выражение вида list[10:] рассматривается интерпретатором как список диапазонов или list[slice(10, None, None)] и выдавать ошибку уже не будет.
3. Если код был бы такой
list_a = []
print(list_b[10:])
То мы получили бы ошибку NameError: name 'list_' is not defined независимо от версии питона.
Итого исходный код приведёт к:
— TypeError, если мы использовали ключевое слово list в python3.6
— list[slice(10, None, None) для python3.9
— NameError, если мы использовали несуществующее название переменной.
И такой код вообще не должен пройти code review.
В телеграмм-канале devfm разбираем разные нюансы из жизни разработчика на Python и не только — python, bash, linux, тесты, командную разработку.



Программирование на python
954 поста12K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу