Сравнение производительности dict() и {} в Python
Какое-то время назад, во время разбора кода, мы обсудили выбор
Это заставило меня задуматься: в чём разница между типом
https://habr.com/ru/articles/788440/
original https://madebyme.today/blog/python-dict-vs-curly-brackets/
Мы в MAX
👉@BookPython
Какое-то время назад, во время разбора кода, мы обсудили выбор
dict()
вместо {}
в новом коде на Python. Коллега утверждал, что dict()
более читаем и чётче выражает предназначение кода, поэтому следует предпочесть его. Меня это не убедило, но в тот момент контраргументов не нашлось, поэтому я воздержался.Это заставило меня задуматься: в чём разница между типом
dict
и литеральным выражением {}
?https://habr.com/ru/articles/788440/
original https://madebyme.today/blog/python-dict-vs-curly-brackets/
Мы в MAX
👉@BookPython
👍3❤1
Что такое хуки? Как они используются в Python?
Хуки (hooks) в программировании — это специальные точки в коде, в которые можно «вклиниться», чтобы изменить или расширить поведение программы без модификации её исходного кода. Хуки позволяют добавлять дополнительную логику или выполнять нужные действия, когда происходят определенные события.
⚫️ Как хуки используются в Python?
В Python хуки часто реализуются в библиотеках и фреймворках для того, чтобы пользователи могли добавлять свои функции, выполняющиеся при определённых событиях. Они применяются в тестировании, веб-разработке, обработке данных и многих других областях. Вот несколько примеров использования хуков в Python:
1. Тестовые фреймворки (например, pytest):
В тестовом фреймворке pytest есть хуки для настройки и завершения тестов. Вы можете создать функции, которые будут выполняться до начала тестов (
2. Веб-фреймворки (например, Django):
В Django хуки используются для расширения поведения, например, перед или после сохранения объекта. Так, у моделей Django есть хуки
3. Flask (перед/после обработки запроса):
Flask имеет хуки
4. Логирование и обработка ошибок:
Встроенный модуль
Хуки гибкие и удобные, поскольку они позволяют разработчику интегрировать собственную логику в существующий код, не изменяя его.
Мы в MAX
👉@BookPython
Хуки (hooks) в программировании — это специальные точки в коде, в которые можно «вклиниться», чтобы изменить или расширить поведение программы без модификации её исходного кода. Хуки позволяют добавлять дополнительную логику или выполнять нужные действия, когда происходят определенные события.
В Python хуки часто реализуются в библиотеках и фреймворках для того, чтобы пользователи могли добавлять свои функции, выполняющиеся при определённых событиях. Они применяются в тестировании, веб-разработке, обработке данных и многих других областях. Вот несколько примеров использования хуков в Python:
1. Тестовые фреймворки (например, pytest):
В тестовом фреймворке pytest есть хуки для настройки и завершения тестов. Вы можете создать функции, которые будут выполняться до начала тестов (
pytest_runtest_setup
) или после их завершения (pytest_runtest_teardown
). Это удобно для создания и очистки тестовой среды.
# Пример hook-функции в pytest
def pytest_runtest_setup(item):
print(f"Setting up for test: {item.name}")
2. Веб-фреймворки (например, Django):
В Django хуки используются для расширения поведения, например, перед или после сохранения объекта. Так, у моделей Django есть хуки
pre_save
и post_save
, которые позволяют выполнять код до и после сохранения объекта в базе данных.
from django.db.models.signals import pre_save
from django.dispatch import receiver
from .models import MyModel
@receiver(pre_save, sender=MyModel)
def my_hook(sender, instance, **kwargs):
print("This runs before saving MyModel instance.")
3. Flask (перед/после обработки запроса):
Flask имеет хуки
before_request
и after_request
, которые позволяют выполнить код до обработки HTTP-запроса или после отправки ответа.
from flask import Flask
app = Flask(__name__)
@app.before_request
def before_request_func():
print("This runs before each request")
@app.after_request
def after_request_func(response):
print("This runs after each request")
return response
4. Логирование и обработка ошибок:
Встроенный модуль
logging
в Python поддерживает хуки для настраиваемой обработки логов, например, через методы addFilter
или создание своих обработчиков (handlers
), чтобы настроить кастомное поведение логирования.Хуки гибкие и удобные, поскольку они позволяют разработчику интегрировать собственную логику в существующий код, не изменяя его.
Мы в MAX
👉@BookPython
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Что такое «сырые» строки (Raw Strings) в Python?
В Python "сырые" строки (или raw strings) — это строки, в которых символы обратного слэша
Сырые строки удобны, когда вам нужно использовать много обратных слэшей, например, в путях к файлам или регулярных выражениях, где
Пример использования
В первом случае
Мы в MAX
👉@BookPython
В Python "сырые" строки (или raw strings) — это строки, в которых символы обратного слэша
\
воспринимаются буквально, а не как специальные символы (например, \n
для новой строки, \t
для табуляции и т. д.). Они обозначаются префиксом r
перед строкой, например: r"строка"
.Сырые строки удобны, когда вам нужно использовать много обратных слэшей, например, в путях к файлам или регулярных выражениях, где
\
часто встречается. Сырые строки упрощают код и помогают избежать ошибок, связанных с экранированием символов.Пример использования
# Обычная строка
print("C:\\new_folder\\file.txt") # Выводит: C:\new_folder\file.txt
# Сырая строка
print(r"C:\new_folder\file.txt") # Выводит: C:\new_folder\file.txt
В первом случае
\\
используется для экранирования, чтобы Python не воспринял \n
как символ новой строки. В случае сырой строки r"..."
, экранирование не нужно, так как \
воспринимается буквально.Мы в MAX
👉@BookPython
👍5❤2
Самый быстрый способ чтения Excel в Python: чтение 500 тысяч строк менее чем за 4 секунды
У меня нет данных, чтобы подтвердить это утверждение, но я почти уверен, что Excel — самый распространённый способ хранения, обработки и, да(!), даже передачи данных. Именно поэтому нередко приходится работать с Excel в Python. Недавно мне понадобилось это сделать, и я протестировал и оценил несколько способов чтения файлов Excel в Python.
https://hakibenita.com/fast-excel-python#results-summary
Мы в MAX
👉@BookPython
У меня нет данных, чтобы подтвердить это утверждение, но я почти уверен, что Excel — самый распространённый способ хранения, обработки и, да(!), даже передачи данных. Именно поэтому нередко приходится работать с Excel в Python. Недавно мне понадобилось это сделать, и я протестировал и оценил несколько способов чтения файлов Excel в Python.
https://hakibenita.com/fast-excel-python#results-summary
Мы в MAX
👉@BookPython
👍4
Декораторы Python: пошаговое руководство
Понимание декораторов является важной вехой для любого программиста Python. Эта статья представляет собой пошаговое руководство о том, как декораторы могут помочь вам стать более эффективным и продуктивным разработчиком на Python.
Декораторы в Python позволяют расширять и изменять поведение вызываемых объектов (функций, методов и классов) без постоянного изменения самого вызываемого объекта.
Любая достаточно общая функциональность, которую можно «прикрепить» к поведению существующего класса или функции, является отличным примером использования декораторов.
Сюда входит:
- журналирование,
- обеспечение контроля доступа и аутентификации,
- инструментарий и функции управления временем,
- ограничение скорости,
- кэширование и многое другое.
Rus https://habr.com/ru/companies/otus/articles/727590/
Eng https://dbader.org/blog/python-decorators
Мы в MAX
👉@BookPython
Понимание декораторов является важной вехой для любого программиста Python. Эта статья представляет собой пошаговое руководство о том, как декораторы могут помочь вам стать более эффективным и продуктивным разработчиком на Python.
Декораторы в Python позволяют расширять и изменять поведение вызываемых объектов (функций, методов и классов) без постоянного изменения самого вызываемого объекта.
Любая достаточно общая функциональность, которую можно «прикрепить» к поведению существующего класса или функции, является отличным примером использования декораторов.
Сюда входит:
- журналирование,
- обеспечение контроля доступа и аутентификации,
- инструментарий и функции управления временем,
- ограничение скорости,
- кэширование и многое другое.
Rus https://habr.com/ru/companies/otus/articles/727590/
Eng https://dbader.org/blog/python-decorators
Мы в MAX
👉@BookPython
👍2
UV
Чрезвычайно быстрый менеджер пакетов и проектов на языке Python, написанный на Rust.
Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.
https://astral.sh/blog/uv
https://github.com/astral-sh/uv
Мы в MAX
👉@BookPython
Чрезвычайно быстрый менеджер пакетов и проектов на языке Python, написанный на Rust.
Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.
https://astral.sh/blog/uv
https://github.com/astral-sh/uv
Мы в MAX
👉@BookPython
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
Блок
Вывод:
Мы в MAX
👉@BookPython
else
для выражений for
и try
используется довольно редко. Однако, комбинируя их вместе, можно написать код, который выполняет итерацию по коллекции до первого успешного результата без использования дополнительных флагов.
import logging
from typing import List, Optional
logging.basicConfig(level=logging.DEBUG)
def first_int(iterable: List[str]) -> Optional[int]:
for x in iterable:
try:
result = int(x)
except ValueError:
logging.debug('Bad int: %s', x)
else:
break
else:
result = None
logging.error('No int found')
return result
print(first_int(('a', 'b', '42', 'c')))
Вывод:
DEBUG:root:Bad int: a
DEBUG:root:Bad int: b
42
Мы в MAX
👉@BookPython
👍1👎1