Никита Соболев
Никита Соболев
  • 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.6K21 วันที่ผ่านมา
Лучший курс по питону: 3 Какой Python язык? - Типизация в Python - ООП в Python и функциональное программирование в Python - Компиляция Python 00:00 Вступление 00:37 Junior: Динамическая типизация против статической типизации, строгая и слабая типизация, явная и неявная типизация 06:04 Middle: ООП и функциональное программирования, скриптовые языки 12:34 Senior: REPL, компиляция против интерпре...
ЛКПП 2: +
มุมมอง 2.5Kหลายเดือนก่อน
Лучший курс по питону: 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.7Kหลายเดือนก่อน
Лучший курс по питону: 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: Мета информация
มุมมอง 4Kหลายเดือนก่อน
Лучший курс по питону: 0 Общая информация о курсе. Полезные ссылки: - Материалы: github.com/sobolevn/the-best-python-course - Мой GitHub: github.com/sobolevn - Поддержать: boosty.to/sobolevn - Сообщество: discord.python.ru
PythoNN: Николай Хитров - "Asyncio, о котором вам не рассказывали"
มุมมอง 1.5K9 หลายเดือนก่อน
Слайды: 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.4K9 หลายเดือนก่อน
Слайды: speakerdeck.com/xfenix/zhizn-poslie-fastapi Чат и анонсы: t.me/pytho_nn
PythoNN: Фёдор Борщёв - "Питон в аутсорсе - как мы управляем качеством"
มุมมอง 6009 หลายเดือนก่อน
Чат и анонсы: t.me/pytho_nn
Erlang 10 лет спустя
มุมมอง 2.4K6 ปีที่แล้ว
Игорь Карымов: Докладчик поделится своим опытом в разработке систем разного масштаба и назначения на 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
มุมมอง 2K6 ปีที่แล้ว
Переписываем все на Elixir - разработка и эксплуатация API на Elixir на проекте Lenta.ru
Elixir: Debug 101
มุมมอง 3497 ปีที่แล้ว
Elixir: Debug 101
Как начать писать на Elixir
มุมมอง 2.7K7 ปีที่แล้ว
Как начать писать на Elixir
Метапрограммирование на языке Elixir
มุมมอง 7387 ปีที่แล้ว
Метапрограммирование на языке Elixir
Тестируемость программ на эрланге
มุมมอง 4877 ปีที่แล้ว
Тестируемость программ на эрланге
Фронтенд + Elm - боль
มุมมอง 2.6K7 ปีที่แล้ว
Фронтенд Elm - боль
Непрерывное развёртывание Phoenix-приложений
มุมมอง 2787 ปีที่แล้ว
Непрерывное развёртывание Phoenix-приложений
Phoenix и docker
มุมมอง 5587 ปีที่แล้ว
Phoenix и docker
Сила Pattern Matching
มุมมอง 6037 ปีที่แล้ว
Сила Pattern Matching

