- 32
- 39 371
Никита Соболев
Приєднався 27 сер 2011
ЛКПП 4: bool
Лучший курс по питону: 4
Или "обзор исходников CPython с CPython core разработчиком".
Тема: bool в Python
- Магические методы `__bool__` и `__len__`
- Почему нужно использовать is, а не ==, для сравнения объектов с True и False?
- Почему bool ведет себя как int?
- Ключевые слова and, or, и not
- Ленивые условия
- Использование all и any
- PyBool CAPI
- Оптимизация байткода в CPython
- FlowGraph
Билеты на конферецию MoscowPython Day: bit.ly/phd-mpp
00:00 Вступление
01:13 Junior
05:33 Middle
10:11 Senior
23:21 Завершение
Полезные ссылки:
- Все материалы: github.com/sobolevn/the-best-python-course
- Мой GitHub: github.com/sobolevn
- Поддержать: boosty.to/sobolevn
- Сообщество: discord.python.ru
#python #pythonprogramming #pythontutorial #python3
Или "обзор исходников CPython с CPython core разработчиком".
Тема: bool в Python
- Магические методы `__bool__` и `__len__`
- Почему нужно использовать is, а не ==, для сравнения объектов с True и False?
- Почему bool ведет себя как int?
- Ключевые слова and, or, и not
- Ленивые условия
- Использование all и any
- PyBool CAPI
- Оптимизация байткода в CPython
- FlowGraph
Билеты на конферецию MoscowPython Day: bit.ly/phd-mpp
00:00 Вступление
01:13 Junior
05:33 Middle
10:11 Senior
23:21 Завершение
Полезные ссылки:
- Все материалы: github.com/sobolevn/the-best-python-course
- Мой GitHub: github.com/sobolevn
- Поддержать: boosty.to/sobolevn
- Сообщество: discord.python.ru
#python #pythonprogramming #pythontutorial #python3
Переглядів: 1 201
Відео
ЛКПП 3: Какой Python язык?
Переглядів 2,6 тис.21 день тому
Лучший курс по питону: 3 Какой Python язык? - Типизация в Python - ООП в Python и функциональное программирование в Python - Компиляция Python 00:00 Вступление 00:37 Junior: Динамическая типизация против статической типизации, строгая и слабая типизация, явная и неявная типизация 06:04 Middle: ООП и функциональное программирования, скриптовые языки 12:34 Senior: REPL, компиляция против интерпре...
ЛКПП 2: +
Переглядів 2,5 тис.Місяць тому
Лучший курс по питону: 2 00:00 Вступление 00:30 Junior: add , radd , iadd , типизация 06:36 Middle: AST и BinOp, атомарность iadd , грамматика и приоритет операций, модуль operators 16:11 Senior: type slots, оптимизация байткода, как работает сложение двух PyLong объектов 25:45 Ссылки Полезные ссылки: - Материалы: github.com/sobolevn/the-best-python-course - Мой GitHub: github.com/sobolevn - По...
PythoNN: Сергей Яхницкий - Наедине с техдолгом
Переглядів 254Місяць тому
Компания: Яндекс Такси Технологии Презентация: speakerdeck.com/serjflint/naiedinie-s-tiekhdolghom Обсуждение: t.me/pytho_nn
PythoNN: Мария Воронова - dpnp
Переглядів 163Місяць тому
К сожалению у нас случились небольшие технические неполадки при записи данного доклада, сорян! Марию будет видно только в самом конце. Компания: ННГУ Презентация: Обсуждение: t.me/pytho_nn
PythoNN: Александр Мамедов - Мой первый доклад о том, как я готовил свой первый доклад
Переглядів 212Місяць тому
Компания: Райффайзен Банк Презентация: docs.google.com/presentation/d/1-4Xy6lkUTj5fhMAxiafs7EUYJVxGbUK2/edit Обсуждение: t.me/pytho_nn
PythoNN: Алексей Усков и Анастасия Скачкова - Как мы готовим питонистов?
Переглядів 255Місяць тому
Компания: lad-academy.ru Презентация: Обсуждение: t.me/pytho_nn
ЛКПП 1: int
Переглядів 4,7 тис.Місяць тому
Лучший курс по питону: 1 int: магические методы, абстрактные базовые классы (numeric tower), внутреннее устройство. 00:00 Junior 07:43 Middle 12:50 Senior Полезные ссылки: - Все материалы: github.com/sobolevn/the-best-python-course - Мой GitHub: github.com/sobolevn - Поддержать: boosty.to/sobolevn - Сообщество: discord.python.ru
ЛКПП 0: Мета информация
Переглядів 4 тис.Місяць тому
Лучший курс по питону: 0 Общая информация о курсе. Полезные ссылки: - Материалы: github.com/sobolevn/the-best-python-course - Мой GitHub: github.com/sobolevn - Поддержать: boosty.to/sobolevn - Сообщество: discord.python.ru
PythoNN: Николай Хитров - "Asyncio, о котором вам не рассказывали"
Переглядів 1,5 тис.9 місяців тому
Слайды: t.me/nkhitrov_blog/114 Чат и анонсы: t.me/pytho_nn
PythoNN: Василий Рябов - "Парсинг бинарных данных с помощью ctypes, или пишем на питоне как на Си"
Переглядів 3379 місяців тому
Слайды: speakerdeck.com/sobolevn/pythonn-vasilii-riabov-parsingh-binarnykh-dannykh-s-pomoshchiu-ctypes-ili-pishiem-na-pitonie-kak-na-si Чат и анонсы: t.me/pytho_nn
PythoNN: Денис Аникин - "Жизнь после FastAPI"
Переглядів 1,4 тис.9 місяців тому
Слайды: speakerdeck.com/xfenix/zhizn-poslie-fastapi Чат и анонсы: t.me/pytho_nn
PythoNN: Фёдор Борщёв - "Питон в аутсорсе - как мы управляем качеством"
Переглядів 6009 місяців тому
Чат и анонсы: t.me/pytho_nn
Erlang 10 лет спустя
Переглядів 2,4 тис.6 років тому
Игорь Карымов: Докладчик поделится своим опытом в разработке систем разного масштаба и назначения на Erlang за прошедшие 10 лет. Будут освещены вопросы применимости платформы и её экосистемы для решения задач из разных предметных областей elixir-lang.moscow/events/6/talks/erlang-10-let-spustja
Скорость vs надежность в программах Erlang
Переглядів 7416 років тому
Максим Лапшин: При коммуникации процессов неизбежно возникает желание перейти от блокирующих вызовов на неблокирующие сообщения для случаев, когда результат неинтересен. Рассмотрим, какие с этим возникают проблемы elixir-lang.moscow/events/6/talks/skorost-vs-nadezhnost-v-programmah-erlang
Фреймворк для работы с нейронными сетями на Elixir
Переглядів 7536 років тому
Фреймворк для работы с нейронными сетями на Elixir
Почему Elixir не мог быть основан на JVM (или пару слов про сборку мусора в BEAM)
Переглядів 8826 років тому
Почему Elixir не мог быть основан на JVM (или пару слов про сборку мусора в BEAM)
Переписываем все на Elixir - разработка и эксплуатация API на Elixir на проекте Lenta.ru
Переглядів 2 тис.6 років тому
Переписываем все на Elixir - разработка и эксплуатация API на Elixir на проекте Lenta.ru
Непрерывное развёртывание Phoenix-приложений
Переглядів 2787 років тому
Непрерывное развёртывание Phoenix-приложений
А есть ли курсы по питону для безопасников?
а чем безопасники отличаются от всех остальных? 🤔
@@sobolevn хмм, да особо ничем. Просто я вроде не прям 0 в питоне, но чтение чужого кода и написание своего пока идёт с трудом. Думал вдруг какие-то есть интересные курсы/упражнения на написание кода (более сложного чем умею сейчас) и понимание чужого кода
первая часть все таки выглядит как что-то сильно притянутое за уши. как будто ставится знак равно между аннотациями и полноценной статической типизацией.
8:20 есть еще иррациональные числа I, подмножество R.
Очень интересно! Показывает сколько де я ещё не знаю 👍👍 Спасибо!
Чё это… я hex() и bin() пользовался часто, особенно когда работал с железом! Стоит упомянуть еще zero fill, но это для строк скорее, хотя полезно для hex dump’ов выровненных.
Условно бесплатно за 1000 рублей
Специальная функция для bool - not()
Нет такой функции :) Есть `not ()` = `not tuple()` >>> import ast >>> ast.dump(ast.parse('not()')) 'Module(body=[Expr(value=UnaryOp(op=Not(), operand=Tuple(elts=[], ctx=Load())))], type_ignores=[])'
Пишу в основном на Java, но бывает и на Python(ничего особенного, просто иногда bash-скрипты вырастают, и ради читаемости проще их переписать на чем-то более поддерживаемом). Спасибо за курс!
У меня как-то раз bash скрипт вырос в github.com/sobolevn/git-secret 😱
Подскажите пожалуйста, какие курсы для начинающих вы рекомендуете?
Если с нуля, то я уважаю learn.python.ru Потому что много лет знаю всех, кто его делает. И очень много выпускников :)
Очень нравится. Жду следующий урок
assert all([]) is True я думал это просто потому, что под капотом сначала делают flag=False, а потом ищут хотя бы одно исключение но я не думал, что это как то связано с теорией категорий)
А тут такое! github.com/sobolevn/the-best-python-course/blob/8331d0f6534199159aab18bd8ce8e32e80094bd1/homeworks/4-bool.md#L4
То, что bool в Питоне унаследован от int это довольно странная фигня, потому что наследование на неизменяемых типах делает противоречивым операцию сравнения и другие инварианты (Почему True == 1, ведь они разных типов?). Поэтому в Scala, например, наследование на case-классах запрещено.
Лучший курс!
Спасибо 😊
Доброго времени суток! Спасибо за курс! А будет ли в рамках курса как-то освещаться работа сборщика мусора и счетчика ссылок?
конечно, когда дойдем до объектов
Только сегодня посмотрел интересный ролик. Скажите, а почему тут ( print(1 or None and print("hello world")) ) второй print не выполнится? Точнее почему - ясно, но оно получается не бьется а тем что вы рассказывали про АСТ?
Почему не выполнится, давайте разбираться. Смотрите, вот такой будет ast: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3 Далее, смотрим байткод: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3#file-boolop_dis-py В итоге получаем: ``` >>> None and print("hello world") >>> 1 or None 1 ``` Надеюсь, так понятно :) Ленивые штуки - всегда неочевидные!
Привет! Спасибо за урок)
Очень интересно, спасибо за курс!
11:56 Это пример из книги (Python к Вершинам Мастерства 2016 года) недавно перечитывал второе издание
Безмерно уважаю Лучиано. Кстати, я как-то приглашал его к нам на конференцию: ua-cam.com/video/5L4naRxKuKw/v-deo.html Была возможность пообщаться с ним, от чего уважения только прибавилось :)
Супер интересно, кайф, спасибо за курс
Мне кажется очень важно под каждым видео курса писать теплые слова благодарности. Пламенное спасибо за курс такого качества! Речь, последовательность инфы, объяснение и примеры, все супер.
Звук починил! Павел Пшеничный из компании Ядро, спасибо тебе! Единственная компания из многих десятков, кто откликнулся на призыв помочь со звуком. И вышло - просто кайф!
Походу я понял, чтобы вырасти из middle и стать senior на Python, мне нужно выучить C! =)
14:31 sq_concat, а не sq_add :)
Что такое _Т_
какое T? :)
typeshed упоминал и Рамальо, но что это в деталях, послушала бы конечно Спасибо за канал! Это лучшее, что видела по питону.
Ставлю два лайка!
Просто Боженька!
Никогда не пользовался typeshed
Спасибо за урок узнал новое для себя)
Присоединился после пайтон-митапа от еврона. Чуть не упустил же этот ценный материал)
Какой Python язык? Ответ: всех задравший!
Давай видосы про litestar
Про импорты точно интересно, можно добавить пару слов про circular import error
звук!
мощно но почему так тихо?((
Единственный курс на ютубе продолжения которого захотелось ждать)💥
я тысячный зритель этого видео, ура
интересный подход, спасибо за курс
Ничего не понято, но очень интересно. Россыпь кода, куда чего зачем знать необязательно.
Никита может по мимо Ютуба добавить всё на степик + задачки для усвоения
Конечно, большинство всех питонистов вряд ли будут писать си-расширения. А вот mypyc компилятор, когда мы все дружно будем использовать типы - это интригует. Спасибо за лекцию!
Формат превосходный, контент уникальный! Название курса полностью оправдано. Ведь это разработчик ядра снизошёл до нас, простых смертных, и разбирает всё досконально. Это вам не лапша от «синьёра за 3 года» 😼
1) Если после оптимизации сложения до BINARY_OP_ADD_INT мы сложим строки, то после неудачного сложения, будет вызвана BINARY_OP? Сколько раз нужно потом сложить строки, чтобы оптимизация стала BINARY_OP_ADD_UNICODE? 2) Как я понял ошибку с += для tuple, она возникает из-за того что мы после изменения списка, пытаемся присвоить "новый" список, вместо старого. Но если посмотреть id списка до += и после, то id совпадает, что намекает что список как объект остается тем же. Т.е. проблема в том что мы не можем менять объект, даже если это тот же самый объект?
1) да, fallback в BINARY_OP предусмотрен 2) tuple не определяет *никаких* методов для мутации себя. сравнение значений даже не успевает произойти. метод не найден, ничего не вызывается :(
Разбор typeshed был бы очень уместен и приятен.
Никита, спасибо за курс! Есть понимание сколько всего будет уроков и как часто они будут выходить?
Надеюсь, что где-то 50 выпусков. В среднем раз в неделю, иногда чаще, иногда реже.
Спасибо за курс. Интересно и информативно)
Далее аргумент о том, что таргетом и в Python и в Rust является LLVM, а следовательно они ничем не отличаются - это софистика. Тот код, который генерирует питонячий компилятор и код, который генерирует ржавый компилятор отличаются кардинально, скажем в перфомансе на порядки (за исключением узких случаев). И причина в том, что питонячий LLVM код реализует семантику Питона, вместе с GIL, счётчиком ссылок, динамической типизацией, косвенными вызовами, сборщиком мусора и прочими прелестями, а ржавый LLVM код реализует семантику языка RUST с контролем бинарного представления на уровне типов, уничтоженным алиасингом, прямыми вызовами и отсутствием GC. Так что говорить, что раз LLVM таргет есть и там, и там и следовательно они якобы теперь одинаковые - это лгать аудитории.
- Оно не компилируется - Оно всего лишь компилируется в инструкции VM - Оно компилируется в LLVM с другой семантикой ~~~ Вы находитесь здесь ~~~ - Оно компилируется в менее производительный код - Оно компилируется :(
@@sobolevn Ну я и говорю - софистика. В вашей теории разницы между, скажем, Go и Python нет никакой, а вот на практике разница есть и громадная. Подписался, жду с нетерпением следующей серии по языку программирования Python ;-)
@@sobolevnабсолютно любой язык можно компилировать. Более того, это совершенно тривиальная задача. Но вот что невозможно, так это из языка с настолько упорото динамической семантикой компилить в эффективный код . Дело не в комаиляции/интерпретации, а в динамизме. Просто питон дряной язык by design, и конфетку из него не вылепить никогда.
- Какой Python язык? - Оказывается сложный
@@naivrick9782да, Pyrhon сложность задачи помножает ещё и на свою излишнюю сложность, внося мутабельность, побочные эффекты и динамизм в программы, что приводит к невозможности протестировать полностью и тем более доказать корректность программ.
GIL делает невозможным использовать Питон на низком уровне или в многопоточном окружении. Если вы сейчас начнёте приводить доводы в виде Multiprocessing или субинтерпретаторов, то это не является полноценной поддержкой многопоточности. Если приведёте в пример nogil, то это является _другим_ языком с синтаксисом Питона, подобно ситуации с pypy, MicroPython и другими вариациями. То есть Питон не язык низкого уровня никаким боком, от разработчика скрыта возможность контроля ресурсов на таком же уровне, на каком это доступно в C, питонячьи абстракции (тот же GIL) становятся препятствием для этого.
Что вам мешает отключать gil из C? Доступ к CAPI будет только у одного потока в один момент, но остальное - может работать как угодно. Куча библиотек так и делают для ускорения вычислений. И даже в stdlib так. Почему `nogil` является другим языком? Я пишу `.configure --disable-gil` и у меня нет органичения на количество потоков, всё. Если "другой язык" в плане семантики, то тут про любую фичу так можно сказать.
@@sobolevn Что мешает? Мешает, что 90% библиотек просто перестанет работать, и какое-нибудь исключение из недр какого-нибудь django сделает невозможным использовать этот фреймворк с понятными для проекта последствиями. Даже если ничего не сломается в библиотеках, это всё ещё не даёт возможность безопасно запускать Питон в многопоточном окружении - интерпретатор байткода и счётчик ссылок не предназначены для этого. Далее, вы привели в пример наличие FFI, где можно освободить GIL и считаете, что проблема решена. А я вот не считаю, что проблема решена, она просто вытолкнута на другой, более низкий, уровень, где можно получить быстрое и параллелизуемое решение, но ценой сильно возросших трудозатрат, и с течением времени проблем от наличия Питона становится больше, чем пользы - не каждая команда готова переизобретать аналог pytorch для своего проекта.
@@linkernick5379Ok and?
Спасибо за лекцию! Самое то, чтобы успокоиться после сложения)
про импорты и неймспейсы интересно 🙏