Comments 13
Что за поехавшая логика?
Капитан Очевидность мчится в этот тред сообщить, что частота возниковения ошибок зависит только и исключительно от того, что и когда будет помещено в переменную _
.
При чём тут вообще встроенные классы? Любой может создать свой собственный класс со своими __and__
и __or__
и поместить его экземпляр в переменную _
. Если я напишу код, который помещает в _
такой экземпляр, то выражения _+_
и _|_
не дадут ошибку вообще никогда: https://repl.it/repls/RemorsefulChartreuseCarat
Если бы мне дали такую задачу с таким ответом на собеседовании, мне бы, видимо, пришлось сказать потенциальному работодателю «Вы мне не подходите».
Дополнительно можно попытаться порассуждать про частоту использования базовых классов в реальных проектах, про небазовые классы и реализацию указанных выше методов для них.
Дополнительно можно попытаться порассуждать про частоту использования переменной _
в реальных проектах, раз уж начали с неё.
Потому что из
Задача сводится к рассмотрению случаев появления ошибокв конкретной предметной области программирования (на python) ну вообще никак не выходит
Т.е. к поиску встроенных типов.
Хорошая задача — конкретная задача. Но с хорошим человеком пообщаться можно на любую тему. Маловероятно, конечно, что такую задачу придумал хороший человек, но мало ли…
И действительно — можно продолжить рассуждения в ключе сворачивания числа потомков в таблице (но не доходя до базового класса — объект).
А про хороший/плохой — мне больно думать про это о себе, но я только сам ходил и хожу по собеседованиям и ни разу никого не собеседовал.
Представьте себе, что пришел странный инвестор и предлагает вам денег на какой-то ваш 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
использование подчёркивания как «мусорного» указателя, который потом не исспользуется.
Подчеркивание в Python