Библиотека Python разработчика | Книги по питону
19.5K subscribers
1.05K photos
392 videos
82 files
988 links
Полезные материалы для питониста по Фреймворкам Django, Flask, FastAPI, Pyramid, Tornado и др.

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
Операции над множествами в Python

Операции над множествами в Python реализуются с помощью встроенного типа данных set.
Множества — это неупорядоченные коллекции уникальных элементов. Python предоставляет несколько полезных операций над множествами, таких как объединение, пересечение, разность и симметрическая разность.

Примеры основных операций над множествами в Python:

Создание множества

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}


Объединение множеств (union)
Объединение возвращает множество, содержащее все элементы обоих множеств.

c = a.union(b)
# или можно использовать оператор |
c = a | b
print(c) # {1, 2, 3, 4, 5, 6}


Пересечение множеств (intersection)
Пересечение возвращает множество, содержащее только общие элементы двух множеств.

c = a.intersection(b)
# или можно использовать оператор &
c = a & b
print(c) # {3, 4}


Разность множеств (difference)
Разность возвращает множество, содержащее элементы, которые находятся только в одном множестве.

c = a.difference(b)
# или можно использовать оператор -
c = a - b
print(c) # {1, 2}


Симметрическая разность множеств (symmetric_difference)
Симметрическая разность возвращает множество, содержащее элементы, которые находятся в одном из множеств, но не в обоих сразу.

c = a.symmetric_difference(b)
# или можно использовать оператор ^
c = a ^ b
print(c) # {1, 2, 5, 6}


Проверка подмножества (issubset)
Возвращает True, если все элементы одного множества содержатся в другом множестве.

c = {1, 2}
print(c.issubset(a)) # True


Проверка надмножества (issuperset)
Возвращает True, если множество содержит все элементы другого множества.

print(a.issuperset(c)) # True


Проверка пересечения множеств (isdisjoint)
Возвращает True, если два множества не содержат общих элементов.

print(a.isdisjoint(b)) # False


Добавление элемента в множество

a.add(5)
print(a) # {1, 2, 3, 4, 5}


Удаление элемента из множества

a.remove(5)
print(a) # {1, 2, 3, 4}


👉@BookPython
Что делает класс ChainMap() модуля collections

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

Лучше всего посмотреть на примере:

d1 = dict(a=1, b=3)
d2 = dict(a=2, b=4, c=6)

from collections import ChainMap

chain = ChainMap(d1, d2)
print(chain['a']) # -> 1
print(chain['c']) # -> 6



Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.

Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:

chain['c'] = -1
print(d1) # -> {'a': 1, 'b': 3, 'c': -1}
print(d2) # -> {'a': 2, 'b': 4, 'c': 6}


👉@BookPython
Media is too big
VIEW IN TELEGRAM
Как я устроился Python разработчиком без опыта. Реальное собеседование

00:00 Новогоднее вступление
00:42 Асинхронное программирование
01:16 Мультитрединг, мультипроцессинг
02:40 Микросервисы
04:30 Вопросы по питону
06:21 Лайфкодинг
08:17 Сложность алгоритма

источник

👉@BookPython
Тонкая настройка приложений Python WSGI и ASGI для Flask, Django и FastAPI

В этой статье я расскажу о лучших практиках настройки веб-серверов Python, таких как Gunicorn, Uvicorn и Hypercorn. Мы расскажем об архитектуре всех программных компонентов, которые находятся между вашим Python-кодом и пользователями. Мы также коснемся методов проверки, таких как нагрузочное тестирование, чтобы убедиться, что ваша конфигурация выдерживает некоторый пользовательский трафик.

https://tonybaloney.github.io/posts/fine-tuning-wsgi-and-asgi-applications.html

👉@BookPython
Локализуем игру в слова с искусственным интеллектом

Все началось с коллеги, который закинул в локальный чат сообщение, что он сыграл в игру #59 и угадал слово с 33 попыток и одной подсказки. Игра оказалась простая и сложная одновременно: сайт загадал слово и нужно его отгадать. В поле ввода отправляешь слово, а искусственный интеллект на сайте определяет, насколько отправленное слово близко по смыслу к загаданному.

Интересная игра, тренирующая ассоциативное мышление и умение строить связи. Новое слово появляется каждый день, что в некотором смысле выглядит ограничителем. Также игра доступна только на португальском и английском языках. С одной стороны, это дополнительная практика, а с другой — сомнения «а знаю ли я это слово?» смазывают впечатления от игры.

