Pull to refresh

Comments 13

Что за поехавшая логика?


Капитан Очевидность мчится в этот тред сообщить, что частота возниковения ошибок зависит только и исключительно от того, что и когда будет помещено в переменную _.


При чём тут вообще встроенные классы? Любой может создать свой собственный класс со своими __and__ и __or__ и поместить его экземпляр в переменную _. Если я напишу код, который помещает в _ такой экземпляр, то выражения _+_ и _|_ не дадут ошибку вообще никогда: https://repl.it/repls/RemorsefulChartreuseCarat


Если бы мне дали такую задачу с таким ответом на собеседовании, мне бы, видимо, пришлось сказать потенциальному работодателю «Вы мне не подходите».


Дополнительно можно попытаться порассуждать про частоту использования базовых классов в реальных проектах, про небазовые классы и реализацию указанных выше методов для них.

Дополнительно можно попытаться порассуждать про частоту использования переменной _ в реальных проектах, раз уж начали с неё.

Вероятно Вы правы, в общем случае, но мне представлялось очевидным, что задачи на собеседовании по ЯП приводятся не для получения какой-либо точной статистики о реальных проектах, а как повод показать свои знания в конкретной предметной области
Вы правы, что задачи на собеседовании приводятся как повод показать свои знания в конкретной предметной области. Только ваш пример совсем не про знания конкретной предметной области. Ну только если вы не собеседуетесь на «Специалиста по встроенным типам в python».
Потому что из
Задача сводится к рассмотрению случаев появления ошибок
в конкретной предметной области программирования (на python) ну вообще никак не выходит
Т.е. к поиску встроенных типов
.

Я бы принял человека, который так развёрнуто и по полочкам отвечает на вопросы на должность преподавателя=)
На такие задачи можно давать ЛЮБОЙ ответ а потом с удовольствием глумиться над интервьюером, объясняя ему, что вы создали ровно 5 потомков от int и «счет сравнялся». Не зря же вы ехали через пол города на это собеседование.
Хорошая задача — конкретная задача. Но с хорошим человеком пообщаться можно на любую тему. Маловероятно, конечно, что такую задачу придумал хороший человек, но мало ли…
Идея про потомки мне нравится.
И действительно — можно продолжить рассуждения в ключе сворачивания числа потомков в таблице (но не доходя до базового класса — объект).
А про хороший/плохой — мне больно думать про это о себе, но я только сам ходил и хожу по собеседованиям и ни разу никого не собеседовал.
Мой любимый вопрос на собеседовании когда я помогаю HR пообщаться с претендентом примерно такой:
Представьте себе, что пришел странный инвестор и предлагает вам денег на какой-то ваш pet-project. Расскажите мне об этом проекте. Чем бы вы хотели заниматься, если бы вам за это неплохо платили?

Иногда получается чертовски интересный разговор, а иногда человек впадает в ступор и складывается ощущение, что ему вообще ничего не интересно. Вопрос странный, спорный, для кого-то сложный, а для кого-то наоборот, чересчур простой. Неизменно одно: любой, даже пустой ответ на него может многое сказать о человеке проницательному HR-специалисту. Жаль, что я недостаточно проницателен=)
) Вы знаете, мне очень не понравился этот вопрос. Не знаю, может на такую реакцию он и рассчитан, но я даже не могу сам себе ответить — он меня злит, мне хочется нагрубить, или в этом вся суть и интересна моя реакция, а не качество вопроса.
Но я бы ответил (надеюсь сдержанно и корректно) ), что для домашнего проекта мне его деньги не нужны. Нужен только я и мое время. Хочешь написать супер црм, пиши. Если не пишешь, значит для тебя это не важно. И все отговорки — семья, время и т.д. Просто возможность «съехать». Это как в продажах, когда тебе говорят, что нет денег. Это не значит, что в компании нет денег на ваш продукт, это значит, что вы не продали его ценность. И он им не нужен. А деньги всегда есть. В этот момент директор будет оплачивать счет того, что он считает нужным для его бизнеса. Так и тут. Нужен инвестор для моей идеи. Значит это не проект для души, который я в удовольствие пилю и потом выложу для других (или не выложу). А это просто возможность заработать. Он предлагает деньги, т.к. они «пылятся» и «движуха» лучше, чем ничего, пусть и выстрелит каждое 10-е вложение. У меня же тоже включается жадность и я думаю, что вот мне повезло и надо срочно придумать, чем можно социум развести, чтобы и я в наваре остался и он. И станет наш продукт даром человечеству или мы просто «срубим» деньжат и разбежимся, мы про это подумаем в последнюю очередь. Но, если он станет всем очень нужным, то конечно в мемуарах я буду писать, что так и задумывалось, хотел после себя оставить что-то светлое и хорошее, чтобы людям стало легче в их бренном существовании.
P.S. Очень не понравился вопрос) Но может в этом и была задумка…
Все же _ используется тогда когда мы либо хотим вывести последний результат, либо не будем пользоваться одним из возвращаемых значений. Можно с куда большей пользой потратить время на собеседовании чем рассуждать про _+_.
С символом подчеркивания в начале имени не импортируется при общем импорте

Это верно, если в __all__ явно не указать подобное название, иначе подобное имя будет импортировано.


Пример:


__all__ = ['_abc']

_abc = 123
Это плохой вопрос для собеседования, потому что для ответа на него не нужна практика работы с питоном — достаточно наткнуться на подобную статью.
Хорошие практические вопросы — это предложения решить проблему, возникающую в реальной жизни — оптимизировать алгоритм, избавиться от использования сторонней либы, найти ошибку в коде и т.п.

В реальной жизни, PR, где в качестве имени переменной используется знак подчёркивания(кроме случаев, где он явно используется для «ненужных» значений при паттерн-матчинге) не должен быть одобрен. Никогда.
Автор забыл о еще одном применении подчеркиваний:
In [1]: class C:
   ...:     __x = 13
   ...:     

In [2]: C.__dict__
Out[2]: 
mappingproxy({'_C__x': 13,
              '__dict__': <attribute '__dict__' of 'C' objects>,
              '__doc__': None,
              '__module__': '__main__',
              '__weakref__': <attribute '__weakref__' of 'C' objects>})

Обратите внимание на атрибут "'_C__x': 13"
Ещё там упущенно про:
>>> a = 1_000_000
>>> print(a)
1000000

Python — позволяет исспользовать как разделители в больших числах — подчёркивания.
И про
with open('file') as _:
    pass

использование подчёркивания как «мусорного» указателя, который потом не исспользуется.
Sign up to leave a comment.

Articles