#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Вебинар для Python-разработчиков с опытом.

Покажем на практике:

1. Что делать, когда ресурсов для вертикального масштабирования redis уже нет, а данных становится всё больше.

2. Как в web-разработке применяются алгоритмы консенсуса.

3. Как перемещать данные между старым и новым хранилищами и не допустить downtime.

• 6 октября в 19:00 (мск)
• 60 минут практики + 20 минут ответов на вопросы
• Бесперебойная онлайн-трансляция

Вебинар для Python-разработчиков с опытом.
Бесплатная регистрация на сайте
Python Interviews: Discussions with Python Experts (2018)
Автор: Michael Driscoll
Количество страниц: 368

В книге содержатся двадцать разных интервью по Python, приведенные различными практиками из индустрии, от авторов пакетов до data scientist-ов. Вы ознакомитесь с трендами в программировании, изучите историю языка и поймете, как мыслят успешные опытные программисты.

Скачать книгу
Django. Оптимизация работы с базой данных

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

Читать статью

#django
Mastering Large Datasets with Python (2020)
Автор: John T. Wolohan
Количество страниц: 312

Современные решения для анализа данных должны быть чистыми, удобными для чтения и масштабируемыми. В своей книге автор учит тому, как можно взять небольшой проект и масштабировать его, используя функционально зависимый подход в программировании на Python. Вы изучите методы и встроенные инструменты Python, которые обеспечивают ясность и масштабируемость, такие как высокопроизводительный метод параллелизма, а также распределенные технологии, обеспечивающие высокую пропускную способность в работе с данными. Большие упражнения в этом практическом руководстве закрепят полученные важные навыки, которые пригодятся в любом крупномасштабном проекте в области науки о данных.

Скачать книгу
Числа в Python

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

https://proglib.io/w/98f451a2
Forwarded from Python Academy
Символы Юникода

Добавлять юникод-символы в строковые литералы можно не только с помощью их номеров, но и по их названиям.

Более того, такая запись символов юникода совместима и с f-строками, а это очень удобно.

#строки #юникод
Forwarded from Тесты по Python
Тест по Python для веб разработчика. Вопросы легкие. Уровень Junior-Middle.

Проходите и поймите готовы ли вы к курсам: https://otus.pw/vFGT/
Использование списков в качестве стеков

Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).

Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте append(). Чтобы извлечь элемент из верхней части стека, используйте pop() без явного индекса. Пример:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack
[3, 4, 5]
>>> stack.pop()
5
Switch-конструкция с помощью словаря

К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.

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

switch = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}

В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.

result = switch['*'](4, 5)
print(result)
# Output: 20

Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
Паттерн проектирования Singleton

Одиночка или же синглтон
– это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.

Итак, нам требуется такой класс, который будет при вызове возвращать один и тот же экземпляр, поэтому нам придется переопределить магический метод new.

new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

class Singleton:
instance = None

def __new__(cls):
if cls.instance is None:
cls.instance = super().__new__(cls)

return cls.instance

Здесь мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.

a = Singleton()
b = Singleton()

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

print(a is b) # True
Изменение списка во время итерации по нему

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

odd = lambda x: bool(x % 2) # функция проверки числа на нечетность

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in range(10):
  if odd(numbers[i]):
    del numbers[i] # удаление элемента из списка во время итерации по нему

# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range

Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.

К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:

odd = lambda x: bool(x % 2) # функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

numbers = [n for n in numbers if not odd(n)] # генератор нового списка
print(numbers)

# Output:
[2, 4, 6, 8, 10]
Аннотации типов

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

Для примера потребуется импортировать типы List (список) и Dict (словарь) из модуля typing:

from typing import List, Dict

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

numbers: Dict[str, int] = {'one': 1, 'two': 2}
values: List[int] = numbers.values()

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

def sum(a: int, b: int) -> int:
return a + b

Теперь используем эту функцию, передав туда распакованный список:

sum(*values)
# Output: 3

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

sum('Python ', 'Lounge')
# Output: 'Python Lounge'
Реализация класса контекстного менеджера

Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.

class NewOpen(object):
   def __init__(self, file_name, mode):
       self.file = open(file_name, mode)
   def __enter__(self):
       return self.file
   def __exit__(self, type, value, traceback):
       self.file.close()


Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором with. Давайте попробуем:

with NewOpen('test.txt', 'w') as file:
   file.write('Hello, world!')

Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.

# test
Forwarded from Python Academy
Дробные числа

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

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

Поэтому для идеальных вычислений лучше использовать Fraction, который представляет и хранит число в виде рациональной дроби.

#числа #fraction
Forwarded from # pip install (Student B.)
Знакома ли вам ситуация, когда программа Python должна выполняться не сразу? В большинстве случаев требуется, чтобы код запускался как можно скорее. Однако порой перед работой оптимальнее будет дать программе немного поспать.

🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

Содержание статьи
1. Вызов sleep() через time.sleep()
2. Вызов sleep() с декораторами
3. Вызов sleep() в потоках
4. Использование time.sleep() в threading
5. Использование Event.wait() в многопоточности Python
6. Вызов sleep() в Async IO
7. Вызов sleep() в Tkinter и wxPython
8. Метод after() — Погружение в сон для Tkinter
9. Метод CallLater() — Погружение в сон для wxPython Python

Подробнее: https://python-scripts.com/sleep
Forwarded from # pip install (Student B.)
🔥 Как хешировать пароли в Python?

В данном руководстве будет разобрано использование PBKDF2_HMAC для шифрования паролей вместе с солью в Python.

🎯 Telegram Чат: @python_scripts

Содержание статьи:
1. Зачем нужно хешировать пароли?
2. Почему не стоит использовать SHA-256 или нечто похожее
3. Хеширование паролей с pbkdf2_hmac
4. Генерация соли в Python
5. Хеширование в Python
6. Хранение хеша и соли
7. Проверка правильности пароля в Python
8. Пример регистрации пользователя с проверкой пароля

Подробнее: https://python-scripts.com/haslib-pbkdf2-check-password
Forwarded from # pip install (Student B.)
🔵 Scrapy — Простой веб скрапинг
Наш чат: @python_scripts

Scrapy является фреймворком, что прекрасно подойдет для скрапинга веб сайтов. Он без особых проблем справляется с самыми популярными случаями веб скрапинга.

Главное отличие между Scrapy и другими популярными библиотеками, такими как Requests или BeautifulSoup, заключается в том, что он позволяет решать обычные задачи веб скрапинга при помощи самых элегантных методов.

Подробнее: https://python-scripts.com/scrapy-example