https://habr.com/ru/companies/selectel/articles/705410/

👉@BookPython
Media is too big
VIEW IN TELEGRAM
Создайте мессенджер с помощью Django (за 6 минут) 🌮

0:00 Showing the final product
0:22 Setup Django and Daphne
1:08 Add async and sync views
2:09 Add templates with EventSource
2:52 Explaining how the chat works
3:35 Explaining how sending a message works
4:19 Create models to store data
4:25 Run our server
4:42 Visit our real-time chat app
5:28 Add styling to improve UI
6:00 Benefits and mailing list for more free content

источник

👉@BookPython
Ускоряем работу python с numba

Numba — это Just-In-Time компилятор, который превращает ваш код на питоне в машинный код на лету. Это не просто мелкая оптимизация, а серьёзно ускорение.

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

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

https://habr.com/ru/companies/otus/articles/784068/

👉@BookPython
Что делает функция seed() модуля random

Функция seed() в модуле random в Python используется для инициализации генератора случайных чисел. По умолчанию генератор случайных чисел использует текущее системное время, чтобы генерировать случайные числа, но если задать определённое значение с помощью функции seed(), последовательность случайных чисел станет предсказуемой.

Пример использования:

import random

random.seed(10)
print(random.random()) # Всегда будет генерировать одно и то же число


Основные моменты:
- Если вызвать random.seed() с одним и тем же значением несколько раз, генератор будет создавать одну и ту же последовательность случайных чисел.
- Если seed() не вызывается или вызывается без аргументов, генерация случайных чисел будет происходить на основе текущего времени или другого системного источника.

Таким образом, использование seed() полезно, когда требуется воспроизвести результаты, например, в тестах или для отладки.

👉@BookPython
Шпаргалка по Python. Часть 1

1. Основы работы с коллекциями

#### Списки (List) и генераторы списков:
- Быстрая инициализация списка:

lst = [x**2 for x in range(10) if x % 2 == 0]


- Использование map и filter:

squares = list(map(lambda x: x**2, range(10)))
evens = list(filter(lambda x: x % 2 == 0, range(10)))


- Развертывание списка (spreading):

lst1 = [1, 2, 3]
lst2 = [4, 5]
combined = [*lst1, *lst2]


#### Словари (Dict):
- Генерация словаря:

dct = {x: x**2 for x in range(5)}


- Объединение двух словарей:

dct1 = {'a': 1, 'b': 2}
dct2 = {'b': 3, 'c': 4}
merged = {**dct1, **dct2} # {'a': 1, 'b': 3, 'c': 4}


#### Множества (Set):
- Операции с множествами:

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1 | set2 # Объединение
intersection = set1 & set2 # Пересечение


2. Работа с файлами

#### Чтение и запись:

with open('file.txt', 'r') as f:
content = f.read()

with open('file.txt', 'w') as f:
f.write("Hello, World!")


#### Управление JSON:

import json

data = {'key': 'value'}
with open('data.json', 'w') as f:
json.dump(data, f)

with open('data.json', 'r') as f:
data = json.load(f)


3. Декораторы

#### Простой декоратор:

def my_decorator(func):
def wrapper():
print("Before function")
func()
print("After function")
return wrapper

@my_decorator
def say_hello():
print("Hello!")

say_hello()


#### Декоратор с аргументами:

def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator

@repeat(3)
def say_hello():
print("Hello!")

say_hello()


4. Итераторы и генераторы

#### Создание итератора:

class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end

def __iter__(self):
return self

def __next__(self):
if self.current >= self.end:
raise StopIteration
self.current += 1
return self.current - 1

for num in MyIterator(1, 5):
print(num)


#### Генераторы:

def my_generator():
for i in range(3):
yield i

for value in my_generator():
print(value)


#### Генераторы с обработкой состояния:

def countdown(n):
while n > 0:
yield n
n -= 1


5. Менеджеры контекста

#### Создание собственного менеджера контекста:

class MyContextManager:
def __enter__(self):
print("Entering context")
return self

def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")

with MyContextManager():
print("Inside context")


#### Менеджеры контекста с contextlib:

from contextlib import contextmanager

@contextmanager
def my_context():
print("Entering")
yield
print("Exiting")

with my_context():
print("Inside")


6. Асинхронное программирование

#### Асинхронные функции и await:

import asyncio

async def say_hello():
print("Hello")
await asyncio.sleep(1)
print("World")

asyncio.run(say_hello())


#### Запуск нескольких задач одновременно:

