Звук починил! Павел Пшеничный из компании Ядро, спасибо тебе! Единственная компания из многих десятков, кто откликнулся на призыв помочь со звуком. И вышло - просто кайф!
Мне кажется очень важно под каждым видео курса писать теплые слова благодарности. Пламенное спасибо за курс такого качества! Речь, последовательность инфы, объяснение и примеры, все супер.
Никита, большое спасибо, отличная лекция! Одна просьба, можешь пожалуйста запланировать на будущее рассмотрение темы про использование AST. Очень понравилась конструкция ast.dump(ast.parse(x or y and z) indent=4)), было бы класно, если бы ты смог рассказать об этой фиче и о том как ей пользоваться и что ожидать - побольше. С Уважением, Макс.
Пишу в основном на Java, но бывает и на Python(ничего особенного, просто иногда bash-скрипты вырастают, и ради читаемости проще их переписать на чем-то более поддерживаемом). Спасибо за курс!
Никита, здравствуйте! Очень интересные вещи рассказываете, спасибо) Небольшая обратная связь: белый фон на слайдах сильно режет глаз, если есть возможность сделать темный фон, будет огонь просто.
То, что 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 ``` Надеюсь, так понятно :) Ленивые штуки - всегда неочевидные!
assert all([]) is True я думал это просто потому, что под капотом сначала делают flag=False, а потом ищут хотя бы одно исключение но я не думал, что это как то связано с теорией категорий)
Нет такой функции :) Есть `not ()` = `not tuple()` >>> import ast >>> ast.dump(ast.parse('not()')) 'Module(body=[Expr(value=UnaryOp(op=Not(), operand=Tuple(elts=[], ctx=Load())))], type_ignores=[])'
Звук починил! Павел Пшеничный из компании Ядро, спасибо тебе! Единственная компания из многих десятков, кто откликнулся на призыв помочь со звуком. И вышло - просто кайф!
Большое спасибо. Было бо интересно разобраться по системам сборки и упаковки (venv, pip, poetry, pyinstaller...)
Мне кажется очень важно под каждым видео курса писать теплые слова благодарности.
Пламенное спасибо за курс такого качества! Речь, последовательность инфы, объяснение и примеры, все супер.
Супер интересно, кайф, спасибо за курс
Никита, большое спасибо, отличная лекция!
Одна просьба, можешь пожалуйста запланировать на будущее рассмотрение темы про использование AST. Очень понравилась конструкция
ast.dump(ast.parse(x or y and z) indent=4)), было бы класно, если бы ты смог рассказать об этой фиче и о том как ей пользоваться и что ожидать - побольше.
С Уважением,
Макс.
Очень интересно, спасибо за курс!
Очень нравится. Жду следующий урок
Привет! Спасибо за урок)
Пишу в основном на Java, но бывает и на Python(ничего особенного, просто иногда bash-скрипты вырастают, и ради читаемости проще их переписать на чем-то более поддерживаемом). Спасибо за курс!
У меня как-то раз bash скрипт вырос в github.com/sobolevn/git-secret 😱
Лучший курс!
Помню в sqlalchemy преходилось делать выборку сравнением `some_field == True', с `is` по каким-то причинам не работало
Потому что `__eq__` для `==` можно переопределить (и сделать DSL), а `is` - нельзя!
Спасибо 😊
Никит, где видосы по лучшему курсу ? Месяц прошёл, грустно без тебя 😢
Скоро будет :)
Подскажите, пожалуйста, Никита, почему каждое видео снято в парадигме ООП? Потому что в основном именно ООП фигурирует в разработке?
Потому что так питон устроен :)
Никита, здравствуйте! Очень интересные вещи рассказываете, спасибо) Небольшая обратная связь: белый фон на слайдах сильно режет глаз, если есть возможность сделать темный фон, будет огонь просто.
То, что 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
```
Надеюсь, так понятно :)
Ленивые штуки - всегда неочевидные!
assert all([]) is True
я думал это просто потому, что под капотом сначала делают flag=False, а потом ищут хотя бы одно исключение
но я не думал, что это как то связано с теорией категорий)
А тут такое! github.com/sobolevn/the-best-python-course/blob/8331d0f6534199159aab18bd8ce8e32e80094bd1/homeworks/4-bool.md#L4
import kinetika
Специальная функция для 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=[])'
Условно бесплатно за 1000 рублей