Супер🔥🔥🔥🔥🔥 Я сейчас набираюсь знаний в области DS, не хватало как раз вот таких основ именно самого языка. На курсах по ml и dl обычно много времени уделяется математической составляющей и работе с фреймворками, но вот про сам язык обычно говорят мало. Знания о языке я собирал по крупицам и давно хотелось структурированно по всему пройтись. В общем ещё раз спасибо 👍
Владисоав Гришин. Вы абсолютно правы!!! Спасибо за короткий ,полезный и очень конкретный совет. Легче всего быть собой и не врать. Спасибо большое Вам!!!
Знать ООП, слабую и строгую типизацию, инкапсуляцию это дело мидлов? XD Мне 15. Я сам пишу на С++. Параллельно учу ассемблер, а также в планах освоить OpenGL на GLAD и WinApi. Можешь мне объяснить, почему для вас, надеющихся устроиться на зарплату 300 тыс. такие вещи кажутся сложными? Также считается нормой не знать собственный язык. Разве вы не должны всё это на зубок знать?
@@rumya2841 Сейчас твой мозг как губка впитывает все что нужно и не нужно. С возрастом эта способность теряется и человек запоминает только то, что использует, а что не использует быстро забывает. Парадигмы в программировании меняются, создаются новые и отмирают старые. Через 10 лет профессиональной деятельности, мозг очень быстро адаптируется к реалиям, зачем на зубок что либо знать, если в нужный момент можно прочитать документацию и решить задачу. Вообще само словосочетание "учить python" или любой другой язык программирования довольно странное. Нужно читать доки, смотреть видео и разбираться как это работает на практике, решая какие либо прикладные задачи. И этот современный процесс собеседования похожий на экзамен тоже какая-то дичь. Оно понятно, большие деньги притянули магнитом кого-попало и нужна фильтрация. А вот 20-30 лет назад в программисты шли люди по призванию, работа не была престижной и все эти экзамены были просто не нужны.
Спасибо за это классное видео! Сам мидл и почти на всё знаю ответ, но было полезно послушать как красиво/структурированно отвечать на вопросы, на которые уже столько раз давал ответ)
@@positive6329 от компании к компании разнится требовательность к работнику, к примеру, в Тинькоф будь то мид или джун по знаниям требования намного выше, чем в ноу нэйм или мало известных компаниях, про мировые топы вообще страшно представлять..
Большое спасибо! Очень хорошо структурированная информация в роликах. Сижу мучаюсь с ответом на вопрос "Расскажите о себе". Не знаю говорить ли об опыте работы до программирования. Я switcher, и хотя у меня уже больше года коммерческого опыта, почти нет опыта собеседований, так как дважды легко попадал на низкооплачиваемую работу как бы "по знакомству" через техзадание. А теперь нужна ЗП получше- пришла пора мучений.
про GIL еще неплохо бы знать\спрашивать - в каких случаях GIL работает а в каких нет? например если питонячий код вызывает системную либу которая не изменяет питонячую область памяти, то GIL для такого процесса "выключается", а также есть либы типа NumPy которые умеют "выключать" его для ускорения вычислений
Тернарный оператор - это скорее короткая запись подстановки значения в зависимости от условия. А не тот извращённый смысл который используется в питоне. Смысл не в записи в одну строчку. А именно как подстановка в формулы. Ну например на языке lua это выглядело бы так: x = isLikeble and 1 or 0 * 10 - isNalogable and 1 or 0 * 5 print(x)
В Python есть принцип, что читаемость имеет значение. Если тернарный хорошо читается, то его можно всунуть, но иногда я предпочитаю написать обычный if в угоду читаемости кода
@@rineisky вот в python как раз тернарный оператор ужасен. Я без понятия кто придумал его именно так использовать. Как обычное условие. Я писал на C# и lua. И там и там короткий и понятный тернарный оператор который можно даже в математические формулы спокойно использовать. Но в python он ужасно читаем
Насчет mock'ов. По идее, тестируемый метод - это метод, не вызывающий сторонних методов напрямую. То есть если он что-то снаружи дергает, то только через абстрактные методы (в "джавке" - интерфейсы), тогда у нас будет возможность тестировать только логику этого метода, не трогая ничего больше. Ну, он может дергать другие методы класса, например, но к ним такое же требование. И при юнит-тестировании мы ДОЛЖНЫ mock'ать все эти абстракции, иначе о детерменированности можете забыть, а это основной критерий тестируемого метода вообще-то.
Отсюда же вытекает и то, что непосредственно в коде создавать новые объекты - не круто. Как минимум потому, что на них заглушки не навесить так просто.
Отличное видео. Автору искреннее спасибо за труды. Касательно Linux, нынче в Win 10/11 уже виртуалка с Lin даже лишнее, на мой взгляд (если нужно изучение терминальных команд). Так как, практически из коробки, уже есть WSL.
Ну вообще, в основном выделяют три вида полиморфизма: полиморфизм подтипов, параметрический полиморфизм и ad-hoc полиморфизм. Также у этих трех основных видов полиморфизма выделяют ещё подвиды и их очень много. Знать подвиды основных видов полиморфизма уже точно не стоит рядовому программисту. В любом случае спасибо автору за видео. Очень классное. По нему готовлюсь к собеседованию (уже взяли, но продолжаю) -- разбираю вопросы, читаю дополнительно теорию и выписываю всё себе в заметочник.
Про MRO тоже не совсем верно. Python знал три различных алгоритма MRO: classic, Python 2.2 new-style и Python 2.3 new-style (он же C3). В основе classic MRO (для версии python 2.1 и ниже) использовался алгоритм DFS (поиск в глубину). Для Python 2.2 new-style (имеется ввиду классы нового стиля, которые наследовались от object, например: class A(object):; в python версии 3.0 и выше это наследование происходит не явным образом, то есть class A:) использовался алгоритм BFS (поиск в ширину). Начиная с версии python 2.3 и выше используется алгоритм C3-linearization (C3-линеаризация). Этот алгоритм по прежнему используется в Python 3.0 и выше.
В Python аргументы в функцию передаются ВСЕГДА по ссылке. Строки, кортежи и т. д. нельзя изменить внутри вызываемой функции потому что они как раз НЕИЗМЕНЯЕМЫЕ, а не потому что какой-то механизм есть отдельный для передачи по значению или ссылке.
@@rineisky в контексте типов вроде кортежей, строк и т.д. не имеет значения какая ссылка передается, потому что в них уже нельзя ничего присвоить или изменить , поэтому как раз они передаются по обычной ссылке. Можете посмотреть id объектов, они не изменяются до передачи в функцию и внутри функции.
@@rineisky много где говорят про неизменяемость типов именно на примере передачи их в функцию, это много кого вводит в заблуждение, будто в питоне как в Java есть список неких особых типов, передающихся по значению, но это не так.
@@rineisky Здравствуйте! Меня заинтересовал ваш диалог. Я не знаю, как правильно задать вопрос, поскольку я начинающий. Не могли бы Вы както попроще для меня объяснить, как будет работать такой код. def some_function(some_arg=1): print(id(some_arg)) some_arg = some_arg + 1 print(id(some_arg)) return some_arg print(some_function()) # 121 122 2 print(some_function()) # 121 122 2 print(some_function()) # 121 122 2 Я предполагаю, что some_arg это ссылка на объект id которого 121 и значения 1. Мы создаем этот объект в момент определения функции (не вызова)? А что дальше? Переприсваиваем some_arg значение some_arg + 1 и это будет совсем другой объект (id=122) ссылку на который мы возвращаем вызвав нашу функцию?
@@rineisky Тоесть some_arg теперь является ссылкой на объект 122. Я знаю, что код работает следующим образом: Если ссылка на объект удалена, то сборщик мусора просто удаляет объект, потому что считает его ненужным. Поскольку мы переприсвоили some_arg (id=122), то ссылка на id=121 удалена? Тоесть объект 121 больше не существует? Я знаю, что мое представление может быть совершенно абсурдным, но буду очень благодарен за любые объяснения. Спасибо!
Насколько я понимаю оператор in работает с итератором, поэтому сложность и для списка и для множества будет всегда одинаковая O(n). Так как под капотом делается вот так: 2 in iter([1,2,3]) 2 in iter({1,2,3})
Так-с, я пока только учусь и ещё не работал с ORM, Django и поэтому ответил на всё до вопроса про ORM, ну и на несколько после него. Месяца 2 ещё поработаю с SQL, ORM и Django, сделаю несколько проектов и буду искать работу )
@@harlok13 Привет, освоил SQL, ORM, Django. Сделал проект - сайт на Django. Еще пару недель на DRF, сделаю ещё один проект, разберусь в асинхронности и многопоточности, ну и буду выходить на рынок) А, ну и ещё английский апнул с низкого А2 до среднего B1)
@@rostikniks отличные результаты) желаю успехов на рынке, да и в изучении😁есть желание в телеге пообщаться? можно было бы делиться успехами хехе я как раз на том же пути @harlok
Вы можете сделать такое же видео только конкретно по web-python? разобрать вопросы по http, frameworks, backend, архитектуру, как-нибудь супер основательно?
Про аннотацию не совсем так. Если есть два класса описанных в двух разных файлах и подключенных через import друг к другу. То такой код может стартовать. Если же добавить в аргумент одного из методов первого класса аннотацию, что он принимает класс второго. А у второго в конструкторе, что он принимает класс первого. То будет ошибка что возникла цикличная зависимость. Хотя без аннотаций всё работает. Но почему pycharm до запуска программы не даёт предупреждений??? Всё ведь нормально работает если аннотации убрать и ошибок нет
Привет спасибо за видео было очень интересно!! Просто хотел спросить а на каком уровне джун к примеру должен уметь решать задачи к примеру codewars или leetcode ?
Спасибо за отличное видео! Как насчёт того, чтобы провести фиктивное собеседование на позицию python junior developer? Ну и конечно выложить это все на твой Ютуб канал. Если что готов быть интервьюируемым)
С каких пор ООП, инкапсуляция, сильная и слабая типизация это для мидлов? Лично мне 15. Сам пишу на C++, учу ассемблер, в планах выучить WinApi и OpenGL через GLAD. Только с каких пор не знать свой собственный и основной, к тому же и самый простой, такой как Python, который не требует никаких технических знаний, для вас стало являться нормой? Но при этом вы не перестаёте надеяться на зарплату + 300 тыс. с таким низким уровнем знаний. Сейчас в России страдает колхоз и сельское хозяйство. Думаю, что лишние рабочие обществу будут явно полезнее, чем ещё одни недопрограммисты, которые даже язык толком доучить не могут
Спасибо за работу, но 'is' логака читается как написано a is b, тоесть является ли а б, это не вопрос сравнения содержимого. Тоесть вы сами не понимаете что is не сравнивает объекты, а сравнивает их ID
16:00 а почему это не работает с цифрами? В примере ниже выполнятся оба блока. Неужели пайтон при обнаружении значения, которое уже есть в памяти просто наводит туда новый указатель? Если да то почему с массивами так же не работает? Если учитывать что массивы изменяемы и потенциально могут измениться, то почему просто не внедрить CoW, оставив фичу экономии памяти? num1 = 3 num2 = 3 if num1 == num2: print('equal') if num1 is num2: print('equal')
Спустя время пишу ответ: хэшируемость элементов. В питоне неизменяемые типы данных хэшируются. Если мы пробуем присвоить значение чему-либо когда хэш от этого значения УЖЕ находится в памяти - питон просто туда сошлется. В свою очередь массивы это изменяемый тип данных, соответственно нехэшируемый. Что касается CoWa - постоянно пересчитывать хэш от изменяемого типа данных слишком дорого, отсюда от этого и отказались.
Если честно, то что-то многовато на джуна вопросов))). Может я ошибаюсь конечно, но тогда на джуна надо пару лет учиться, чтобы все это знать и руками пощупать...Особенно паттерны и все, что дальше идет.
А если придет человек на собез который смотрел это видео ? И о чем тогда разговаривать ) Хорошая шпаргалка. Буду готовиться к собезу, пересмотрю еще разок.
Спасибо за работу Но методы в классах принимают селф не для того о чтобы вы понимали, а потому что язык так устроен. В руби например нет необходимости передавать селф. Униакльный объект какого-то класса называют экземпляр. И соотвестнвенно такие методы куда передают селф не могут быть класс методами например. А вы точно проводите интервью? Я вот пайтон знаю меньше двух месяцев, задумайтесь
а можете подсказать, я года два назад находил лекции по питону в большой аудитории, а сейчас не могу найти их, как будто удалили, там вроде был лектор седой, худой мужик. может кто-нибудь подсказать имя лектора?
докер - это базовая тема, так что стоит ожидать любых вопросов по нему. Чтобы его понять, не потребуется много времени, за одни выходные с нуля до профи легко осилить
добрый день. Возникают ли на собеседовании вопросы по структурам данных? Будут ли спрашивать как в пайтон работает словарь и тому подобные вопросы. Например, придется ли объяснять, что в реализации словаря в яп питон участвует структура данных хэш-таблица, где она а применяет функцию хеширования, чтобы из ключа сделать число, потом создает вложенный массив и т.д. и т.п.. Просто учу python по roadmap на back-end и говорится что нужно знать структуры данных. Начал изучать, как все это работает, и подумал что если это будет на собесе, то сомневаюсь что не запутаюсь и отвечу правильно. Про массивы, стеки, очереди и кучи более менее понятно и простыми словами можно объяснить. Поэтому насколько это мастхэв знать все эти моменты?
Добрый день! Да, возникают. И постоянно, сам спрашиваю про структуры данных на собеседовании (в основном хеш-таблицы). Хеш-таблицы нужно разобрать в первую очередь (таблица, хеш-функция, признаки хорошей хеш-функции, коллизии, методы разрешения коллизий, какой из них используется в пайтон), так как они используется под капотом у dict и set (от этого, соответственно, и идет ответ на вопрос, почему на многие операции сложность O(1)). Ну а остальные структуры будет полезно для общего развития.
Странное высказывание изменяемые по значению а не изменяемые по ссылке, если бы передача была по значению, то значение копировалось бы как к примеру голанг, и тогда внутри функции нельзя было бы изменить внешнюю переменную
Хорошая шпаргалка перед собесом что-бы системазировать и повторить базовый пайтон👍🙂
Это потрясающе, именно то, что мне больше всего было нужно. Огромное спасибо!
как твои успехи)?
Ну как, устроился уже?
Согласен
@@mlr__roal_6867Всё ещё от потрясения отходит😂
Спасибо большое за практически исчерпывающее объяснение базовых вопросов по Питону.
Супер🔥🔥🔥🔥🔥
Я сейчас набираюсь знаний в области DS, не хватало как раз вот таких основ именно самого языка.
На курсах по ml и dl обычно много времени уделяется математической составляющей и работе с фреймворками, но вот про сам язык обычно говорят мало. Знания о языке я собирал по крупицам и давно хотелось структурированно по всему пройтись. В общем ещё раз спасибо 👍
и что получилось найти роботу?)
@ привет, в сбере уже год data scientist, всё хорошо, надеюсь в скором времени апнусь до мидла
Вроде все и так знал, но часть уже забыл
Надеюсь поможет в сегодняшнем собесом🙏
ну как, помогло? встречались похожие вопросы?
@@irinaseroshtanova4972 больше его никто не видел)))
Ахаха
чтобы бороться со стрессом на собесах, на них нужно ходить. и будьте собой.
Владисоав Гришин. Вы абсолютно правы!!! Спасибо за короткий ,полезный и очень конкретный совет. Легче всего быть собой и не врать. Спасибо большое Вам!!!
только первые 10 собесов стресс
@@AntiBandera хз, у меня стресс пропадает после 1-2
@@alazarn7 пропадает? не в прошедшем времени?)
@@ЯрославДанилець-ь4с если не ходить несколько месяцев, то навык теряется. Это не велосипед
Я думаю, что эти вопросы более нацелены на мидлов.
У меня многие вопросы из данного списка спрашивали именно на данную позицию.
Отличный ролик!
У меня на галере эти вопросы едва ли на джун+ спрашивают…
@@darkvibes2870 у меня их на 1с спрашивают )
Знать ООП, слабую и строгую типизацию, инкапсуляцию это дело мидлов? XD Мне 15. Я сам пишу на С++. Параллельно учу ассемблер, а также в планах освоить OpenGL на GLAD и WinApi. Можешь мне объяснить, почему для вас, надеющихся устроиться на зарплату 300 тыс. такие вещи кажутся сложными? Также считается нормой не знать собственный язык. Разве вы не должны всё это на зубок знать?
@@rumya2841 Ты молодец
@@rumya2841 Сейчас твой мозг как губка впитывает все что нужно и не нужно. С возрастом эта способность теряется и человек запоминает только то, что использует, а что не использует быстро забывает. Парадигмы в программировании меняются, создаются новые и отмирают старые. Через 10 лет профессиональной деятельности, мозг очень быстро адаптируется к реалиям, зачем на зубок что либо знать, если в нужный момент можно прочитать документацию и решить задачу.
Вообще само словосочетание "учить python" или любой другой язык программирования довольно странное.
Нужно читать доки, смотреть видео и разбираться как это работает на практике, решая какие либо прикладные задачи.
И этот современный процесс собеседования похожий на экзамен тоже какая-то дичь. Оно понятно, большие деньги притянули магнитом кого-попало и нужна фильтрация. А вот 20-30 лет назад в программисты шли люди по призванию, работа не была престижной и все эти экзамены были просто не нужны.
Это поистине полезный видеоматериал. Его спокойно можно использовать в качестве лекций при обучении программистов в технических университетах.
Месяц назад числанулся, пните, когда такой хороший материал до вышек дойдёт, поступлю ещё раз, проверю
@@w04m1 это ты зря
@@w04m1 всм?
@@eugenegallas2340 ты учился в высшем учебном заведении на специальности, которая позиционирует себя как "будете программистом или типа того"?
@@w04m1 Не, я ток 9 класс окончиваю
Спасибо за это классное видео! Сам мидл и почти на всё знаю ответ, но было полезно послушать как красиво/структурированно отвечать на вопросы, на которые уже столько раз давал ответ)
Какой ты мидл, если знаешь ответы 'почти на все' вопросы к junior-ам?
@@positive6329никто не идеален просто
@@positive6329 от компании к компании разнится требовательность к работнику, к примеру, в Тинькоф будь то мид или джун по знаниям требования намного выше, чем в ноу нэйм или мало известных компаниях, про мировые топы вообще страшно представлять..
видос отличный - чтобы освежить знания - самое то.
51:20 - неверное определение замыкания, а так прям очень класно
Наверно лучшее видео по собеседованию на junior. Сам устраивался месяца 3 назад, если бы его посмотрел до собеса, было бы спокойнее.
если не секрет что спрашивали?
@@ИванБетц вопросы из видео, пару простых запросов на sql, и много про асинхронность/многопроцессность/многопоточность.
@@КириллПопов-о3с спасибо
А где учился?
Кирилл, здравствуйте.
А можно как-то с вами связаться? Телеграмм, ватсап?
Хотел задать вопросы про работу, про получение опыта
Это самый лучший видос по собесам. 100500 лайков.
Какая самая сложная задача, отвечаю: переучиться на программиста, в течении года. Вот вам в помощь.
А точно для джунов эти вопросы, просто огомный объем информации и вопросов....
Нет. просто рынок в рф переполнен джунами и соответственно требования к джунами увеличили до уровня мидлов.
Оу, спасибо за инфу, получается, что "хер вкатишься" в отрасль((@@elkins87
Очень полезная и качественная информация. Благодарю!
Спасибо за видео! Очень полезно освежить знания перед собеседованиями.
Большое спасибо! Очень хорошо структурированная информация в роликах.
Сижу мучаюсь с ответом на вопрос "Расскажите о себе". Не знаю говорить ли об опыте работы до программирования.
Я switcher, и хотя у меня уже больше года коммерческого опыта, почти нет опыта собеседований, так как дважды легко попадал на низкооплачиваемую работу как бы "по знакомству" через техзадание. А теперь нужна ЗП получше- пришла пора мучений.
Чо как успехи? У меня ровно такая же ситуация с > 1 годом коммерческого как у тебя на момент написания коммента. Уже уверенный мидл, наверное?)
Спасибо, классный обзор. Понятно куда двигаться
про GIL еще неплохо бы знать\спрашивать - в каких случаях GIL работает а в каких нет? например если питонячий код вызывает системную либу которая не изменяет питонячую область памяти, то GIL для такого процесса "выключается", а также есть либы типа NumPy которые умеют "выключать" его для ускорения вычислений
@@rineisky Можно ссылку на этот файл с вопросами?
Зачем это джуну?
Чтобы знать, что такое существует. Нужно разбираться в инструменте с которым работаешь@@awdawdawdbfw
@@mihailbury240 ага. Таким же аргументом можно обосновывать требования знаний ассемблера
Спасибо, отличное видео. Понял, что много чего еще надо подтягивать))
Есть инкапсуляция, а есть сокрытие. Инкапсуляция очень даже однозначна.
Спасибо. Видос просто отличнейший. Обновил знания и добавил немало новых )
Фантастический разбор
Тернарный оператор - это скорее короткая запись подстановки значения в зависимости от условия.
А не тот извращённый смысл который используется в питоне. Смысл не в записи в одну строчку. А именно как подстановка в формулы.
Ну например на языке lua это выглядело бы так:
x = isLikeble and 1 or 0 * 10 - isNalogable and 1 or 0 * 5
print(x)
В Python есть принцип, что читаемость имеет значение. Если тернарный хорошо читается, то его можно всунуть, но иногда я предпочитаю написать обычный if в угоду читаемости кода
@@rineisky вот в python как раз тернарный оператор ужасен. Я без понятия кто придумал его именно так использовать. Как обычное условие.
Я писал на C# и lua. И там и там короткий и понятный тернарный оператор который можно даже в математические формулы спокойно использовать. Но в python он ужасно читаем
Это прямо в закладки! Спасибо!
Насчет mock'ов. По идее, тестируемый метод - это метод, не вызывающий сторонних методов напрямую. То есть если он что-то снаружи дергает, то только через абстрактные методы (в "джавке" - интерфейсы), тогда у нас будет возможность тестировать только логику этого метода, не трогая ничего больше. Ну, он может дергать другие методы класса, например, но к ним такое же требование. И при юнит-тестировании мы ДОЛЖНЫ mock'ать все эти абстракции, иначе о детерменированности можете забыть, а это основной критерий тестируемого метода вообще-то.
Отсюда же вытекает и то, что непосредственно в коде создавать новые объекты - не круто. Как минимум потому, что на них заглушки не навесить так просто.
Чітко і структуровано. Респект автору.
Хорошее видео. Спасибо! От себя изучающим питон порекомендую книгу Effective Python.
Чтобы запомнить фамилию Берна, надо соединить СТРАУС и ТРУП == СТРАУСТРУП
Спасибо, отличный разбор
@@rineisky скинь плиз тг канал. Хочу ворд достать
лайк за подробнейший разбор!!! и не просто лайк, а лайк от СЕООНЛИ - гуру в вебмастеринге
Почти все вопросы были понятны. Спасибо за информацию, кое-что для себя узнал нового
один з найкраших оглядів співбесід, який коли не будь бачила
Классное видео, спасибо автору.
Хотелось бы word документ прикреплённый к видео.
И это точно на джуна, а то как то жирно?)
@@rineisky Добрый день! Не могу найти ваш телеграм канал ( дайте пожалуйста линк. Спасибо.
Отличное видео. Автору искреннее спасибо за труды. Касательно Linux, нынче в Win 10/11 уже виртуалка с Lin даже лишнее, на мой взгляд (если нужно изучение терминальных команд). Так как, практически из коробки, уже есть WSL.
Но а вдруг человек который принимает собеседование старомоден? Всякое бывает.
@@призРАК-л2ы старомоден и сидит на winXP )
Шикарный видос, кому надо будет проходить собес как раз самое то
Спасибо большое, очень интересный и важный видос)
Хорошо все объяснил, респект.
Спасибо, очень плотно и по делу.
Ну вообще, в основном выделяют три вида полиморфизма: полиморфизм подтипов, параметрический полиморфизм и ad-hoc полиморфизм. Также у этих трех основных видов полиморфизма выделяют ещё подвиды и их очень много. Знать подвиды основных видов полиморфизма уже точно не стоит рядовому программисту. В любом случае спасибо автору за видео. Очень классное. По нему готовлюсь к собеседованию (уже взяли, но продолжаю) -- разбираю вопросы, читаю дополнительно теорию и выписываю всё себе в заметочник.
Про MRO тоже не совсем верно.
Python знал три различных алгоритма MRO: classic, Python 2.2 new-style и Python 2.3 new-style (он же C3).
В основе classic MRO (для версии python 2.1 и ниже) использовался алгоритм DFS (поиск в глубину).
Для Python 2.2 new-style (имеется ввиду классы нового стиля, которые наследовались от object, например: class A(object):; в python версии 3.0 и выше это наследование происходит не явным образом, то есть class A:) использовался алгоритм BFS (поиск в ширину).
Начиная с версии python 2.3 и выше используется алгоритм C3-linearization (C3-линеаризация). Этот алгоритм по прежнему используется в Python 3.0 и выше.
В Python аргументы в функцию передаются ВСЕГДА по ссылке. Строки, кортежи и т. д. нельзя изменить внутри вызываемой функции потому что они как раз НЕИЗМЕНЯЕМЫЕ, а не потому что какой-то механизм есть отдельный для передачи по значению или ссылке.
@@rineisky в контексте типов вроде кортежей, строк и т.д. не имеет значения какая ссылка передается, потому что в них уже нельзя ничего присвоить или изменить , поэтому как раз они передаются по обычной ссылке. Можете посмотреть id объектов, они не изменяются до передачи в функцию и внутри функции.
@@rineisky много где говорят про неизменяемость типов именно на примере передачи их в функцию, это много кого вводит в заблуждение, будто в питоне как в Java есть список неких особых типов, передающихся по значению, но это не так.
@@rineisky Здравствуйте! Меня заинтересовал ваш диалог. Я не знаю, как правильно задать вопрос, поскольку я начинающий. Не могли бы Вы както попроще для меня объяснить, как будет работать такой код.
def some_function(some_arg=1):
print(id(some_arg))
some_arg = some_arg + 1
print(id(some_arg))
return some_arg
print(some_function()) # 121
122
2
print(some_function()) # 121
122
2
print(some_function()) # 121
122
2
Я предполагаю, что some_arg это ссылка на объект id которого 121 и значения 1. Мы создаем этот объект в момент определения функции (не вызова)? А что дальше? Переприсваиваем some_arg значение some_arg + 1 и это будет совсем другой объект (id=122) ссылку на который мы возвращаем вызвав нашу функцию?
@@rineisky Тоесть some_arg теперь является ссылкой на объект 122. Я знаю, что код работает следующим образом: Если ссылка на объект удалена, то сборщик мусора просто удаляет объект, потому что считает его ненужным. Поскольку мы переприсвоили some_arg (id=122), то ссылка на id=121 удалена? Тоесть объект 121 больше не существует? Я знаю, что мое представление может быть совершенно абсурдным, но буду очень благодарен за любые объяснения. Спасибо!
@@markervictor Здравствуйте Виктор! Не могли бы вы взглянуть на мой код тоже. Буду благодарен за объяснение.
Очень полезный подбор. Спасибо.
Офигенный видос, спасибо!
Башка к концу видео лопнула. Завтра пересмотрю
Огромное Вам спасибо! 🙏
Спасибо, полезно!
Здравствуйте. Можно ссылку на Ваш вордовский документ который открыт в видео?
Спасибо большое.
Насколько я понимаю оператор in работает с итератором, поэтому сложность и для списка и для множества будет всегда одинаковая O(n). Так как под капотом делается вот так:
2 in iter([1,2,3])
2 in iter({1,2,3})
Нет. Посмотри про хештаблицы
Сколько бы ни было элементов в словаре, хеш любого из них посчитается с одной скоростью
Хорошая и понятная подача. Я так понимаю это выкладка с какого-то курса. Я бы даже записался годик назад, но сейчас если только на определенные блоки)
Спасибо, очень полезное видео
Резко позвали на повторное собес завтра вот готовлюсь :)
Как прошло?
Отличное видео, спасибо
Спасибо за Видео!. Правда я думал у меня матрица полетела на компе). Справа сверху на видосе пятня какие-то. Видос Тема!!!!
спасибо Вам за видео
Так-с, я пока только учусь и ещё не работал с ORM, Django и поэтому ответил на всё до вопроса про ORM, ну и на несколько после него. Месяца 2 ещё поработаю с SQL, ORM и Django, сделаю несколько проектов и буду искать работу )
привет, как успехи?)
@@harlok13 Привет, освоил SQL, ORM, Django. Сделал проект - сайт на Django. Еще пару недель на DRF, сделаю ещё один проект, разберусь в асинхронности и многопоточности, ну и буду выходить на рынок)
А, ну и ещё английский апнул с низкого А2 до среднего B1)
@@rostikniks отличные результаты) желаю успехов на рынке, да и в изучении😁есть желание в телеге пообщаться? можно было бы делиться успехами хехе
я как раз на том же пути
@harlok
Ну что, как сейчас?@@rostikniks
Огонь! Спасибо!!
А байты и мемори вью не типы данных больше?
Вы можете сделать такое же видео только конкретно по web-python? разобрать вопросы по http, frameworks, backend, архитектуру, как-нибудь супер основательно?
*КОНЕЧНО, А ПОТОМ РАБОТАТЬ ЗА ТЕБЯ ПОЙДЕТ!*
@@sobaka600 вообще супер будет
Про аннотацию не совсем так. Если есть два класса описанных в двух разных файлах и подключенных через import друг к другу. То такой код может стартовать.
Если же добавить в аргумент одного из методов первого класса аннотацию, что он принимает класс второго. А у второго в конструкторе, что он принимает класс первого. То будет ошибка что возникла цикличная зависимость. Хотя без аннотаций всё работает. Но почему pycharm до запуска программы не даёт предупреждений???
Всё ведь нормально работает если аннотации убрать и ошибок нет
тапл = tuple = !тьюпл!
фикс тур = fixture = !фиксча!
(см транскрипцию в словаре)
Привет спасибо за видео было очень интересно!! Просто хотел спросить а на каком уровне джун к примеру должен уметь решать задачи к примеру codewars или leetcode ?
МОЩНЫЙ ВИДОС
Спасибо за отличное видео! Как насчёт того, чтобы провести фиктивное собеседование на позицию python junior developer? Ну и конечно выложить это все на твой Ютуб канал. Если что готов быть интервьюируемым)
ПРошу прощения, что честно заимствовал идею и сделал такое видео.
@@AndyPronin нет тебе прощения Пронин !
У Лутца и в официальной доке (в словарике) иммутабельные типы: числа, строки и кортежи. Кому верить?)
Спасибо за обзор, он шикарный. НО откуда джуну всё это знать? чтоб это всё знать это прям работать надо...
Какие именно пункты? Эти вопросы скорее даже не на джуна, а на стажировку
@@kirillyudin3766 у нас уборщица знает ответы на них, просто слушая разговоры в кабинете.
С каких пор ООП, инкапсуляция, сильная и слабая типизация это для мидлов? Лично мне 15. Сам пишу на C++, учу ассемблер, в планах выучить WinApi и OpenGL через GLAD. Только с каких пор не знать свой собственный и основной, к тому же и самый простой, такой как Python, который не требует никаких технических знаний, для вас стало являться нормой? Но при этом вы не перестаёте надеяться на зарплату + 300 тыс. с таким низким уровнем знаний. Сейчас в России страдает колхоз и сельское хозяйство. Думаю, что лишние рабочие обществу будут явно полезнее, чем ещё одни недопрограммисты, которые даже язык толком доучить не могут
@@rumya2841 я все это уже знал в детском саду, воспиталку на информатике поправлял.
@@kuznet1941мне кажется, что два года назад, когда с Паскаля начинал в 7 классе, и то больше знал, чем те недопрограммисты XD
Спасибо за работу,
но 'is' логака читается как написано
a is b, тоесть является ли а б, это не вопрос сравнения содержимого. Тоесть вы сами не понимаете что is не сравнивает объекты, а сравнивает их ID
16:00 а почему это не работает с цифрами?
В примере ниже выполнятся оба блока. Неужели пайтон при обнаружении значения, которое уже есть в памяти просто наводит туда новый указатель? Если да то почему с массивами так же не работает? Если учитывать что массивы изменяемы и потенциально могут измениться, то почему просто не внедрить CoW, оставив фичу экономии памяти?
num1 = 3
num2 = 3
if num1 == num2:
print('equal')
if num1 is num2:
print('equal')
Спустя время пишу ответ: хэшируемость элементов. В питоне неизменяемые типы данных хэшируются.
Если мы пробуем присвоить значение чему-либо когда хэш от этого значения УЖЕ находится в памяти - питон просто туда сошлется. В свою очередь массивы это изменяемый тип данных, соответственно нехэшируемый. Что касается CoWa - постоянно пересчитывать хэш от изменяемого типа данных слишком дорого, отсюда от этого и отказались.
Сейчас к джуну требования даже выше, чем к мидлу
Если честно, то что-то многовато на джуна вопросов))). Может я ошибаюсь конечно, но тогда на джуна надо пару лет учиться, чтобы все это знать и руками пощупать...Особенно паттерны и все, что дальше идет.
8 месяцев учился, почти все было, но в большинстве случаев перед вопросом говорили знаешь отвечай, не знаешь ну и ладно
Это общие вопросы на Python думаю, к концу больше уже темы для middle разработчиков.
спасибо!
А если придет человек на собез который смотрел это видео ? И о чем тогда разговаривать )
Хорошая шпаргалка. Буду готовиться к собезу, пересмотрю еще разок.
ну тут шаг вправо влево и будет видно, реально чел знает или заучил
Ну так выучите это, поймите и получите офффер. Это как назвать шпаргалку учебник по математике, потому что в нем все написано.
про декораторы супер объяснение, но ничего не понятно )
Отличное видео, это запись с вебинарам какого-то?
Все аргументы передаются по ссылкам! Проверяется функцией id
хорошее видео, не могли бы вы прислать текстовку вордовского файла или сам файл прикрепить?
где можно увидеть ссылку на Ваш гитхаб?
По вопросу аннотации типов. А singledispatch как же?
Заиметь бы такой файлик с вопросами...)
1:37:54 , 1:38:11
мне кажется вы интеграционные тесты называете функциональными
а тесты касаемые доступов называете интеграционными
Спасибо за работу
Но методы в классах принимают селф не для того о чтобы вы понимали, а потому что язык так устроен. В руби например нет необходимости передавать селф. Униакльный объект какого-то класса называют экземпляр. И соотвестнвенно такие методы куда передают селф не могут быть класс методами например. А вы точно проводите интервью? Я вот пайтон знаю меньше двух месяцев, задумайтесь
отличное видео, а как можно получить эту таблицу в документе?
Очень мало видео на канале, но каждый по ценности превосходит другие условно 50 видео в совокупности.
а можете подсказать, я года два назад находил лекции по питону в большой аудитории, а сейчас не могу найти их, как будто удалили, там вроде был лектор седой, худой мужик. может кто-нибудь подсказать имя лектора?
чел хорош!
MRO3 несколько неточно объяснён. там не просто поиск в ширину.
Готовтесь к порке
50-100 строк кода это адекватно?
Спасибо за видос, очень круто, ровно то что нужно, ни больше ни меньше!
Большое спасибо за столь подробное видео!
Кстати, вопрос: Часто ли джуна по Докеру сильно спрашивают, или нет?
докер - это базовая тема, так что стоит ожидать любых вопросов по нему. Чтобы его понять, не потребуется много времени, за одни выходные с нуля до профи легко осилить
Супер
50-100 строк кода на тестовой задаче на собеседовании? это в какой вселенной так? :)
не ужели кто то такое спрашивает, это же все самый начальный уровень....
может кто то объяснить инкапсуляцию? про сокрытие данных я и так знаю а вот про методы и свойства с общей идее не совсем понял
добрый день. Возникают ли на собеседовании вопросы по структурам данных? Будут ли спрашивать как в пайтон работает словарь и тому подобные вопросы. Например, придется ли объяснять, что в реализации словаря в яп питон участвует структура данных хэш-таблица, где она а применяет функцию хеширования, чтобы из ключа сделать число, потом создает вложенный массив и т.д. и т.п.. Просто учу python по roadmap на back-end и говорится что нужно знать структуры данных. Начал изучать, как все это работает, и подумал что если это будет на собесе, то сомневаюсь что не запутаюсь и отвечу правильно. Про массивы, стеки, очереди и кучи более менее понятно и простыми словами можно объяснить. Поэтому насколько это мастхэв знать все эти моменты?
Добрый день! Да, возникают. И постоянно, сам спрашиваю про структуры данных на собеседовании (в основном хеш-таблицы). Хеш-таблицы нужно разобрать в первую очередь (таблица, хеш-функция, признаки хорошей хеш-функции, коллизии, методы разрешения коллизий, какой из них используется в пайтон), так как они используется под капотом у dict и set (от этого, соответственно, и идет ответ на вопрос, почему на многие операции сложность O(1)). Ну а остальные структуры будет полезно для общего развития.
@@rineisky благодарю 👍
Странное высказывание изменяемые по значению а не изменяемые по ссылке, если бы передача была по значению, то значение копировалось бы как к примеру голанг, и тогда внутри функции нельзя было бы изменить внешнюю переменную
Спасибо за работу, но про лямбы совсем не понятно
Где можно сами вопросы найти?
Подскажите, немогу понять 22:14
Выполняются кем? Фронтами? Вардами?
линтерами
Честно говоря я в шоке, мне 16 и я увлекаюсь python так вот в общем и целом получилось ответить на большинство вопросов 1 половины ролика)