async def task1():
await asyncio.sleep(1)
print("Task 1 done")

async def task2():
await asyncio.sleep(2)
print("Task 2 done")

async def main():
await asyncio.gather(task1(), task2())

asyncio.run(main())


👉@BookPython
Подборка Telegram каналов для программистов

Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин

https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Английский 📌
https://t.me/UchuEnglish Английский с нуля

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Шпаргалка по Python. Часть 2


7. Работа с исключениями

#### Множественные исключения:

try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
except Exception as e:
print(f"Unhandled error: {e}")
finally:
print("Cleanup")


#### Создание своих исключений:

class MyCustomError(Exception):
pass

raise MyCustomError("This is a custom error")


8. Операции с числами и математикой

#### Округление и точные вычисления:

import decimal
from decimal import Decimal

decimal.getcontext().prec = 4
x = Decimal('1.12345')
y = Decimal('3.14159')
print(x * y) # Результат с 4 знаками после запятой


#### Математические операции:

import math

print(math.sqrt(16)) # 4.0
print(math.factorial(5)) # 120


9. Модули и пакеты

#### Импортирование модулей:

from my_module import my_function

my_function()


#### Динамический импорт:

module_name = 'math'
module = __import__(module_name)
print(module.sqrt(16)) # 4.0


10. Тестирование

#### Unittest:

import unittest

def add(a, b):
return a + b

class TestMath(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)

if __name__ == '__main__':
unittest.main()


#### Pytest:

def add(a, b):
return a + b

def test_add():
assert add(2, 3) == 5


11. Работа с данными и библиотеками

#### NumPy для работы с массивами:

import numpy as np

a = np.array([1, 2, 3])
print(a * 2) # Умножение каждого элемента массива на 2


#### Pandas для работы с табличными данными:

import pandas as pd

data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)


12. Полезные утилиты

- Enumerate для индексации:

for index, value in enumerate(['a', 'b', 'c']):
print(index, value)


- Zip для объединения списков:

names = ['Alice', 'Bob']
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")


- Comprehensions для работы со сложными структурами данных:

matrix = [[i * j for j in range(5)] for i in range(5)]



👉@BookPython
Как разрабатывать (и как не разрабатывать) REST API

За свою карьеру я использовал сотни REST API и создал десятки. Поскольку я часто вижу одни и те же ошибки, повторяющиеся при проектировании API, я подумал, что было бы неплохо написать набор лучших практик. И посмеяться над парой широко используемых API.
Многое из этого может быть «само собой разумеющимся», но, возможно, есть несколько правил, о которых вы еще не задумывались.
Без особого порядка...

Правило №0: НЕ будьте педантичным.
Правило №1: ИСПОЛЬЗУЙТЕ существительные во множественном числе для коллекций.
Правило №2: НЕ добавляйте ненужные сегменты пути.
Правило №3: НЕ добавляйте .json или другие расширения в URL.
Правило №4: НЕ возвращайте массивы как верхнеуровневые ответы.
Правило №5: НЕ возвращайте структуры карт (map).
Правило №6: ИСПОЛЬЗУЙТЕ строки для всех идентификаторов.
Правило №7: ДОБАВЛЯЙТЕ префикс к вашим идентификаторам.
Правило №8: НЕ используйте 404 для указания «не найдено».
Правило №9: БУДЬТЕ последовательными.
Правило №10: ИСПОЛЬЗУЙТЕ структурированный формат ошибок.
Правило №11: ПРЕДОСТАВЛЯЙТЕ механизмы идемпотентности.
Правило №12: ИСПОЛЬЗУЙТЕ строки ISO8601 для отметок времени.

https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs

👉@BookPython
Расскажите про области видимости переменных в Python

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

1. Local (локальная область):
- Это переменные, определённые внутри функции. Они доступны только в пределах этой функции.
- Пример:

def my_function():
x = 10 # локальная переменная
print(x)

my_function() # выведет 10
# print(x) # ошибка, переменная x не существует за пределами функции


2. Enclosing (охватывающая область):
- Переменные, определённые в функциях внешнего уровня по отношению к вложенным функциям. Эти переменные доступны вложенным функциям.
- Пример:

def outer_function():
x = 5
def inner_function():
print(x) # доступ к переменной из охватывающей области
inner_function()

outer_function() # выведет 5


3. Global (глобальная область):
- Это переменные, определённые на уровне модуля, вне каких-либо функций. Они доступны во всём модуле.
- Чтобы изменить глобальную переменную внутри функции, нужно использовать ключевое слово global.
- Пример:

