Zen of Python
20.1K subscribers
1.25K photos
168 videos
32 files
3.21K links
Полный Дзен Пайтона в одном канале

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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
По результатам опроса Python Software Foundation, в 2025 году, доля разработчиков, использующих FastAPI, выросла с 29 до 38%.

#кек
@zen_of_python
1
И не дай Бог, pdb (Python Debugger)
#кек
@zen_of_python
🤣131
​​archivey | WinRAR больше не нужен

Библиотека предлагает унифицированный способ обращения с архивами .zip, .rar, .tar, .7z и другими форматами. Массовые создание и распаковка, обработка символических ссылок (symlink), управление правами доступа и паролями.

#инструмент
@zen_of_python
2😇1
Функции vs. метод в Python: разница

Тем, кто в языке первый год, разница между этими объектами может показаться неочевидной, для них и написан этот лонгрид.


Что такое функция?

Это блок кода, который принимает входные данные (аргументы), обрабатывает их и возвращает результат. Выделяют два типа:

1️⃣ без побочных эффектов — это чисто математические функции;
2️⃣ с побочными эффектами — функции, которые взаимодействуют с чем-то вне себя, например, с файлом, списком, базой данных или терминалом.

Пример чистой функции


def add(a, b):
return a + b

print(add(2, 3)) # Всегда возвращает 5


Такая функция при одинаковых входных данных всегда возвращает один и тот же результат.

Пример функции с побочными эффектами:


import random

def random_point():
x = random.randint(0, 10)
y = random.randint(0, 10)
return x, y

print(random_point()) # Каждый раз возвращает разные значения


Здесь функция использует внешний модуль random, и результат может меняться при каждом вызове. Это и есть побочный эффект.


Что такое метод?

Это та же функция, которая принадлежит объекту класса. Пока определение запутывает, но посмотрите пример ниже. Здесь set_name — это метод, используемый только для объектов Employee:



class Employee:
def set_name(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name

# Создаём объекты
emp1 = Employee()
emp2 = Employee()

# Используем метод
emp1.set_name("Alice", "Smith")
emp2.set_name("Bob", "Brown")

print(emp1.first_name, emp1.last_name) # Alice Smith
print(emp2.first_name, emp2.last_name) # Bob Brown


#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍711
​​tabulate | pretty-printed-таблицы в CLI

Библиотека сделает вывод датафрейма в консоль красивой. Поддерживает множество типов итерируемых объектов, может стилизовать вывод под GitHub, PSQL, LaTeX, Jira и проч. Самое оно для красоты в Google Colab.

#инструмент
@zen_of_python
🔥5👍3
Про with

with позволяет обернуть выполнение блока кода в так называемый контекстный менеджер, который автоматически управляет ресурсами. Это особенно полезно для операций, требующих явного освобождения ресурсов, таких как работа с файлами, сетевыми соединениями или базами данных:


with open('example.txt', 'r') as file:
content = file.read()
print(content)


В этом примере файл автоматически закроется после выхода из блока, даже если в процессе чтения произойдет исключение.


Как работает?

Оператор работает с объектами, реализующими протокол контекстного менеджера, то есть имеющими методы:

🔘__enter__(): выполняется при входе в блок with. Готовит ресурс и возвращает его;
🔘__exit__(): выполняется при выходе из блока. Отвечает за очистку ресурса, например, закрытие файла.


Примеры использования

Взаимодействие с базой данных:


import sqlite3

with sqlite3.connect('example.db') as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())


Соединение с базой данных будет автоматически закрыто, даже если запрос вызовет исключение.


Зачем нужен with

🔘Гарантирует, что ресурсы будут освобождены после использования;
🔘Устраняет необходимость в явных блоках try / finally;
🔘Позволяет корректно обрабатывать исключения и освобождать ресурсы даже в случае ошибок;
🔘Повышение читаемости.

#основы
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31
Как тестировать перенос и трансформацию данных без боли

В статье на Tproger представили практичный и понятный подход к тестированию ETL-процессов с использованием Python, Pytest и фикстур. Автор — Data QA, поделилась опытом автоматизации создания и наполнения таблиц, хранением схем и данных в JSON, а также сравнением результатов до и после трансформации.

Проект с минимальным стеком — pytest, allure и psycopg2. Статья будет полезна разработчикам и тестировщикам.

#основы
@zen_of_python
👍2