Zen of Python
20.1K subscribers
1.29K photos
179 videos
36 files
3.3K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Нестандартные интерфейсы на Python: как вставить кнопки, как на пульте ТВ?

А что если ваш UI должен содержать кнопки нестандартной формы? Как на пульте ТВ / игровом джойстике, к примеру. Tkinter, к примеру, такое не умеет.

Один австралийский разработчик решил эту задачу, написав библиотеку GIMPy-Widget-UI. Библиотека позволяет проектировать в графическом редакторе такие нестандартные элементы и делать их интерактивными с минимальным объёмом кода.

#инструмент
@zen_of_python
Френдли фаер: наши привычки, которые медленно, но верно бьют по суставам и мышцам

Мы привыкли думать, что проблемы со спиной и суставами начинаются только от сидячки. Но есть куча мелких бытовых жестов, которые каждый день копят нагрузку и тихо разрушают тело:

— Держать телефон между ухом и плечом.
— Рюкзак или сумка всегда на одной стороне.
— Стоять, перенося вес только на одну ногу.
— Сидеть, поджимая ногу под себя.
— Скрещивать ноги за столом или закидывать одну на другую.
— Носить кроссовки без поддержки пятки и свода (особенно дешёвые тряпочные).
— Долго сидеть, положив локоть на стол и опираясь на подбородок.
— Спать всё время на одном боку в одной позе.
— Работать за ноутбуком, постоянно смотря чуть вниз.
— Часто носить тяжёлые пакеты «в одну руку».

Всё это со временем даёт защемления, перекосы и хронические боли. Так что позаботьтесь, чтобы убрать их из быта.

#суставы #советы
65👎2🕊1
«Я перестал думать»: чем опасен ИИ и вайб-кодинг для разработчиков

Один опытный разработчик предупредил новичков:

Лёгкость, с которой ИИ решает задачи, постепенно стирает ваше понимание процесса. Возникает дофаминовая ловушка, почти как при бессмысленном скроллинге ленты соцсетей — быстрое «удовольствие» без усилий и без реального роста.


Что делать неофиту в эпоху вайб-кодинга, чтобы вырасти в настоящего профи — смотрите в статье.

#обучение
@zen_of_python
👍53👎2
api-design.pdf
210.9 KB
Шпаргалка для пишущих свой API

Некоторым из нас приходится писать собственные интерфейсы, и при развитии такого приложения стоит задумываться не только об очередном методе, но и про:
— авторизацию;
— разграничение доступа на основе ролей (RBAC);
— метрики производительности;
— тестирование и прочие аспекты

В приложенной шпаргалке как раз об этом.

#обучение
@zen_of_python
👎4🔥3🤔21
detroit | Level Up для вашего dataviz'а

Если привычные столбчатые диаграммы и пай-чарты уже не забавляют, попробуйте питоническую реализацию d3js — небезызвестного тула для построения нетривиальных графиков. Как минимум познаете еще один вид графика, это обещаем.

#инструмент
@zen_of_python
👍21🔥1
vim-commands-cheat-sheet-by-pnap.pdf
80.9 KB
Шпаргалка vim
Симпатичная табличная подборка команд для тех, кто наконец выучил, как выйти из этого редактора.

Помимо CRUD-операций там полезное про изменение цветовой схемы, навигацию по файлу, работу с несколькими файлами в буфере.

#шпаргалка
@zen_of_python
2👎2
Используете ли вы LLM IDE вроде Cursor для пет-проекта(-ов)?
Anonymous Poll
29%
Да
44%
Нет
27%
Что такое LLM IDE?
👌1
Вопросы подписчиков

Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:

— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте.

#обсуждение
@zen_of_python
🌚1🗿1
И такой еще остановит Cursor при верстке тестов прямо в процессе
#кек
@zen_of_python
Что такое замыкание и зачем оно нужно

Замыкания (Closures) — понятие, которое кажется сложным при первом знакомстве. Но на самом деле вы уже его скорее всего используете неосознанно, настолько это стало базой.

Представим программу, где пользователь вводит число, нажимает OK, и программа сохраняет это число в список, выводя все введённые значения:


numbers = []

def enter_number(x):
numbers.append(x)
print(numbers)

enter_number(3) # [3]
enter_number(7) # [3, 7]
enter_number(4) # v


Код работает, но есть проблема: переменная numbers находится вне функции, то есть она глобальная. Это значит, что:

🔘 функция зависит от переменной, объявленной в другом месте;
🔘 код становится менее гибким — нельзя просто перенести функцию в другой модуль, не взяв с собой numbers.

Замыкание помогает «связать» данные и логику в одном месте без использования классов:


def enter_number_outer():
numbers = [] # локальная переменная

def enter_number_inner(x):
numbers.append(x)
print(numbers)

return enter_number_inner


Когда мы вызываем внешнюю функцию enter_number_outer(), она создаёт свой контекст с переменной numbers и возвращает внутреннюю функцию, которая имеет к ней доступ.


enter_num = enter_number_outer()

enter_num(3) # [3]
enter_num(7) # [3, 7]
enter_num(4) # [3, 7, 4]


Ключевая идея замыкания:

Внутренняя функция «замыкает» (сохраняет) значения переменных из области видимости внешней функции.


Даже когда enter_number_outer() завершает выполнение, её переменные не уничтожаются, потому что они нужны внутренней функции, которая всё ещё существует. Это и есть closure — функция, которая запоминает контекст, в котором была создана.


Используйте замыкания, если хотите:
🔘 инкапсулировать состояние в функции без создания класса;
🔘 нужно создать функцию-конфигуратор (например, с частично зафиксированными параметрами);

Замыкание — это функция, которая:
🔘 определена внутри другой функции;
🔘 использует переменные из внешней функции;
🔘 «запоминает» эти переменные даже после завершения внешней функции.

#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🤣1