x = 20 # глобальная переменная

def my_function():
global x
x = 10 # изменение глобальной переменной

my_function()
print(x) # выведет 10


4. Built-in (встроенная область):
- Это встроенные в Python функции и имена, такие как len(), sum(), print() и другие. Эти имена доступны в любой точке программы.
- Пример:

print(len([1, 2, 3])) # использует встроенную функцию len


Правила поиска переменной (LEGB)

Когда вы обращаетесь к переменной, Python ищет её значение в следующем порядке:
1. Local: Ищет в локальной области.
2. Enclosing: Ищет в охватывающей области, если функция вложена.
3. Global: Ищет среди глобальных переменных модуля.
4. Built-in: Ищет среди встроенных имён.

Таким образом, Python будет использовать ближайшую переменную в соответствии с этим порядком.

👉@BookPython
Сборник_вопросов_и_ответов_для_собеседования_по_Python.pdf
885.2 KB
Сборник вопросов и ответов для собеседования по Python

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

👉@BookPython
Функции как объекты в Python

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

Рассмотрим основные аспекты использования функций как объектов:

1. Присваивание функции переменной
Вы можете присвоить функцию переменной и вызывать её через эту переменную.


def greet(name):
return f"Hello, {name}!"

say_hello = greet # присваиваем функцию переменной
print(say_hello("Alice")) # вызов через переменную


2. Передача функции в качестве аргумента
Функцию можно передать как аргумент другой функции.


def apply_function(func, value):
return func(value)

def square(x):
return x ** 2

result = apply_function(square, 5)
print(result) # вывод: 25


3. Возврат функции из другой функции
Функция может возвращать другую функцию.


def make_multiplier(factor):
def multiplier(x):
return x * factor
return multiplier

double = make_multiplier(2)
print(double(5)) # вывод: 10


4. Хранение функций в структурах данных
Функции можно хранить в списках, словарях и других структурах данных.


def add(x, y):
return x + y

def subtract(x, y):
return x - y

operations = {
'add': add,
'subtract': subtract
}

print(operations['add'](10, 5)) # вывод: 15
print(operations['subtract'](10, 5)) # вывод: 5


5. Анонимные функции (lambda)
Вы можете создавать функции "на лету" с помощью выражения lambda.


multiply = lambda x, y: x * y
print(multiply(3, 4)) # вывод: 12


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

👉@BookPython
Статистика на примерах с Python #1

Содержание:
1.1 Общая информация
1.2 Генеральная совокупность и выборка
1.3 Типы переменных. Количественные и номинативные переменные
1.4 Меры центральной тенденции

https://habr.com/ru/articles/786760/

👉@BookPython
Как правильно структурировать Python-проект

Под "структурой" мы понимаем решения, которые вы принимаете относительно того, как ваш проект наилучшим образом достигает своей цели. Нам нужно рассмотреть, как лучше всего использовать возможности Python для создания чистого и эффективного кода. На практике "структура" означает создание чистого кода, чья логика и зависимости понятны, а также то, как файлы и папки организованы в файловой системе.

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

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

https://docs.python-guide.org/writing/structure/

👉@BookPython
Сравнение производительности dict() и {} в Python

Какое-то время назад, во время разбора кода, мы обсудили выбор dict() вместо {} в новом коде на Python. Коллега утверждал, что dict() более читаем и чётче выражает предназначение кода, поэтому следует предпочесть его. Меня это не убедило, но в тот момент контраргументов не нашлось, поэтому я воздержался.

Это заставило меня задуматься: в чём разница между типом dict и литеральным выражением {}?

Давайте изучим этот вопрос.

https://madebyme.today/blog/python-dict-vs-curly-brackets/

👉@BookPython
This media is not supported in your browser
VIEW IN TELEGRAM
Бесплатное IT-образование в 2024

Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления

Выбирайте нужное и подписывайтесь:

👩‍💻 Python: @PythonPortal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
⚙️ Backend: @BackendPortal
👩‍💻 Frontend: @FrontendPortal
👩‍💻 Java: @Java_Iibrary
👩‍💻 C#: @KodBlog
👩‍💻 С/С++: @Cpportal
🖥 Базы Данных & SQL: @SQL
👩‍💻 Golang: @juniorGolang
👩‍💻 PHP: @PHPortal
👩‍💻 Моб. разработка: @MobDev
👩‍💻 Разработка игр: @GameDevgx
👩‍💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign

➡️ Сохраняйте себе, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM