Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
try
используется для обработки исключений и предотвращения аварийного завершения программы. Код внутри try
выполняется, и если возникает ошибка, управление передается в блок except
, где можно обработать исключение.
try:
result = 10 / 0 # Попытка деления на ноль
except ZeroDivisionError:
result = "Ошибка: деление на ноль" # Обработка исключения
print(result) # Выведет "Ошибка: деление на ноль
Блок
finally
можно добавить для выполнения кода независимо от того, произошло исключение или нет.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
extend()
используется для добавления элементов из одного списка в конец другого. В отличие от append()
, который добавляет весь объект как один элемент, extend()
добавляет каждый элемент итерируемого объекта по отдельности.
list1 = [1, 2, 3]
list2 = [4, 5]
list1.extend(list2) # Добавляет элементы из list2 в list1
print(list1) # Результат: [1, 2, 3, 4, 5]
Этот метод изменяет исходный список и не возвращает новый.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
yield
. В отличие от обычных функций, генератор сохраняет состояние между вызовами и не вычисляет все элементы сразу, что полезно для работы с большими объемами данных.
def generate_numbers():
for i in range(3):
yield i # Возвращает значение и приостанавливает выполнение
for num in generate_numbers():
print(num) # Поочередно выведет 0, 1, 2
Генераторы экономят память, так как элементы создаются "на лету".
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2✍2
API должен быть stateless (не сохранять состояние клиента между запросами) и поддерживать кэширование для повышения производительности. Также важно использовать коды состояния HTTP для информирования клиента о результате запроса.
# Пример URI для ресурса
/users # GET — получить список пользователей
/users/1 # GET — получить данные пользователя с ID 1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
class Component:
def operation(self):
return "Component"
class Decorator(Component):
def __init__(self, component):
self._component = component
def operation(self):
return f"Decorator({self._component.operation()})"
Декоратор оборачивает объект и добавляет новое поведение до или после вызова его методов.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
getattr()
позволяет получать значение атрибута объекта по его имени, переданному в виде строки. Это полезно, когда имя атрибута неизвестно заранее или динамически изменяется.Синтаксис:
getattr(object, name[, default])
-
object
— объект, атрибут которого нужно получить. -
name
— строка, имя атрибута. -
default
— опциональное значение, которое возвращается, если атрибут не найден. Если не указано, выбрасывается AttributeError
.Пример:
class Example:
value = 42
obj = Example()
attribute_name = 'value'
result = getattr(obj, attribute_name) # Получаем значение атрибута 'value'
print(result) # 42
Если атрибут отсутствует, можно вернуть значение по умолчанию:
result = getattr(obj, 'unknown', 'default_value') # 'default_value'
Использование
getattr()
упрощает работу с динамическими атрибутами и делает код более гибким.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Пример декоратора для логирования:
import logging
logging.basicConfig(level=logging.INFO)
def log_function_call(func):
def wrapper(*args, **kwargs):
logging.info(f"Calling {func.__name__} with args: {args}, kwargs: {kwargs}")
result = func(*args, **kwargs)
logging.info(f"{func.__name__} returned: {result}")
return result
return wrapper
@log_function_call
def add(a, b):
return a + b
add(2, 3)
- Декоратор
log_function_call
логирует начало вызова функции, переданные аргументы и результат выполнения. - Использование
@log_function_call
перед функцией автоматически добавляет логирование. Такой подход упрощает добавление логирования в любую функцию, делая код чище и поддерживаемым.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
pop()
используется для удаления и возврата элемента из списка по указанному индексу. Если индекс не указан, удаляется последний элемент.Синтаксис:
list.pop([index])
-
index
— опциональный параметр, указывающий позицию элемента. Если не указан, по умолчанию используется -1
(последний элемент). Пример:
numbers = [1, 2, 3, 4]
removed_element = numbers.pop(1) # Удаляет элемент с индексом 1
print(numbers) # [1, 3, 4]
print(removed_element) # 2
Если список пуст или индекс выходит за пределы, возникает
IndexError
. Использование
pop()
удобно для работы со стеками и удаления элементов с сохранением их значений.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
try/except
вместе с ключевым словом await
. Это позволяет перехватывать ошибки, возникающие при выполнении асинхронных операций.
async def fetch_data():
try:
response = await some_async_function()
return response
except SomeSpecificError as e:
print(f"An error occurred: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
Если асинхронная функция вызывает исключение, оно будет перехвачено в блоке
except
. Это особенно полезно при работе с сетевыми запросами или другими операциями, где возможны сбои.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
abs()
возвращает абсолютное значение числа, то есть его модуль. Она работает с целыми числами, числами с плавающей точкой и комплексными числами.
result = abs(-10) # Вернет 10
Для комплексных чисел
abs()
возвращает величину (модуль) числа:
result = abs(3 + 4j) # Вернет 5.0
Функция полезна, когда нужно игнорировать знак числа или вычислить расстояние до нуля на числовой оси.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
ся
оператор in. Он воз
вращает True, если элемент най
ден, и False, если нет.
fruits = ['apple', 'banana', 'orange']
print('banana' in fruits) # True
print('grape' in fruits) # False
Для проверки отсутствия элемента можно использ
овать
not in:
print('grape' not in fruits) # True
Этот способ работает для любых итерируемых объектов и является наиболее читаемым и эффективным для большинства случаев.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
()
, внутри которых перечисляются элементы через запятую. Если кортеж содержит один элемент, после него ставится запятая, чтобы отличить от обычного выражения в скобках.
empty_tuple = () # Пустой кортеж
single_element_tuple = (42,) # Кортеж с одним элементом
multiple_elements_tuple = (1, 2, 3) # Кортеж с несколькими элементами
Кортеж также можно создать без скобок, просто перечислив элементы через запятую:
another_tuple = 4, 5, 6
Кортежи неизменяемы, поэтому после создания их элементы нельзя изменить.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
async
и await
используются для работы с асинхронным кодом. Они позволяют писать неблокирующие операции, что особенно полезно для задач, связанных с вводом-выводом (например, сетевые запросы).async
Определяет асинхронную функцию. Такая функция возвращает корутину, которая может быть приостановлена и возобновлена.
async def fetch_data():
return "data"
await
Используется внутри асинхронной функции для ожидания результата другой асинхронной операции. Код после
await
выполняется только после завершения ожидаемой задачи.
async def main():
result = await fetch_data()
print(result)
Асинхронные функции вызываются через
asyncio.run
или внутри других асинхронных функций. Они позволяют эффективно управлять множеством задач без блокировки основного потока.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
isinstance()
позволяет проверить, принадлежит ли объект к определенному классу или типу. Это полезно для проверки типов данных и обработки различных случаев в коде.Синтаксис:
isinstance(object, classinfo)
-
object
— объект, тип которого проверяется. -
classinfo
— класс, тип или кортеж классов/типов для проверки. Пример:
value = 42
if isinstance(value, int):
print("Это целое число")
elif isinstance(value, (float, str)):
print("Это либо float, либо строка")
Функция возвращает
True
, если объект является экземпляром указанного класса или одного из классов в кортеже. Это удобно для проверки типов без явного сравнения через type()
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3