🤔 Что такое курсор и зачем он нужен?
Курсор — это механизм построчного чтения данных из результата запроса. Используется, когда:
- нужно обрабатывать большие объемы данных постепенно;
- необходима пошаговая обработка внутри хранимой процедуры или скрипта.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Курсор — это механизм построчного чтения данных из результата запроса. Используется, когда:
- нужно обрабатывать большие объемы данных постепенно;
- необходима пошаговая обработка внутри хранимой процедуры или скрипта.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Что такое деструктор класса?
Это специальный метод, который вызывается автоматически, когда объект класса уничтожается. В Python этот метод называется
🚩Определение и использование деструктора
Определяется внутри класса с помощью метода
🟠Класс
🟠Метод
🟠Деструктор
🚩Создание и уничтожение объекта
Когда объект класса создается, вызывается конструктор. Когда объект больше не нужен, вызывается деструктор:
🚩Важные замечания
🟠Сборка мусора
Python использует механизм сборки мусора для автоматического управления памятью. Когда объект больше не используется (например, нет активных ссылок на него), сборщик мусора удаляет объект и вызывает его деструктор.
🟠Неопределенное время вызова
Точное время вызова деструктора зависит от работы сборщика мусора. Это означает, что нельзя гарантировать момент вызова деструктора. Поэтому для критических операций лучше использовать явное управление ресурсами, например, с помощью контекстных менеджеров (
🟠Контекстные менеджеры
Для явного управления ресурсами и их освобождения в предсказуемый момент лучше использовать контекстные менеджеры.
Ставь 👍 и забирай 📚 Базу знаний
Это специальный метод, который вызывается автоматически, когда объект класса уничтожается. В Python этот метод называется
__del__(). Деструктор используется для выполнения операций очистки, таких как освобождение ресурсов или выполнение завершающих действий перед тем, как объект будет удален из памяти.🚩Определение и использование деструктора
Определяется внутри класса с помощью метода
__del__(). class FileManager:
def __init__(self, filename):
self.file = open(filename, 'w')
print(f"Файл {filename} открыт для записи.")
def write_data(self, data):
self.file.write(data)
def __del__(self):
self.file.close()
print("Файл закрыт.")
🟠Класс
FileManager имеет конструктор __init__(), который открывает файл для записи.🟠Метод
write_data() записывает данные в файл.🟠Деструктор
__del__() закрывает файл, когда объект FileManager уничтожается.🚩Создание и уничтожение объекта
Когда объект класса создается, вызывается конструктор. Когда объект больше не нужен, вызывается деструктор:
manager = FileManager('example.txt')
manager.write_data('Hello, world!')
# Когда объект manager больше не нужен, вызывается деструктор и файл закрывается🚩Важные замечания
🟠Сборка мусора
Python использует механизм сборки мусора для автоматического управления памятью. Когда объект больше не используется (например, нет активных ссылок на него), сборщик мусора удаляет объект и вызывает его деструктор.
🟠Неопределенное время вызова
Точное время вызова деструктора зависит от работы сборщика мусора. Это означает, что нельзя гарантировать момент вызова деструктора. Поэтому для критических операций лучше использовать явное управление ресурсами, например, с помощью контекстных менеджеров (
with).🟠Контекстные менеджеры
Для явного управления ресурсами и их освобождения в предсказуемый момент лучше использовать контекстные менеджеры.
with open('example.txt', 'w') as file:
file.write('Hello, world!')
# Файл автоматически закрывается после выхода из блока withСтавь 👍 и забирай 📚 Базу знаний
🤔 Как в одной команде проиндексировать все файлы и добавить коммит?
Это делается одной строкой, в которой последовательно добавляются все файлы в индекс и сразу создаётся коммит. Такой приём используется для быстрого фиксации всех изменений без необходимости вручную указывать файлы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это делается одной строкой, в которой последовательно добавляются все файлы в индекс и сразу создаётся коммит. Такой приём используется для быстрого фиксации всех изменений без необходимости вручную указывать файлы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊11🤔1
🔥 Скрытые вакансии с удаленной работой для Python разработчика, которые нигде больше не публикуются. Напрямую от компаний, с контактами рекрутеров.
🔹 Python Jobs | Вакансии
🔹 Data Science ML | Вакансии
🔹 Golang Go Jobs | Вакансии
🔸 Все каналы с вакансиями
🔹 Python Jobs | Вакансии
🔹 Data Science ML | Вакансии
🔹 Golang Go Jobs | Вакансии
🔸 Все каналы с вакансиями
💊1
🤔 Что такое Host?
Host (хост) — это устройство или сервер, подключённый к сети, который может предоставлять или запрашивать данные.
🚩Где используется `Host`?
🟠В HTTP-запросах (заголовок `Host`)
Когда браузер запрашивает сайт, он отправляет заголовок
🟠В настройке DNS и доменных имён
Host — это доменное имя, привязанное к IP-адресу.
-
-
🟠3. В локальной сети (локальные хосты)
Внутри сети устройства тоже считаются хостами (
Ставь 👍 и забирай 📚 Базу знаний
Host (хост) — это устройство или сервер, подключённый к сети, который может предоставлять или запрашивать данные.
GET /index.html HTTP/1.1
Host: example.com
🚩Где используется `Host`?
🟠В HTTP-запросах (заголовок `Host`)
Когда браузер запрашивает сайт, он отправляет заголовок
Host, чтобы сервер знал, какой сайт нужно отдать. GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0
🟠В настройке DNS и доменных имён
Host — это доменное имя, привязанное к IP-адресу.
-
example.com → 192.168.1.100 -
mail.example.com → 192.168.1.101 127.0.0.1 mysite.local
🟠3. В локальной сети (локальные хосты)
Внутри сети устройства тоже считаются хостами (
192.168.1.10, 192.168.1.20). localhost (127.0.0.1) — это всегда локальный компьютер.Ставь 👍 и забирай 📚 Базу знаний
🤔 Как реализуются метод объекта?
1. Методы объекта определяются внутри класса и автоматически получают ссылку на текущий объект в виде аргумента self.
2. Они могут обращаться к атрибутам объекта и вызывать другие методы через self.
3. Пример: def example_method(self): предоставляет доступ к объекту, на котором вызван метод.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
1. Методы объекта определяются внутри класса и автоматически получают ссылку на текущий объект в виде аргумента self.
2. Они могут обращаться к атрибутам объекта и вызывать другие методы через self.
3. Пример: def example_method(self): предоставляет доступ к объекту, на котором вызван метод.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊2
🤔 В чем отличия pytz от datetime?
🟠`datetime` – встроенный модуль Python
Модуль
🟠`pytz` – внешний модуль для работы с часовыми поясами
Библиотека
🚩Как работать с часовыми поясами правильно?
Создание
Конвертация времени между часовыми поясами
Использование UTC (лучший подход для серверов)
Ставь 👍 и забирай 📚 Базу знаний
🟠`datetime` – встроенный модуль Python
Модуль
datetime позволяет работать с датами и временем, но по умолчанию он не поддерживает часовые пояса.from datetime import datetime
dt = datetime.now() # Получаем текущую дату и время
print(dt) # Например: 2024-02-28 14:30:00.123456
print(dt.tzinfo) # None (нет информации о часовом поясе)
🟠`pytz` – внешний модуль для работы с часовыми поясами
Библиотека
pytz добавляет поддержку часовых поясов и позволяет работать с разными временными зонами. from datetime import datetime
import pytz
tz = pytz.timezone("Europe/Moscow") # Часовой пояс Москвы
dt = datetime.now(tz) # Получаем текущее время с учетом часового пояса
print(dt) # Например: 2024-02-28 17:30:00+03:00
print(dt.tzinfo) # Europe/Moscow
🚩Как работать с часовыми поясами правильно?
Создание
datetime с часовым поясом pytz dt = datetime(2024, 2, 28, 15, 0) # Наивная дата
tz = pytz.timezone("Europe/Moscow")
dt = tz.localize(dt) # Присваиваем часовой пояс
print(dt) # 2024-02-28 15:00:00+03:00
Конвертация времени между часовыми поясами
ny_tz = pytz.timezone("America/New_York")
ny_time = dt.astimezone(ny_tz)
print(ny_time) # Конвертированное время в Нью-ЙоркеИспользование UTC (лучший подход для серверов)
utc_now = datetime.now(pytz.UTC) # Текущее время в UTC
print(utc_now) # Например: 2024-02-28 14:30:00+00:00
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Как устроен словарь?
Словарь (dict) реализован как хеш-таблица. Ключи хешируются с помощью hash() и связываются с соответствующим значением.
Доступ к элементам происходит быстро (в среднем за O(1)).
Ключи должны быть хешируемыми (обычно неизменяемыми типами).
С Python 3.7+ порядок вставки элементов сохраняется.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Словарь (dict) реализован как хеш-таблица. Ключи хешируются с помощью hash() и связываются с соответствующим значением.
Доступ к элементам происходит быстро (в среднем за O(1)).
Ключи должны быть хешируемыми (обычно неизменяемыми типами).
С Python 3.7+ порядок вставки элементов сохраняется.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2
🤔 Как в Python происходит поиск переменной по области видимости?
В Python поиск переменной происходит по правилу LEGB, которое определяет порядок поиска в четырёх областях видимости:
Пример работы LEGB
Вывод
🚩Глобальные переменные (`global`)
Если нужно изменить глобальную переменную внутри функции, используем
🚩Переменные из внешней функции (`nonlocal`)
Если в вложенной функции нужно изменить переменную из enclosing-области, используем
🚩Что если переменная отсутствует во всех областях?
Если переменная не найдена в LEGB, Python выдаст
Ошибка
🚩`Built-in` — встроенные функции
Python в последнюю очереде проверяет встроенные функции (
Ставь 👍 и забирай 📚 Базу знаний
В Python поиск переменной происходит по правилу LEGB, которое определяет порядок поиска в четырёх областях видимости:
Пример работы LEGB
x = "глобальная" # Global
def outer():
x = "охватывающая" # Enclosing
def inner():
x = "локальная" # Local
print(x) # Поиск начинается отсюда (L)
inner()
outer()
Вывод
локальная
🚩Глобальные переменные (`global`)
Если нужно изменить глобальную переменную внутри функции, используем
globalx = 10 # Глобальная переменная
def modify_global():
global x
x = 20 # Меняем глобальную переменную
modify_global()
print(x) # 20
🚩Переменные из внешней функции (`nonlocal`)
Если в вложенной функции нужно изменить переменную из enclosing-области, используем
nonlocaldef outer():
x = 10 # Переменная из enclosing-области
def inner():
nonlocal x
x = 20 # Меняем `x` в `outer()`
inner()
print(x) # 20
outer()
🚩Что если переменная отсутствует во всех областях?
Если переменная не найдена в LEGB, Python выдаст
NameErrordef func():
print(y) # Ошибка: y не объявлена!
func()
Ошибка
NameError: name 'y' is not defined
🚩`Built-in` — встроенные функции
Python в последнюю очереде проверяет встроенные функции (
print(), len(), sum() и т. д.). print = "Ошибка!" # Переопределили встроенную функцию
print("Hello") # TypeError: 'str' object is not callable
Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Как работают операторы global и nonlocal?
Global позволяет объявить, что переменная в функции ссылается на глобальную переменную, а не создаёт локальную. Nonlocal указывает, что переменная находится в охватывающем, но не глобальном контексте — это полезно во вложенных функциях и замыканиях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Global позволяет объявить, что переменная в функции ссылается на глобальную переменную, а не создаёт локальную. Nonlocal указывает, что переменная находится в охватывающем, но не глобальном контексте — это полезно во вложенных функциях и замыканиях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний