Никита Соболев
Никита Соболев
  • 32
  • 39 371
ЛКПП 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
Переглядів: 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
Лингвистическая относительность
Переглядів 3396 років тому
Лингвистическая относительность
Трюки с ETS
Переглядів 4036 років тому
Трюки с ETS
Фреймворк для работы с нейронными сетями на Elixir
Переглядів 7536 років тому
Фреймворк для работы с нейронными сетями на Elixir
Мониторинг Elixir приложения
Переглядів 4096 років тому
Мониторинг Elixir приложения
Почему Elixir не мог быть основан на JVM (или пару слов про сборку мусора в BEAM)
Переглядів 8826 років тому
Почему Elixir не мог быть основан на JVM (или пару слов про сборку мусора в BEAM)
Elixir и Фин-Tech
Переглядів 8646 років тому
Elixir и Фин-Tech
Переписываем все на Elixir - разработка и эксплуатация API на Elixir на проекте Lenta.ru
Переглядів 2 тис.6 років тому
Переписываем все на Elixir - разработка и эксплуатация API на Elixir на проекте Lenta.ru
Elixir: Debug 101
Переглядів 3497 років тому
Elixir: Debug 101
Как начать писать на Elixir
Переглядів 2,7 тис.7 років тому
Как начать писать на Elixir
Метапрограммирование на языке Elixir
Переглядів 7387 років тому
Метапрограммирование на языке Elixir
Тестируемость программ на эрланге
Переглядів 4877 років тому
Тестируемость программ на эрланге
Фронтенд + Elm - боль
Переглядів 2,6 тис.7 років тому
Фронтенд Elm - боль
Непрерывное развёртывание Phoenix-приложений
Переглядів 2787 років тому
Непрерывное развёртывание Phoenix-приложений
Phoenix и docker
Переглядів 5587 років тому
Phoenix и docker
Сила Pattern Matching
Переглядів 6037 років тому
Сила Pattern Matching

