На realpython вышел новый туториал - как написать игру в "камень-ножницы-бумага". Кажется, это очень просто. Но по мере работы с туториалам игра усложняется к камню-ножницам и бумаге присоединяются еще два актора (те, кто смотрел Теорию большого взрыва в курсе, о чем речь, для остальных будет сюрприз). Количество комбинаций возрастает и приходится переписывать код, чтобы избавиться от if/elif-ов - https://realpython.com/python-rock-paper-scissors/
Realpython
Make Your First Python Game: Rock, Paper, Scissors! – Real Python
In this tutorial, you'll learn to program rock paper scissors in Python from scratch. You'll learn how to take in user input, make the computer choose a random action, determine a winner, and split your code into functions.
Записал новое видео о том, что такое папочки pycache и файлы .pyc, которые вы наверняка много раз видели в своих проектах https://www.youtube.com/watch?v=0aSie_CZkks
#tutorial
#tutorial
YouTube
__pycache__ и файлы .pyc
Возможно вы обращали внимание, что в вашем python-проекте появляется папка __pycache__ и файлы .pyc в ней. Давайте разберемся что это и как работает.
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube…
Если вы работаете с Django на достаточно большом проекте, то стандартный StatReloader, который перезапускает сервер, когда вы изменили какой-то файл может создавать дополнительную нагрузку на процессор (и батарею ноута, когда работаешь от батарейки). В качестве альтернативы можно использовать Watchman, который запускается как сервис и получает информацию о изменении файлов от операционки. Вот тут можно будет почитать подробнее https://adamj.eu/tech/2021/01/20/efficient-reloading-in-djangos-runserver-with-watchman/
adamj.eu
Efficient Reloading in Django’s Runserver With Watchman - Adam Johnson
Update (2022-04-06): pywatchman 1.4.1 does not work with Python 3.10. There is a fix, but unfortunately Facebook have not released it since the issue was reported on 2021-11-02. Check the upstream issue before proceeding on Python 3.10+.
Записал короткое видео с введением в генераторы https://www.youtube.com/watch?v=zbnEJon4a9s
YouTube
Знакомимся с генераторами в python
Возможно вы что-то слышали про генераторы в python? Разберемся, что это такое и зачем они нужны.
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube-канал - https://www.youtube.com/channel/UC-OVMPlMA3…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube-канал - https://www.youtube.com/channel/UC-OVMPlMA3…
Хранение конфигурации в переменных окружения - один из 12 принципов создания качесвтенных веб-приложений https://12factor.net/ru/. Если вы еще не используете environment variables - эта статья расскажет как и зачем это делать https://doppler.com/blog/environment-variables-in-python
В статье есть некоторое количество рекламы проекта над котором работает автор, но это не делает ее хуже.
В статье есть некоторое количество рекламы проекта над котором работает автор, но это не делает ее хуже.
12factor.net
The Twelve-Factor App (Русский перевод)
A methodology for building modern, scalable, maintainable software-as-a-service apps.
В новом видео я решил рассказать о использовании else в циклах. Да, в питоне так можно и это иногда вызывает неиллюзорное удивление у тех, кто пришел из других языков программирования 😈 - https://www.youtube.com/watch?v=SMN2Eo5jjOs
YouTube
Использование else в циклах в python
Мы привыкли, что обычно else используется в в ветвлениях. В python мы можем использовать else и в других конструкциях, например в циклах.. Давайте разберемся, как это работает.
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества…
Я как-то пропустил новость о том, что вышел новый mypy под python 3.9. Из интересного:
- понимает конструкции типа list[int] которые появились в 3.9
- понимает X | Y вместо Union[X, Y]
- наконец понимает модули без init.py
Подробности тут http://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html
- понимает конструкции типа list[int] которые появились в 3.9
- понимает X | Y вместо Union[X, Y]
- наконец понимает модули без init.py
Подробности тут http://mypy-lang.blogspot.com/2021/01/mypy-0800-released.html
Blogspot
Mypy 0.800 Released
We’ve just uploaded mypy 0.800 to the Python Package Index ( PyPI ). Mypy is a static type checker for Python. This release includes new ...
В сегодняшнем видео я показываю, как можно сделать код более читабельным и избавиться от лишних ветвлений https://www.youtube.com/watch?v=MrfiwKZgpgo
YouTube
Упрощаем конструкции if-elif-else в python
Конструкции if-elif-else можно очень часто встретить в коде и также часто они становятся перегруженными и затрудняют чтение и поддержку кода. Как можно их упростить? Давайте разбираться!
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке…
В большинстве веб-приложений нам приходится сталкиваться с задачей аутентификации пользователя - т.е. как получить от него логин/пароль, как их проверить и как после этого работать с ним. Хорошая статья, где преечислены основные виды аутентификации. используемые сейчас в веб-сервисах https://testdriven.io/blog/web-authentication-methods/
Статья как обычно на английском, с примерами кода и ссылками на бибилиотеки для flask/django/fastapi
Статья как обычно на английском, с примерами кода и ссылками на бибилиотеки для flask/django/fastapi
testdriven.io
Web Authentication Methods Compared
This article looks at the most commonly used web authentication methods.
Интересный материал про то, как сэкономить память при загрузке данных в pandas. И почему при объединении нескольких датафреймов можно получить ее неэффективное использование. Я не часто в последнее время использую pandas, но было интересно прочитать https://drawingfromdata.com/pandas/concat/memory/exploding-memory-usage-with-concat-and-categories.html
Drawing from Data
Why does my memory usage explode when concatenating dataframes?
Storing string columns as categories can result in massive memory savings when working with large dataframes. However, those savings can surprisingly disappear when we start concatenating dataframes.
Вопрос про разницу между списками и кортежами иногда можно встретить на собеседованиях джуниор-разработчиков. Записал видео об этом https://www.youtube.com/watch?v=lsuo7g42Vps
YouTube
В чем разница между списками и кортежами в python?
Иногда на собеседованиях джуниор-разработчиков можно встретить вопрос про разницу между списками и кортежами. Давайте разберемся и ответим на него.
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow Python.
Наш Youtube…
Интересная статья про внутренние оптимизации в cpython. В статье рассказано, как работает свертка констант (constant folding) - когда выражение вычисляется на этапе генерации байткода и в рантайме используется вычесленный результат. Будет интересно тем, кто хочет знать как все устроено внутри. Статья на английском и с некоторым количесвтом кода на C https://arpitbhayani.me/blogs/constant-folding-python
Arpit Bhayani
How python optimises the runtime using constant folding
Every programming language aims to be performant and Python is no exception. In this essay, we dive deep into Python internals and find out how Python makes its interpreter performant using a technique called Constant Folding.
В новом видео я решил начать рассказывать о том, как python работает с памятью. Рассказал о том, как работает сборщик мусора https://www.youtube.com/watch?v=4KhVCga8guc
YouTube
Управление памятью в python
В отличие от некоторых других языков, в питоне программист не сильно задумывается о работе с памятью. Как минимум до того момента, как память не становится узким местом в программе. Поговорим о том, как работает сборщик мусора в python.
Я в Telegram - h…
Я в Telegram - h…
Конструкция
if __name__ == "__main__":
поначалу кажется каким-то загадочным колдунством. Записал видео, в котором показал на примере, зачем это нужно и что такое name https://www.youtube.com/watch?v=mjvNRybjNlk&feature=youtu.beYouTube
Что такое __name__ в Python?
Возможно вы сталкивались в коде с конструкцией if __name__ == "__main__" и не до конца понимали, зачем она нужна? Давайте разберемся, что это за __name__ и __main__!
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow…
Я в Telegram - https://t.me/tricky_python
Канал создан при поддержке сообщества Moscow…
При написании сложных приложений очень важно помнить о целостности данных и многие проверки можно переложить на уровень базы данных. В статье показано несколько способов описания комплексных ограничений целосности (constraints) в моделях Django https://www.laac.dev/blog/database-constraints-in-django/
LAAC Technology
Database Constraints in Django | LAAC Technology
Learn about the various database constraints Django supports to ensure data integrity.
В комментариях к каналу люди регулярно спрашивали про итераторы. Записал видео - iterable, iterators вот это все https://www.youtube.com/watch?v=TvFQjT7S3kc
YouTube
Как устроены итераторы в Python?
В питоне большое количество самых разных и непохожих друг на друга объектов позволяют в цикле перебирать свои элементы. Возможно вы встречали термины iterator, iterable и iterator protocol. Что это и как устроено? Давайте разбираться!
Я в Telegram - htt…
Я в Telegram - htt…
В веб-приложениях часто требуется прикрутить логин через соцсети. На testdriven.io вышел хороший туториал, который в общих чертах рассказывает, как работает OAuth и дается пример подключения социального логина к Flask-приложению https://testdriven.io/blog/flask-social-auth/
testdriven.io
Adding Social Authentication to Flask
This tutorial details how to add social auth to a Flask application.
В Python есть очень удобная функция enumerate(), которая помогает, к примеру, пронумеровать элементы в цикле. Часто особенно новички в языке, не зная о этой возможности, придумывают обходные пути. В этом видео я покажу как использовать enumerate https://www.youtube.com/watch?v=xysJ0r2Iv_Q
YouTube
Как обработать отдельно четные и нечетные элементы списка в Python?
Иногда у вас может возникнуть задача - в цикле не только обработать элементы, но и пронумеровать их. Или по-разному работать с четными и нечетными элементами. Для решения этой задачи в python есть отличная функция enumerate()
Знакомимся с генераторами в…
Знакомимся с генераторами в…
Интересная и подробная статья о том, как python работает с памятью при использовании multiprocessing. Будет полезна, если вы используете какие-то большие readonly-объекты в вашем API. ну и в целом интересно, как все устроено под капотом https://luis-sena.medium.com/understanding-and-optimizing-python-multi-process-memory-management-24e1e5e79047
Medium
Understanding and Optimizing Python multi-process Memory Management
This post will focus on lowering your memory usage and increase your IPC at the same time
Продолжаем говорить про генераторы и итераторы на канале https://www.youtube.com/watch?v=E2DxlN-9qTg
YouTube
Чем Генераторы отличаются от Итераторов в Python?
Частый вопрос - в чем разница между генераторами и итераторами? Давайте разберемся на примере!
Как устроены итераторы в Python? https://www.youtube.com/watch?v=TvFQjT7S3kc
Знакомимся с генераторами в Python https://www.youtube.com/watch?v=zbnEJon4a9s&t=8s…
Как устроены итераторы в Python? https://www.youtube.com/watch?v=TvFQjT7S3kc
Знакомимся с генераторами в Python https://www.youtube.com/watch?v=zbnEJon4a9s&t=8s…
В питоне нашли ошибку связанную с переполнением буфера при работе с float-ами. Пишут, что в каких-то случаях баг может дать атакующему возможность удаленного исполнения кода. Рецепт исправления - обновиться до 3.8.8 или 3.9.2. Я пошел обновлять свои контейнеры с питоном https://nvd.nist.gov/vuln/detail/CVE-2021-3177