Forwarded from Библиотека питониста | Python, Django, Flask
Вебинар для Python-разработчиков с опытом.
Покажем на практике:
1. Что делать, когда ресурсов для вертикального масштабирования redis уже нет, а данных становится всё больше.
2. Как в web-разработке применяются алгоритмы консенсуса.
3. Как перемещать данные между старым и новым хранилищами и не допустить downtime.
• 6 октября в 19:00 (мск)
• 60 минут практики + 20 минут ответов на вопросы
• Бесперебойная онлайн-трансляция
Вебинар для Python-разработчиков с опытом.
Бесплатная регистрация на сайте
Покажем на практике:
1. Что делать, когда ресурсов для вертикального масштабирования redis уже нет, а данных становится всё больше.
2. Как в web-разработке применяются алгоритмы консенсуса.
3. Как перемещать данные между старым и новым хранилищами и не допустить downtime.
• 6 октября в 19:00 (мск)
• 60 минут практики + 20 минут ответов на вопросы
• Бесперебойная онлайн-трансляция
Вебинар для Python-разработчиков с опытом.
Бесплатная регистрация на сайте
Forwarded from Библиотека питониста | Python, Django, Flask
Python Interviews: Discussions with Python Experts (2018)
Автор: Michael Driscoll
Количество страниц: 368
В книге содержатся двадцать разных интервью по Python, приведенные различными практиками из индустрии, от авторов пакетов до data scientist-ов. Вы ознакомитесь с трендами в программировании, изучите историю языка и поймете, как мыслят успешные опытные программисты.
Скачать книгу
Автор: Michael Driscoll
Количество страниц: 368
В книге содержатся двадцать разных интервью по Python, приведенные различными практиками из индустрии, от авторов пакетов до data scientist-ов. Вы ознакомитесь с трендами в программировании, изучите историю языка и поймете, как мыслят успешные опытные программисты.
Скачать книгу
Telegram
Книги для программистов (reserved)
Python Interviews: Discussions with Python Experts (2018)
Автор: Michael Driscoll
Автор: Michael Driscoll
Forwarded from Pythonist.ru - образование по питону
Django. Оптимизация работы с базой данных
В этой статье мы поделимся с вами несколькими советами по оптимизации запросов к базе данных.
Читать статью
#django
В этой статье мы поделимся с вами несколькими советами по оптимизации запросов к базе данных.
Читать статью
#django
Forwarded from Библиотека питониста | Python, Django, Flask
Mastering Large Datasets with Python (2020)
Автор: John T. Wolohan
Количество страниц: 312
Современные решения для анализа данных должны быть чистыми, удобными для чтения и масштабируемыми. В своей книге автор учит тому, как можно взять небольшой проект и масштабировать его, используя функционально зависимый подход в программировании на Python. Вы изучите методы и встроенные инструменты Python, которые обеспечивают ясность и масштабируемость, такие как высокопроизводительный метод параллелизма, а также распределенные технологии, обеспечивающие высокую пропускную способность в работе с данными. Большие упражнения в этом практическом руководстве закрепят полученные важные навыки, которые пригодятся в любом крупномасштабном проекте в области науки о данных.
Скачать книгу
Автор: John T. Wolohan
Количество страниц: 312
Современные решения для анализа данных должны быть чистыми, удобными для чтения и масштабируемыми. В своей книге автор учит тому, как можно взять небольшой проект и масштабировать его, используя функционально зависимый подход в программировании на Python. Вы изучите методы и встроенные инструменты Python, которые обеспечивают ясность и масштабируемость, такие как высокопроизводительный метод параллелизма, а также распределенные технологии, обеспечивающие высокую пропускную способность в работе с данными. Большие упражнения в этом практическом руководстве закрепят полученные важные навыки, которые пригодятся в любом крупномасштабном проекте в области науки о данных.
Скачать книгу
Telegram
Книги для программистов (reserved)
Mastering Large Datasets with Python (2020)
Автор: John T. Wolohan
Автор: John T. Wolohan
Forwarded from Библиотека питониста | Python, Django, Flask
Числа в Python
В этом руководстве вы узнаете о числах и основах математики в Python. Вы изучите целые числа, числа с плавающей запятой и комплексные числа и увидите, как выполнять вычисления с использованием арифметических операторов Python, математических функций и числовых методов.
https://proglib.io/w/98f451a2
В этом руководстве вы узнаете о числах и основах математики в Python. Вы изучите целые числа, числа с плавающей запятой и комплексные числа и увидите, как выполнять вычисления с использованием арифметических операторов Python, математических функций и числовых методов.
https://proglib.io/w/98f451a2
Realpython
Numbers in Python – Real Python
In this tutorial, you'll learn about numbers and basic math in Python. You'll explore integer, floating-point numbers, and complex numbers and see how perform calculations using Python's arithmetic operators, math functions, and number methods.
Forwarded from Python Academy
Forwarded from Библиотека питониста | Python, Django, Flask
Realpython
Python Practice Problems: Get Ready for Your Next Interview – Real Python
In this tutorial, you'll prepare for future interviews by working through a set of Python practice problems that commonly appear in coding tests. You'll work through the problems yourself and then compare your results with solutions developed by the Real…
Forwarded from Тесты по Python
Тест по Python для веб разработчика. Вопросы легкие. Уровень Junior-Middle.
Проходите и поймите готовы ли вы к курсам: https://otus.pw/vFGT/
Проходите и поймите готовы ли вы к курсам: https://otus.pw/vFGT/
Forwarded from Python Lounge: работа и стажировки для программистов
Использование списков в качестве стеков
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
Методы встроенного списка в Python позволяют очень легко использовать список в виде стека. Чтобы добавить элемент на вершину стека, используйте
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу 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
Forwarded from Python Lounge: работа и стажировки для программистов
Switch-конструкция с помощью словаря
К сожалению, в Python не существует switch-конструкций, в отличие от большинства других языков программирования, и поэтому приходится строить башни из условных операторов в своём коде.
Однако есть одно хитрое решение — использовать словарь, где значениями будут функции. Например, напишем словарь, который будет использован для математических операторов.
В этом примере были использованы lambda-функции для простоты, но вместо них можете подставить любые другие. Для тех, кто не знает: lambda - объявление анонимной функции (можно косвенно сравнить с def); x, y - принимаемые аргументы; x + y - то, что функция возвращает.
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
К сожалению, в 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
Примерно вот так мы можем пользоваться подобной штукой. Думаю, что многие найдут полезное применение подобному использованию словарей.
Forwarded from Python Lounge: работа и стажировки для программистов
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Итак, нам требуется такой класс, который будет при вызове возвращать один и тот же экземпляр, поэтому нам придется переопределить магический метод new.
new__(cls, *args, **kwargs) –– вызывается для создания экземпляра класса, перед вызовом __init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
То есть при вызове конструктора класса 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
Forwarded from Python Lounge: работа и стажировки для программистов
Изменение списка во время итерации по нему
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода ниже:
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
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]
Forwarded from Python Lounge: работа и стажировки для программистов
Аннотации типов
Всем известно, что Python – язык с динамической типизацией. Аннотации типов нужны для того, чтобы повысить информативность исходного кода, но они никак не влияют на поведение программы.
Для примера потребуется импортировать типы
Типы данных указывается через двоеточие после именно переменной после её создания. Создадим словарь с числами и сразу же список, состоящий из значений этого словаря:
Потом создадим функцию, возвращающую сумму переданных значений. В аргументах точно так же можно указывать их типы, а также через стрелочку можно указать типа возвращаемого значения:
Теперь используем эту функцию, передав туда распакованный список:
Однако помните, что аннотации типов не влияют на ход исполнения программы, поэтому в ранее написаную функцию мы с таким же успехом можем передать и строки, хотя указывали целочисленный типа данных:
Всем известно, что 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'
Forwarded from Python Lounge: работа и стажировки для программистов
Реализация класса контекстного менеджера
Начнем с того, что в контекстном менеджере должны быть определены методы enter и exit. Давайте создадим наш собственный менеджер контекста для открытия файлов и поймем суть его работы.
Просто определив методы enter и exit, мы можем использовать наш новый класс с оператором
Наш метод exit принимает три аргумента. Они требуются для каждого метода exit, который является частью класса.
# test
Начнем с того, что в контекстном менеджере должны быть определены методы 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
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
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
🎯 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
В данном руководстве будет разобрано использование 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
Наш чат: @python_scripts
Scrapy является фреймворком, что прекрасно подойдет для скрапинга веб сайтов. Он без особых проблем справляется с самыми популярными случаями веб скрапинга.
Главное отличие между Scrapy и другими популярными библиотеками, такими как Requests или BeautifulSoup, заключается в том, что он позволяет решать обычные задачи веб скрапинга при помощи самых элегантных методов.
Подробнее: https://python-scripts.com/scrapy-example