ความคิดเห็น

  • @glebmedvedkov3555
    @glebmedvedkov3555 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn วันที่ผ่านมา

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

    • @glebmedvedkov3555
      @glebmedvedkov3555 วันที่ผ่านมา

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

  • @ztarlitz
    @ztarlitz 3 วันที่ผ่านมา

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

  • @ztarlitz
    @ztarlitz 3 วันที่ผ่านมา

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

  • @SeliverstovMusic
    @SeliverstovMusic 7 วันที่ผ่านมา

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

  • @VasilyRyabovVarjag
    @VasilyRyabovVarjag 7 วันที่ผ่านมา

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

  • @user-mobilnik
    @user-mobilnik 8 วันที่ผ่านมา

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

  • @user-mobilnik
    @user-mobilnik 8 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 8 วันที่ผ่านมา

      Нет такой функции :) Есть `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 9 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 9 วันที่ผ่านมา

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

  • @mefffauson8998
    @mefffauson8998 10 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 10 วันที่ผ่านมา

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

  • @user-pf6of1lz5m
    @user-pf6of1lz5m 11 วันที่ผ่านมา

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

  • @grigorytrofimov6513
    @grigorytrofimov6513 12 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 12 วันที่ผ่านมา

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

  • @linkernick5379
    @linkernick5379 13 วันที่ผ่านมา

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

  • @slubovsky
    @slubovsky 13 วันที่ผ่านมา

    Лучший курс!

  • @naivrick9782
    @naivrick9782 13 วันที่ผ่านมา

    Спасибо 😊

  • @vandris_
    @vandris_ 14 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 14 วันที่ผ่านมา

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

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n 14 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 14 วันที่ผ่านมา

      Почему не выполнится, давайте разбираться. Смотрите, вот такой будет 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 14 วันที่ผ่านมา

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

  • @DAJakaRedAries
    @DAJakaRedAries 14 วันที่ผ่านมา

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

  • @Reality-behind-
    @Reality-behind- 14 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 14 วันที่ผ่านมา

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

  • @Lelouch-
    @Lelouch- 14 วันที่ผ่านมา

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

  • @zaharvarfolomeev1536
    @zaharvarfolomeev1536 14 วันที่ผ่านมา

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

  • @sobolevn
    @sobolevn 15 วันที่ผ่านมา

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

  • @lizenox
    @lizenox 15 วันที่ผ่านมา

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

  • @amogusbokus976
    @amogusbokus976 16 วันที่ผ่านมา

    14:31 sq_concat, а не sq_add :)

  • @naivrick9782
    @naivrick9782 17 วันที่ผ่านมา

    Что такое _Т_

    • @sobolevn
      @sobolevn 16 วันที่ผ่านมา

      какое T? :)

  • @yuliyao192
    @yuliyao192 20 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 20 วันที่ผ่านมา

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

  • @alexandervalter
    @alexandervalter 22 วันที่ผ่านมา

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

  • @alyarock
    @alyarock 22 วันที่ผ่านมา

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

  • @user-hd8oy9xp8m
    @user-hd8oy9xp8m 22 วันที่ผ่านมา

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

  • @user-ff1sd6wl1h
    @user-ff1sd6wl1h 23 วันที่ผ่านมา

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

  • @lxgdark777
    @lxgdark777 23 วันที่ผ่านมา

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

  • @aiornerok3931
    @aiornerok3931 23 วันที่ผ่านมา

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

  • @OmgFiny
    @OmgFiny 23 วันที่ผ่านมา

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

  • @denisdenis00
    @denisdenis00 23 วันที่ผ่านมา

    звук!

  • @denisdenis00
    @denisdenis00 23 วันที่ผ่านมา

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

  • @kodeng6333
    @kodeng6333 24 วันที่ผ่านมา

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

  • @suenduk_dj
    @suenduk_dj 24 วันที่ผ่านมา

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

  • @JohnDoe-pm8cz
    @JohnDoe-pm8cz 24 วันที่ผ่านมา

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

  • @user-rg6dg4ip8b
    @user-rg6dg4ip8b 24 วันที่ผ่านมา

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

  • @naivrick9782
    @naivrick9782 24 วันที่ผ่านมา

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

  • @alexdubkov6998
    @alexdubkov6998 25 วันที่ผ่านมา

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

  • @chasubavil
    @chasubavil 25 วันที่ผ่านมา

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

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4v 25 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 25 วันที่ผ่านมา

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

  • @user-rh8kb4fy9g
    @user-rh8kb4fy9g 25 วันที่ผ่านมา

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

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4v 25 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 25 วันที่ผ่านมา

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

  • @stensmitt
    @stensmitt 26 วันที่ผ่านมา

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

  • @linkernick5379
    @linkernick5379 26 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 26 วันที่ผ่านมา

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

    • @linkernick5379
      @linkernick5379 26 วันที่ผ่านมา

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

    • @vitalyl1327
      @vitalyl1327 21 วันที่ผ่านมา

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

    • @naivrick9782
      @naivrick9782 17 วันที่ผ่านมา

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

    • @linkernick5379
      @linkernick5379 16 วันที่ผ่านมา

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

  • @linkernick5379
    @linkernick5379 26 วันที่ผ่านมา

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

    • @sobolevn
      @sobolevn 26 วันที่ผ่านมา

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

    • @linkernick5379
      @linkernick5379 26 วันที่ผ่านมา

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

    • @notacatbeaver7853
      @notacatbeaver7853 25 วันที่ผ่านมา

      ​@@linkernick5379Ok and?

  • @notacatbeaver7853
    @notacatbeaver7853 26 วันที่ผ่านมา

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

  • @alexpunches9042
    @alexpunches9042 26 วันที่ผ่านมา

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