- Видео 24
- Просмотров 106 813
про АйТи | IT Pro
Добавлен 19 фев 2024
Привет. Выкладываю тут конспекты учебников из сферы АйТИ, которые мне понравились. Примеры чаще всего придумываю сам или дорабатываю.
Как устроен PYTHON
За основу данного видео взята книга Мэтта Харрисона: Как устроен Python. Информация в видео подойдет для новичков, которые хотят немного разобраться в том, как Python организован за кодом.
0:00 введение
0:53 объекты, их общие свойства: идентификатор, тип, размер, счетчик ссылок
4:35 неизменяемые объекты
6:43 баланс между затратами на поиск объекта и созданием объекта
9:00 изменяемые объекты
10:27 поверхностное и глубокое копирование
13:30 представление чисел с плавающей точкой
15:16 функции dir(), help() -в помощь разработчику
17:43 особое значение: None
19:17 параметры по умолчанию
22:56 взаимодействие Python и операционной системы при работе с файлами
24:45 файловый объект и его буфер
28:52 простр...
0:00 введение
0:53 объекты, их общие свойства: идентификатор, тип, размер, счетчик ссылок
4:35 неизменяемые объекты
6:43 баланс между затратами на поиск объекта и созданием объекта
9:00 изменяемые объекты
10:27 поверхностное и глубокое копирование
13:30 представление чисел с плавающей точкой
15:16 функции dir(), help() -в помощь разработчику
17:43 особое значение: None
19:17 параметры по умолчанию
22:56 взаимодействие Python и операционной системы при работе с файлами
24:45 файловый объект и его буфер
28:52 простр...
Просмотров: 26 585
Видео
Алгоритм k ближайших соседей.
Просмотров 2,3 тыс.2 месяца назад
Завершаем серию тем из книги Грокаем Алгоритмы. На этот раз разбираемся с алгоритмом k ближайших соседей и оказывается, согласно этому алгоритму Гена из истории про чебурашку - не крокодил.
Жадные алгоритмы
Просмотров 41 тыс.2 месяца назад
Знакомимся с жадными алгоритмами на примерах: составление расписания, покрытие множества, задача коммивояжера. Узнаем, о существовании задач P-класса, NP-класса, а так же NP-полных задач. За основу конспекта взята глава 8 Жадные алгоритмы. книги: Грокаем алгоритмы автор: Адитья Бхаргава. 0:00 жадные алгоритмы коротко 0:24 пример с расписанием 4:00 задача покрытия множества 8:57 задача коммивояжера
Поиск в ширину. Графы
Просмотров 2,5 тыс.4 месяца назад
Грокаем алгоритмы, глава 6. Поиск в ширину. В данной главе знакомимся с графами и разбираем алгоритм поиска в ширину.
Быстрая сортировка. Грокаем алгоритмы
Просмотров 4,6 тыс.5 месяцев назад
Грокаем алгоритмы. Глава 4: быстрая сортировка.
Рекурсия. Грокаем алгоритмы.
Просмотров 5 тыс.6 месяцев назад
книга Грокаем алгоритмы глава 3: Рекурсия. В этой главе знакомимся с рекурсией, так же рассмотрим как работает стек - простая структура данных.
Сортировка выбором. Массивы и списки.
Просмотров 3,4 тыс.6 месяцев назад
Грокаем алгоритмы глава 2. В этой части узнаем, как данные хранятся в памяти компьютера и чем отличаются массивы от связанных списков. Познакомимся с первым алгоритмом сортировки: сортировка выбором.
Знакомство с Алгоритмами. О-большое
Просмотров 6 тыс.6 месяцев назад
Грокаем Алгоритмы. Адитья Бхаргава. Знакомимся с бинарным поиском. Нотацией О-большое - время выполнения алгоритмов.
Наследование, полиморфизм в Python
Просмотров 3466 месяцев назад
Python для начинающих: глава 11. Наследование. Полиморфизм. 0:00 Наследование 1:15 Пример 5:51 Полиморфизм
Объектно-ориентированное программирование в Python.
Просмотров 5906 месяцев назад
Python для начинающих: глава 10 Объектно-ориентированное программирование. Первое знакомство с ООП. Что подразумевается под ООП. Определение класса и создание экземпляра этого класса. 0:00 Введение 1:11 ООП на примере холодильника 2:25 Приватные и публичные методы 3:41 Класс, объект, экземпляр класса 4:54 Инкапсуляция 5:38 Определение классов 7:23 Зачем нужен параметр self? 9:12 Создание экземп...
Множества в Python.
Просмотров 3848 месяцев назад
Python для начинающих: глава 9.2 Множества. Знакомимся с множествами. Учимся удалять, добавлять элементы множества, «замораживать» множества. Производим операции над множествами. 0:00 Понятие множества 0:44 Функция set() 1:21 Элементы множества 2:29 Удаление, добавление элементов множества 3:06 В чем отличие методов .add() и .update() 4:02 Удаление элементов множества 4:36 Операции над множеств...
Словари в Python.
Просмотров 2778 месяцев назад
Python для начинающих: глава 9.1 Словари. В данной части знакомимся со словарями. Разберемся с элементами словарей, поймем какие типы данных подходят для создания ключей, какой порядок у элементов словарей в зависимости от версий Python. Учимся создавать словари несколькими способами, разберем как правильно использовать функцию dict(). Вызовем несколько словарных методов. Научимся перебирать эл...
Строки в Python
Просмотров 2448 месяцев назад
Python для начинающих: глава 8 Строки. В данной части знакомимся со строками. Разберем несколько методов строковых объектов, научимся работать со срезами или подстроками. 0:00 Строковые данные 1:17 Срезы, подстроки 2:31 Зеркальная копия строки 3:18 Перебор символов строки 4:35 Строковые методы 5:14 Методы проверки 5:35 Методы модификаций 6:21 Методы поиска и замены 7:02 Метод split()
Циклы: while, for, функция range. Начинаем программировать на Python, глава 4
Просмотров 6829 месяцев назад
Циклы: while, for, функция range. Начинаем программировать на Python, глава 4
Структура принятия решения и булева логика. Тони Гэддис Глава 3:
Просмотров 57910 месяцев назад
Структура принятия решения и булева логика. Тони Гэддис Глава 3:
Тони Гэддис. Начинаем программировать на Python. Глава 2: Ввод, обработка и вывод.
Просмотров 1,2 тыс.10 месяцев назад
Тони Гэддис. Начинаем программировать на Python. Глава 2: Ввод, обработка и вывод.
Тони Гэддис. Глава 1. Введение в комьютеры и программирование
Просмотров 1,9 тыс.10 месяцев назад
Тони Гэддис. Глава 1. Введение в комьютеры и программирование
Большую часть информации из видео лично я узнал из начала 1-ого тома Лутца "Изучаем Python")
какое же там тогда золото во втором томе!:)
Лайк, подписка, ибо контент годный, не нужно книгу особо читать, ахвхав
:)))) спасибо. но книгу все же стоит почитать:))) в видео не всё получилось уместить
Очень крутой контент! Продолжай в том же духе!
спасибо)
Шикарное видео ,объем информации большой ,нужно несколько раз смотреть ,спасибо )
спасибо. ага, это видео решил не разбивать на части, было интересно, как его будут смотреть по сравнению с короткими видео.
@@ITPro-ei8cs похоже что смотрят довольно неплохо д
да, считая, что видео на очень ограниченный круг, думаю что неплохо зашло. Дилема была такая: разбивать видео на части или выкладывать целиком. В сумме маленькие видео могут дать больше охват, но это тоже не факт. А большое может вообще не стрельнуть. Это так чисто интерес разобраться самому, как работает ютуб.
@@ITPro-ei8cs Я помню раньше классно выстреливало если много людей отписалось и потом обратно подписалось , оно считало только новых подписчиков )
Все понятно кроме одного, почему переменая а не ссылка. В С переменная, так как изменяется значение, указатель не меняется.
хм. возможно что бы согласовать терминологию с другими языками.
Круто объясняешь, понятно. Подписался
спасибо. добро пожаловать на канал:)
Воу, весьма занятная информация. Пусть и на питоне и не так часто пишу, но, тем не менее, весьма полезно узнать, благодарю
😊👍
x = 555 y = 111 * 5 print(y) print(id(555), id(x), id(y)) print(x is y) # output: True Depends on implementation. One might think that 555 is outside the pre-cached range of integers, but apparently it is not. I even tried pretty large integers, like 5434534534534534, but it still shows identity. Probably the book is a bit dated.
Indeed, it depends on the implementation. The book is aimed at beginners and describes the behavior of CPython (python.org/download), which is the standard and most widely used implementation of Python. This particular aspect is not discussed in the book; the question came up during my reading, and I tried to answer it within the same implementation. Integer objects with values from -5 to 256 are in memory in a single instance.
Спасибо автору - отличное видео, мотивирующее изучение программирования!
спасибо! отлично! значит одна из целей создания канала достигается:)
👍
👍
В последнем примере мелкая ошибка в написании переменной-накопителя summe/summa.
🤦♂️ да, точно! 100%. Вам лайк за внимательность :)))
Ну это же идиотство. Зачем при простой арифметической операции без изменения типа создавать новый объект? Это сильно снижает производительность. Видимо, разработчики пайтона не дружат с головой. Не только синтаксис этого языка откровенно идиотский, но и программная реализация.
🤷♂️. Хорошо что есть другие языки, а у нас есть выбор :)
Это Ваше восприятие, не более того. Многие вещи снаружи кажутся элементарными или идиотскими, пока не углубишься. А Вы попробуйте. Свой интерпретатор своего языка сделать. Расскажете потом об открытиях.
@@SklerozRu , я что, больной? Чтобы сделать нормальный интерпретатор современного ЯП потребуется целый институт программистов. А писать аналоги разных пайтонов "на коленке" у меня нет никакого желания.
Хочу заметить, что программисты постарше советовали мне эту и подобные ей книги прямо на старте. Плохая идея, новичок в них только запутается. Лучше идти писать много кода, и учить несколько языков сразу, а года через 3-4 практики вернуться к азам. Каждому конечно свое, но в таком случае все встаёт на места и нет путаницы в голове.
ну мне кажется у задачи может быть несколько правильных решений, поэтоу да, каждому свое. новички ведь тоже все разные. На скольки языках уже пишете?
Видео отличное! Все четко и по делу, оформление понравилось.
спасибо:)
Тільки не адреса в памяті де храниться обєк, а віртуальна память ! Так як по цій адресі скоріш за все не буде цього обьєкта так як адресне пространство пайтон не завжди зходиться з фізичним на ОЗУ! Тобто Пайтон використовує віртуальні адреса і індифікатори адрес, самому розприділяючи в памяті не даючи прямого доступу до них так як структура обєктів не відповідає стандартним! Перефразую інакше для розуміння! - Python використовує віртуальну пам’ять, а не фізичну пам’ять напряму. Віртуальна адреса об’єкта в Python зазвичай доступна через його ідентифікатор, який є, по суті, адресою об’єкта у віртуальному адресному просторі інтерпретатора Python. Це дозволяє Python абстрагуватися від фізичної пам'яті, забезпечуючи безпеку та зручність роботи з об'єктами. Чому Python приховує фізичну пам’ять? Безпека: Це унеможливлює прямий доступ до пам’яті, що захищає програму від випадкових помилок чи зловмисного втручання. Кросплатформеність: Робота з віртуальною пам’яттю забезпечує однакову поведінку програми незалежно від операційної системи. Складність об'єктів: Структура об’єктів у Python не відповідає стандартним С-структурам, тому прямий доступ до пам’яті може порушити роботу інтерпретатора!
огромное спасибо за пояснение!!! внутри понимал, что речь идет не о физической памяти напрямую, но в книгах пишут только, что это ссылка на адрес, без деталей, ну покрайней мере пока в тех, которые мне попадались. Дякую! :)
@@ITPro-ei8cs Продовжуйте свою роботу, у вас на рідкість хороші уроки та проста подача, а я передивився весь ютуб по python та купу книжок! Так тримати! Ви молодець! Дякую за якісний контент! Книжка в якій це є - Python к вершинам мастерства : лучиано ромальйо Тільки в цій книжці я це знайшов! І взагалі це унікальна книжка!❤
спасибо большое за такой хороший отзыв! Да, книга действительно крутая, для людей с опытом, надеюсь к лету до неё дорасту и тоже разберу. :)
Очень понравилось видео, жду новых видео про Pascal!❤
спасибо. Да кстати! интересная идея, как устроен Pascal, Java ит.д.
@ITPro-ei8cs ☺
Грамотно и понятно, что самое важное!
спасибо!
💯👍! Очень четко!
👌:)
полезно
👍
Блин, это так круто сделано. 😮 спасибо огромное. И пайтону поучился и тому, как понятно и лаконично можно слайды делать.
спасибо!))))
Отличное объяснение, спасибо!)
спасибо!:)
Вообще ролик прекрасный. Для новичков (и 80% "мидлов") тут масса полезных разъяснений. 👍 однозначно за умение доводить информацию четко, понятно, локанично, без мути
спасибо!)
А разберите разницу в производительности этого транслятора и откомпилиной программы на C++ На идентичных вычислениях без юзания специфических библиотек
Ну, на самом деле, есть такие сравнения. Кому не насрать на ресурсы, можете найти сами Python vs C++ vs C# Speed Comparison
подобные эксперименты меня бы очень заинтересовали, но я до них ещё недорос:) но! возможно в будущем....
Ну а смысл? И так результат ясен. Инструменты разные, задачи разные. Каждый инструмент хорош по-своему.
@@SklerozRu Верно, Вы правы! Смысл от транслятора, работающего со скоростью C#/10, особенно, если он претендует на сервереые проекты и ИИ?.. Игрушка для студентов и проектов "слепил-впарил-забыл"...
С 6:44 по 5:58 информация не актуальна для пайтон версии 3.11.4 и выше тк следующий ввод: y=555555555555555 x=111111111111111*5 print(sys.version) print(id(y),' = ',id(x)) print(id(y)==id(x)) Даёт такой вывод: 3.11.4 (main, Sep 30 2023, 10:54:38) [GCC 11.4.0] 483658347728 = 483658347728 True [Program finished] Теперь пайтон проверяет и большие размеры переменных
прикольно. предположу, что это оптимизация от PyCharm. Попробуйте ввести этот же код в стандартном интерпретаторе Python. Я проверил в версии 3.12.1, результат False.
@@ITPro-ei8cs Проверив на версии 3.13.1 на vim через запуск python ...py вывод true, но при выводе в пайтон консоли false, странно)
Это интересненько
Спасибо за видео! Жаль, что нет конкретики. Например, неизменяемые x = 5 y = x * 1 id(x) == id(y) #True Но для x = 555 уже не работает. Автор поднял вопрос, и нашел на него ответ, но в мире строгих вычислений, сказать, про "для небольших и часто встречающихся значений, объект ищется в памяти...". Как-то грустно =( В Java, например, есть Integer pool, это массив в 1 байт. И все инты со значением от -128 до 127 будут ссылаться на один и тот же адрес в памяти. Для значений за рамками диапазона, каждый раз будет выделяться новая память. Наверняка в python подобный механизм
согласен с замечанием! действительно, когда делал видео упустил этот момент. Благодаря одному из комментариев, который указал на недосказанность в приведенном доказательстве, углубился в вопрос. Что я понял до этого момента: Под небольшими и часто встречающимися значениями подразумеваются: 1. целые числа в диапазоне от -5 до 256. 2. пустая строка, строки длиной в один символ (мне удалось убедиться в этом только для символов ASCII c 32 по 126), пустой кортеж, а так же значения: None, False, True. 3. для строк длинной более одного символа, все как то неоднозначно, но мне показалось, что если строки состоят из латинских букв и чисел то будут использоваться уже созданные объекты, но во всех ли случаях, не могу утверждать. Вроде, как объекты со значением из первого пункта, а так же пустая строка, пустой кортеж, None, True, False создаются в памяти ещё до загрузки программы, но как это доказать пока не знаю.
Спасибо вам огромное, жаль, что мало просмотров
Спасибо! ага, ну это ютуб так решил:)))
Дядь, ты офигеген. Помазал душу мёдом. 🍯
:))) спасибо
Формат 🚀
Супер спасибо
спасибо)
Чувак, это очень крутое видео. Спасибо!
спасибо!
Спасибо
😊
Для себя понял, что плохо воспринимаю информацию на слух. Но всё равно спасибо, за что-то зацепился и если понадобится, уже знаю куда копать - книга Мэтта Харисона
я тоже на слух хуже усваиваю :)
8:26 - вместо "разными" надо было сказать "одинаковыми". И общее изложение страдает: автор смешивает id и адрес, и с самого начала вообще непонятно, что имеется в виду. Думал предложить начинающим это видео, но по факту оно только запутывает внимательного зрителя.
Рекомндую следующее видео: "написание kernel-драйверов для чайников" 😂
я пока ещё до этого не дорос 😁 спасибо за рекомендацию!
Отличное видео для тех кто пытается понять как работает python под капотом, спасибо)
спасибо:)
5:18. Справедливо только для диапазона -5..256, ибо эти числа храняться в памяти постоянно. employees = 123456 id(123456) => 2612696004240 id(employees) => 2612696004752
Ха, прикол. Получается этот пример работает только для этого диапазона, так как для других литералов даже для аргумента в id() создается новый объект с таким же значением. Выходит для более общего случая требуется ещё одна переменная для этого же объекта типа emploees = с = 123456, и уже относительно их id(с) и id(emploees) рассматривать, как менятся адрес. Спасибо за уточнение! очень интересно!:)
Это видео - отличная визитка Вашего канала. Позволю себе критику, немного бы визуал подтянуть (всё впереди). В остальном же - очень хочу продолжить смотреть Ваши видео. И продолжу :)
спасибо большое:)
Красавчик. Видео зачет. Наконец то многое стало на свои места и появилось понимание чо именно мне нужно изучать для Data science и примерно в какой последовательности. Кстати, есть ли смысл после твоего видео прочесть эту книгу, или достаточно твоего видео?
спасибо!:) По поводу видео и книги. Те темы которые я взял в видео я постарался расширить, но возможно объяснение автора книги зайдет лучше. Некоторые темы я пропустил, так как они мне показались не раскрыты или в других книгах (именно для меня) описаны лучше. И опять же два человека прочитав одно и тоже в силу своего опыта могут сделать разные выводы, как по глубине, так и по смыслу. Поэтому мои видео ни в коему случае не могут быть заменой чтения, они дают возможность лишь узнать, как понял материал один из читалей (я), что должно (по моему мнению) облегчить и ускорить процесс обучения для других, двигающихся в схожем направлении.
А если у меня есть представление о архитектуре процессора, пк, ассемблера, ос, c, c++, c#, java то мне нужно представление о питоне?
с таким багажем, представление о Python Вы получите быстрее, чем с нуля. Стоит ли на это тратить время - вопрос на который каждый ищет ответ самостоятельно.
24:02 что-то насчет файловых дескрипторов сомнения есть у меня, что они пересекаются, как к ним обращаться если они не уникальны в пределах файловой системы? Могу предположить, что если и правда в разных процессах пайтон имеются одинаковые дескрипторы, но на разные файлы - это какой-то маппинг, т.е. мы внутри процесса имеем свои локальные значения, которые при обращении к ОС маппятся к значениям файловой системы.
Для каждого процесса своя таблица файлового дескриптора со своими ФД. Можно открыть два интерпретатора Python в которых вызвать команды по открытию 2х разных файлов, потом вывести значение ФД через .fileno() . В таблице ФД ОС там же не только информация о том где лежит файл, но ещё и режим доступа к примеру. Ну а вообще мне кажется мы об одном и том же говорим, только с разных сторон:))))
подписка
👍😊
great!
thanks!
Очень умное сравнение с коровой.🐂🐂 Совсем Лукашенко 😂
:)))))))
.
.
6:12 fak)
:) fak
ахуенно
Вчера ночью случайно увидела ваше видео в рекомендациях, хотя я всего на всего мастер маникюра, решила ради интереса включить. Я уснула крепким сном 💯😌 теперь знаю кого буду слушать перед сном 🤞🏽 спасибо вам 🙏🏽
:))))) неожиданное применение, подумаю над переименованием видео в "лекция перед сном" или что-то такое:)
рекомендую еще видео: как устроена видеокарта и как на низком уровне работает процессор ! :)
@АлексейКа-б2д 🤞🏽😁
На Питоне пишу 3 года , за видео спасибо! Отличный язык с кучей библиотек. Джависты конечно хэйтят питон , но мы с другом-джавистом на спор писали на скорость прогу с одинаковой бизнес логикой , джава проиграла. 😂
спасибо:). надеюсь друг остался другом:))
Пижженый контент
Я не программист. Но мне интересно, как программисты, вне зависимости от языка, или для языка, создают готовые оконные компоненты - классы, типа кнопки, прокрутки, текстбоксы со всеми свойствами и т.д ? Поясню что я имею ввиду. Меня не интересует готовые строчки кода в языках (С#, С++, Python, Java, и т.д), где написав их, описав их свойства, я получу тот или иной ГОТОВЫЙ компонент (кнопка. окно). То есть, в этих языках написал строчку кода, и тебе всё САМО "нарисовалось". Меня НЕ ЭТО интересует. Меня интересует как "нарисованное".(ну хотя бы с помощью win32 api, или ещё чем)..как к примеру, некая прямоугольная область на экране, становиться кнопкой ? Как в неё задаются свойства, события ? Или же как "нарисованная" чёрточка становиться мигающим курсором, и как для всех этих объектов создаётся СИНТАКСИС, для того или иного языка. Как "рисуют" и чем ? Какими "инструментами" ? Тобишь меня интересует та часть айсберга, которая в воде. Даже можно так выразиться - КАКОВЫ ЭТАПЫ РАЗРАБОТКИ того или иного компонента в языке (неважно в каком), от "рисования" до Синтаксиса ? И как "это", нечто новое, связать с компилятором ?
к сожалению не смогу ответить, я этим не занимался, попытался разобраться, что бы найти ответ, но уход в глубокие дебри получается.
Не ручаюсь за 100% точность, но думаю примерно так: в момент клика мыши ОС, зная положение курсора, передает сигнал о нажатии активной программе, программа так же зная положение курсора определяет на каком графическом элементе был произведен клик (к слову, это не обязательно кнопка). Тут, ясное дело, что программа работает с каким-то графическим фреймворком, и программный объект такого фреймворка, представляющий(отвечающий) за этот графичесий элемент, получает соответствующий сигнал(событие) - например, левый клик мыши и обрабатывает уже в соответствии с бизнес-логикой, которую написал программист (мы). Часть элементов, например, кнопка закрытия программы скорее всего не потребует вручную писать код завершения приложения.
Чтобы это понять, вам нужно самому написать графическую среду без использования сторонних библиотек. Пройти этап переключения с текстового режима хотя бы на графический фрейм-буфер, и начать в нем рисовать точки путем записывания нужных байт в нужные адреса. Затем добавить возможность рисования линий, прямоугольников, шрифтов. Затем написать расшифровщик графических форматов чтобы иконки выводить. Сделать подсистему опроса у железа движения указателя мыши, переводить эти данные в координаты. Отображать по координатам указатель мыши. Потом разработать систему, которая будет помнить каждый объект на экране, координаты его прямоугольника, глубину размещения. При клике мыши, сравнивая эти данные, можно понять, по какому объекту кликнули. Далее нужна подсистема отрисовки/перерисовки, которая правильно перерисовывает объекты на экране при действиях с ними, как минимум на основе пересекающихся прямоугольных областей, чтобы весь экран не перерисовывать. Ну и так далее.
@@xintreavideo Благодарю за ответ. Мне как раз таки вся эта "изнанка" интересна. А вы какую литературу посоветуете почитать на эту тему, или какие источники в интернете, мне помогут по подробней в эту тему углубиться ?
@@Юра-щ6т8п , так нету такой литературы. За каждым предложением стоит изучение нескольких книг по своей тематике и технической документации. На русском языке информации крайне мало, поэтому надо знать английский на уровне нейтива. Плюс надо по-сути заниматься интернет-археологией чтобы что-то внятное и редкое найти. Плюс если вы хотите заниматься всем легально, приготовьте крупную сумму, потому что официальная документация, особенно на железо, в свободном виде не доступна. Либо будьте готовы пиратить. Да и книжки будут не дешёвыми. Кроме того, сейчас практически нет специалистов, которые бы во всем этом разбирались. Каждый знает свою полянку и не более того.