ЛКПП 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-...
- Мой GitHub: github.com/sobolevn
- Поддержать: boosty.to/sobolevn
- Сообщество: discord.python.ru
#python #pythonprogramming #pythontutorial #python3

Пікірлер: 20

  • @sobolevn
    @sobolevn15 күн бұрын

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

  • @zaharvarfolomeev1536
    @zaharvarfolomeev153614 күн бұрын

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

  • @Lelouch-
    @Lelouch-14 күн бұрын

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

  • @user-pf6of1lz5m
    @user-pf6of1lz5m11 күн бұрын

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

  • @slubovsky
    @slubovsky13 күн бұрын

    Лучший курс!

  • @DAJakaRedAries
    @DAJakaRedAries14 күн бұрын

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

  • @naivrick9782
    @naivrick978213 күн бұрын

    Спасибо 😊

  • @stensmitt
    @stensmitt14 күн бұрын

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

  • @vladimir2139
    @vladimir21399 күн бұрын

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

  • @sobolevn

    @sobolevn

    9 күн бұрын

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

  • @linkernick5379
    @linkernick537913 күн бұрын

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

  • @vandris_
    @vandris_14 күн бұрын

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

  • @sobolevn

    @sobolevn

    14 күн бұрын

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

  • @grigorytrofimov6513
    @grigorytrofimov651312 күн бұрын

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

  • @sobolevn

    @sobolevn

    12 күн бұрын

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

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n14 күн бұрын

    Только сегодня посмотрел интересный ролик. Скажите, а почему тут ( 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 ``` Надеюсь, так понятно :) Ленивые штуки - всегда неочевидные!

  • @user-mobilnik
    @user-mobilnik8 күн бұрын

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

  • @user-mobilnik
    @user-mobilnik8 күн бұрын

    Специальная функция для 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=[])'