КОМЕНТАРІ

  • @glebmedvedkov3555
    @glebmedvedkov3555 11 годин тому

    А есть ли курсы по питону для безопасников?

    • @sobolevn
      @sobolevn 10 годин тому

      а чем безопасники отличаются от всех остальных? 🤔

    • @glebmedvedkov3555
      @glebmedvedkov3555 10 годин тому

      @@sobolevn хмм, да особо ничем. Просто я вроде не прям 0 в питоне, но чтение чужого кода и написание своего пока идёт с трудом. Думал вдруг какие-то есть интересные курсы/упражнения на написание кода (более сложного чем умею сейчас) и понимание чужого кода

  • @ztarlitz
    @ztarlitz 2 дні тому

    первая часть все таки выглядит как что-то сильно притянутое за уши. как будто ставится знак равно между аннотациями и полноценной статической типизацией.

  • @ztarlitz
    @ztarlitz 2 дні тому

    8:20 есть еще иррациональные числа I, подмножество R.

  • @SeliverstovMusic
    @SeliverstovMusic 6 днів тому

    Очень интересно! Показывает сколько де я ещё не знаю 👍👍 Спасибо!

  • @VasilyRyabovVarjag
    @VasilyRyabovVarjag 6 днів тому

    Чё это… я hex() и bin() пользовался часто, особенно когда работал с железом! Стоит упомянуть еще zero fill, но это для строк скорее, хотя полезно для hex dump’ов выровненных.

  • @user-mobilnik
    @user-mobilnik 7 днів тому

    Условно бесплатно за 1000 рублей

  • @user-mobilnik
    @user-mobilnik 7 днів тому

    Специальная функция для bool - not()

    • @sobolevn
      @sobolevn 7 днів тому

      Нет такой функции :) Есть `not ()` = `not tuple()` >>> import ast >>> ast.dump(ast.parse('not()')) 'Module(body=[Expr(value=UnaryOp(op=Not(), operand=Tuple(elts=[], ctx=Load())))], type_ignores=[])'

  • @vladimir2139
    @vladimir2139 8 днів тому

    Пишу в основном на Java, но бывает и на Python(ничего особенного, просто иногда bash-скрипты вырастают, и ради читаемости проще их переписать на чем-то более поддерживаемом). Спасибо за курс!

    • @sobolevn
      @sobolevn 8 днів тому

      У меня как-то раз bash скрипт вырос в github.com/sobolevn/git-secret 😱

  • @mefffauson8998
    @mefffauson8998 9 днів тому

    Подскажите пожалуйста, какие курсы для начинающих вы рекомендуете?

    • @sobolevn
      @sobolevn 9 днів тому

      Если с нуля, то я уважаю learn.python.ru Потому что много лет знаю всех, кто его делает. И очень много выпускников :)

  • @user-pf6of1lz5m
    @user-pf6of1lz5m 10 днів тому

    Очень нравится. Жду следующий урок

  • @grigorytrofimov6513
    @grigorytrofimov6513 11 днів тому

    assert all([]) is True я думал это просто потому, что под капотом сначала делают flag=False, а потом ищут хотя бы одно исключение но я не думал, что это как то связано с теорией категорий)

    • @sobolevn
      @sobolevn 11 днів тому

      А тут такое! github.com/sobolevn/the-best-python-course/blob/8331d0f6534199159aab18bd8ce8e32e80094bd1/homeworks/4-bool.md#L4

  • @linkernick5379
    @linkernick5379 12 днів тому

    То, что bool в Питоне унаследован от int это довольно странная фигня, потому что наследование на неизменяемых типах делает противоречивым операцию сравнения и другие инварианты (Почему True == 1, ведь они разных типов?). Поэтому в Scala, например, наследование на case-классах запрещено.

  • @slubovsky
    @slubovsky 12 днів тому

    Лучший курс!

  • @naivrick9782
    @naivrick9782 12 днів тому

    Спасибо 😊

  • @vandris_
    @vandris_ 13 днів тому

    Доброго времени суток! Спасибо за курс! А будет ли в рамках курса как-то освещаться работа сборщика мусора и счетчика ссылок?

    • @sobolevn
      @sobolevn 13 днів тому

      конечно, когда дойдем до объектов

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n 13 днів тому

    Только сегодня посмотрел интересный ролик. Скажите, а почему тут ( print(1 or None and print("hello world")) ) второй print не выполнится? Точнее почему - ясно, но оно получается не бьется а тем что вы рассказывали про АСТ?

    • @sobolevn
      @sobolevn 13 днів тому

      Почему не выполнится, давайте разбираться. Смотрите, вот такой будет ast: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3 Далее, смотрим байткод: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3#file-boolop_dis-py В итоге получаем: ``` >>> None and print("hello world") >>> 1 or None 1 ``` Надеюсь, так понятно :) Ленивые штуки - всегда неочевидные!

  • @stensmitt
    @stensmitt 13 днів тому

    Привет! Спасибо за урок)

  • @DAJakaRedAries
    @DAJakaRedAries 13 днів тому

    Очень интересно, спасибо за курс!

  • @Reality-behind-
    @Reality-behind- 13 днів тому

    11:56 Это пример из книги (Python к Вершинам Мастерства 2016 года) недавно перечитывал второе издание

    • @sobolevn
      @sobolevn 13 днів тому

      Безмерно уважаю Лучиано. Кстати, я как-то приглашал его к нам на конференцию: ua-cam.com/video/5L4naRxKuKw/v-deo.html Была возможность пообщаться с ним, от чего уважения только прибавилось :)

  • @Lelouch-
    @Lelouch- 13 днів тому

    Супер интересно, кайф, спасибо за курс

  • @zaharvarfolomeev1536
    @zaharvarfolomeev1536 13 днів тому

    Мне кажется очень важно под каждым видео курса писать теплые слова благодарности. Пламенное спасибо за курс такого качества! Речь, последовательность инфы, объяснение и примеры, все супер.

  • @sobolevn
    @sobolevn 14 днів тому

    Звук починил! Павел Пшеничный из компании Ядро, спасибо тебе! Единственная компания из многих десятков, кто откликнулся на призыв помочь со звуком. И вышло - просто кайф!

  • @lizenox
    @lizenox 14 днів тому

    Походу я понял, чтобы вырасти из middle и стать senior на Python, мне нужно выучить C! =)

  • @amogusbokus976
    @amogusbokus976 15 днів тому

    14:31 sq_concat, а не sq_add :)

  • @naivrick9782
    @naivrick9782 16 днів тому

    Что такое _Т_

    • @sobolevn
      @sobolevn 16 днів тому

      какое T? :)

  • @yuliyao192
    @yuliyao192 19 днів тому

    typeshed упоминал и Рамальо, но что это в деталях, послушала бы конечно Спасибо за канал! Это лучшее, что видела по питону.

    • @sobolevn
      @sobolevn 19 днів тому

      Ставлю два лайка!

  • @alexandervalter
    @alexandervalter 21 день тому

    Просто Боженька!

  • @alyarock
    @alyarock 21 день тому

    Никогда не пользовался typeshed

  • @user-hd8oy9xp8m
    @user-hd8oy9xp8m 21 день тому

    Спасибо за урок узнал новое для себя)

  • @user-ff1sd6wl1h
    @user-ff1sd6wl1h 22 дні тому

    Присоединился после пайтон-митапа от еврона. Чуть не упустил же этот ценный материал)

  • @lxgdark777
    @lxgdark777 22 дні тому

    Какой Python язык? Ответ: всех задравший!

  • @aiornerok3931
    @aiornerok3931 22 дні тому

    Давай видосы про litestar

  • @OmgFiny
    @OmgFiny 22 дні тому

    Про импорты точно интересно, можно добавить пару слов про circular import error

  • @denisdenis00
    @denisdenis00 22 дні тому

    звук!

  • @denisdenis00
    @denisdenis00 22 дні тому

    мощно но почему так тихо?((

  • @kodeng6333
    @kodeng6333 23 дні тому

    Единственный курс на ютубе продолжения которого захотелось ждать)💥

  • @suenduk_dj
    @suenduk_dj 23 дні тому

    я тысячный зритель этого видео, ура

  • @JohnDoe-pm8cz
    @JohnDoe-pm8cz 23 дні тому

    интересный подход, спасибо за курс

  • @user-rg6dg4ip8b
    @user-rg6dg4ip8b 23 дні тому

    Ничего не понято, но очень интересно. Россыпь кода, куда чего зачем знать необязательно.

  • @naivrick9782
    @naivrick9782 23 дні тому

    Никита может по мимо Ютуба добавить всё на степик + задачки для усвоения

  • @alexdubkov6998
    @alexdubkov6998 24 дні тому

    Конечно, большинство всех питонистов вряд ли будут писать си-расширения. А вот mypyc компилятор, когда мы все дружно будем использовать типы - это интригует. Спасибо за лекцию!

  • @chasubavil
    @chasubavil 24 дні тому

    Формат превосходный, контент уникальный! Название курса полностью оправдано. Ведь это разработчик ядра снизошёл до нас, простых смертных, и разбирает всё досконально. Это вам не лапша от «синьёра за 3 года» 😼

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4v 24 дні тому

    1) Если после оптимизации сложения до BINARY_OP_ADD_INT мы сложим строки, то после неудачного сложения, будет вызвана BINARY_OP? Сколько раз нужно потом сложить строки, чтобы оптимизация стала BINARY_OP_ADD_UNICODE? 2) Как я понял ошибку с += для tuple, она возникает из-за того что мы после изменения списка, пытаемся присвоить "новый" список, вместо старого. Но если посмотреть id списка до += и после, то id совпадает, что намекает что список как объект остается тем же. Т.е. проблема в том что мы не можем менять объект, даже если это тот же самый объект?

    • @sobolevn
      @sobolevn 24 дні тому

      1) да, fallback в BINARY_OP предусмотрен 2) tuple не определяет *никаких* методов для мутации себя. сравнение значений даже не успевает произойти. метод не найден, ничего не вызывается :(

  • @user-rh8kb4fy9g
    @user-rh8kb4fy9g 24 дні тому

    Разбор typeshed был бы очень уместен и приятен.

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4v 24 дні тому

    Никита, спасибо за курс! Есть понимание сколько всего будет уроков и как часто они будут выходить?

    • @sobolevn
      @sobolevn 24 дні тому

      Надеюсь, что где-то 50 выпусков. В среднем раз в неделю, иногда чаще, иногда реже.

  • @stensmitt
    @stensmitt 25 днів тому

    Спасибо за курс. Интересно и информативно)

  • @linkernick5379
    @linkernick5379 25 днів тому

    Далее аргумент о том, что таргетом и в Python и в Rust является LLVM, а следовательно они ничем не отличаются - это софистика. Тот код, который генерирует питонячий компилятор и код, который генерирует ржавый компилятор отличаются кардинально, скажем в перфомансе на порядки (за исключением узких случаев). И причина в том, что питонячий LLVM код реализует семантику Питона, вместе с GIL, счётчиком ссылок, динамической типизацией, косвенными вызовами, сборщиком мусора и прочими прелестями, а ржавый LLVM код реализует семантику языка RUST с контролем бинарного представления на уровне типов, уничтоженным алиасингом, прямыми вызовами и отсутствием GC. Так что говорить, что раз LLVM таргет есть и там, и там и следовательно они якобы теперь одинаковые - это лгать аудитории.

    • @sobolevn
      @sobolevn 25 днів тому

      - Оно не компилируется - Оно всего лишь компилируется в инструкции VM - Оно компилируется в LLVM с другой семантикой ~~~ Вы находитесь здесь ~~~ - Оно компилируется в менее производительный код - Оно компилируется :(

    • @linkernick5379
      @linkernick5379 25 днів тому

      @@sobolevn Ну я и говорю - софистика. В вашей теории разницы между, скажем, Go и Python нет никакой, а вот на практике разница есть и громадная. Подписался, жду с нетерпением следующей серии по языку программирования Python ;-)

    • @vitalyl1327
      @vitalyl1327 20 днів тому

      ​@@sobolevnабсолютно любой язык можно компилировать. Более того, это совершенно тривиальная задача. Но вот что невозможно, так это из языка с настолько упорото динамической семантикой компилить в эффективный код . Дело не в комаиляции/интерпретации, а в динамизме. Просто питон дряной язык by design, и конфетку из него не вылепить никогда.

    • @naivrick9782
      @naivrick9782 16 днів тому

      - Какой Python язык? - Оказывается сложный

    • @linkernick5379
      @linkernick5379 15 днів тому

      @@naivrick9782да, Pyrhon сложность задачи помножает ещё и на свою излишнюю сложность, внося мутабельность, побочные эффекты и динамизм в программы, что приводит к невозможности протестировать полностью и тем более доказать корректность программ.

  • @linkernick5379
    @linkernick5379 25 днів тому

    GIL делает невозможным использовать Питон на низком уровне или в многопоточном окружении. Если вы сейчас начнёте приводить доводы в виде Multiprocessing или субинтерпретаторов, то это не является полноценной поддержкой многопоточности. Если приведёте в пример nogil, то это является _другим_ языком с синтаксисом Питона, подобно ситуации с pypy, MicroPython и другими вариациями. То есть Питон не язык низкого уровня никаким боком, от разработчика скрыта возможность контроля ресурсов на таком же уровне, на каком это доступно в C, питонячьи абстракции (тот же GIL) становятся препятствием для этого.

    • @sobolevn
      @sobolevn 25 днів тому

      Что вам мешает отключать gil из C? Доступ к CAPI будет только у одного потока в один момент, но остальное - может работать как угодно. Куча библиотек так и делают для ускорения вычислений. И даже в stdlib так. Почему `nogil` является другим языком? Я пишу `.configure --disable-gil` и у меня нет органичения на количество потоков, всё. Если "другой язык" в плане семантики, то тут про любую фичу так можно сказать.

    • @linkernick5379
      @linkernick5379 25 днів тому

      @@sobolevn Что мешает? Мешает, что 90% библиотек просто перестанет работать, и какое-нибудь исключение из недр какого-нибудь django сделает невозможным использовать этот фреймворк с понятными для проекта последствиями. Даже если ничего не сломается в библиотеках, это всё ещё не даёт возможность безопасно запускать Питон в многопоточном окружении - интерпретатор байткода и счётчик ссылок не предназначены для этого. Далее, вы привели в пример наличие FFI, где можно освободить GIL и считаете, что проблема решена. А я вот не считаю, что проблема решена, она просто вытолкнута на другой, более низкий, уровень, где можно получить быстрое и параллелизуемое решение, но ценой сильно возросших трудозатрат, и с течением времени проблем от наличия Питона становится больше, чем пользы - не каждая команда готова переизобретать аналог pytorch для своего проекта.

    • @notacatbeaver7853
      @notacatbeaver7853 25 днів тому

      ​@@linkernick5379Ok and?

  • @notacatbeaver7853
    @notacatbeaver7853 25 днів тому

    Спасибо за лекцию! Самое то, чтобы успокоиться после сложения)

  • @alexpunches9042
    @alexpunches9042 26 днів тому

    про импорты и неймспейсы интересно 🙏