Операции над множествами в Python
Операции над множествами в Python реализуются с помощью встроенного типа данных
Множества — это неупорядоченные коллекции уникальных элементов. Python предоставляет несколько полезных операций над множествами, таких как объединение, пересечение, разность и симметрическая разность.
Примеры основных операций над множествами в Python:
Создание множества
Объединение множеств (
Объединение возвращает множество, содержащее все элементы обоих множеств.
Пересечение множеств (
Пересечение возвращает множество, содержащее только общие элементы двух множеств.
Разность множеств (
Разность возвращает множество, содержащее элементы, которые находятся только в одном множестве.
Симметрическая разность множеств (
Симметрическая разность возвращает множество, содержащее элементы, которые находятся в одном из множеств, но не в обоих сразу.
Проверка подмножества (
Возвращает
Проверка надмножества (
Возвращает
Проверка пересечения множеств (
Возвращает
Добавление элемента в множество
Удаление элемента из множества
👉@BookPython
Операции над множествами в 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
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
Лучше всего посмотреть на примере:
Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.
Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
👉@BookPython
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
Лучше всего посмотреть на примере:
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
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
В этой статье я расскажу о лучших практиках настройки веб-серверов 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
Все началось с коллеги, который закинул в локальный чат сообщение, что он сыграл в игру #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
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
Numba — это Just-In-Time компилятор, который превращает ваш код на питоне в машинный код на лету. Это не просто мелкая оптимизация, а серьёзно ускорение.
Если вы знакомы с интерпретируемыми языками, вы знаете, что они обычно медленнее компилируемых из-за необходимости анализировать и исполнять код на лету. Но что, если бы вы могли получить лучшее из обоих миров? JIT-компиляция позволяет интерпретируемому языку, каким является питон, динамически компилировать части кода в машинный код, значительно ускоряя исполнение.
Numba использует этот подход, чтобы помочь вашему коду на питоне быть быстрей. Она анализирует вашу функцию, определяет типы данных и затем компилирует её в оптимизированный машинный код. И всё это происходит во время выполнения вашего кода.
https://habr.com/ru/companies/otus/articles/784068/
👉@BookPython
Что делает функция seed() модуля random
Функция
Пример использования:
Основные моменты:
- Если вызвать
- Если
Таким образом, использование
👉@BookPython
Функция
seed()
в модуле random
в Python используется для инициализации генератора случайных чисел. По умолчанию генератор случайных чисел использует текущее системное время, чтобы генерировать случайные числа, но если задать определённое значение с помощью функции seed()
, последовательность случайных чисел станет предсказуемой.Пример использования:
import random
random.seed(10)
print(random.random()) # Всегда будет генерировать одно и то же число
Основные моменты:
- Если вызвать
random.seed()
с одним и тем же значением несколько раз, генератор будет создавать одну и ту же последовательность случайных чисел.- Если
seed()
не вызывается или вызывается без аргументов, генерация случайных чисел будет происходить на основе текущего времени или другого системного источника.Таким образом, использование
seed()
полезно, когда требуется воспроизвести результаты, например, в тестах или для отладки.👉@BookPython
Шпаргалка по Python. Часть 1
1. Основы работы с коллекциями
#### Списки (List) и генераторы списков:
- Быстрая инициализация списка:
- Использование
- Развертывание списка (spreading):
#### Словари (Dict):
- Генерация словаря:
- Объединение двух словарей:
#### Множества (Set):
- Операции с множествами:
2. Работа с файлами
#### Чтение и запись:
#### Управление JSON:
3. Декораторы
#### Простой декоратор:
#### Декоратор с аргументами:
4. Итераторы и генераторы
#### Создание итератора:
#### Генераторы:
#### Генераторы с обработкой состояния:
5. Менеджеры контекста
#### Создание собственного менеджера контекста:
#### Менеджеры контекста с
6. Асинхронное программирование
#### Асинхронные функции и
#### Запуск нескольких задач одновременно:
👉@BookPython
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
Системное администрирование 📌
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. Работа с исключениями
#### Множественные исключения:
#### Создание своих исключений:
8. Операции с числами и математикой
#### Округление и точные вычисления:
#### Математические операции:
9. Модули и пакеты
#### Импортирование модулей:
#### Динамический импорт:
10. Тестирование
#### Unittest:
#### Pytest:
11. Работа с данными и библиотеками
#### NumPy для работы с массивами:
#### Pandas для работы с табличными данными:
12. Полезные утилиты
- Enumerate для индексации:
- Zip для объединения списков:
- Comprehensions для работы со сложными структурами данных:
👉@BookPython
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
За свою карьеру я использовал сотни 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
GitHub
How to (and how not to) design REST APIs
Jeff Schnitzer's Blog. Contribute to stickfigure/blog development by creating an account on GitHub.
Расскажите про области видимости переменных в Python
В Python область видимости переменной определяет, где эта переменная доступна для использования. Существуют несколько уровней областей видимости, которые можно описать через аббревиатуру LEGB:
1. Local (локальная область):
- Это переменные, определённые внутри функции. Они доступны только в пределах этой функции.
- Пример:
2. Enclosing (охватывающая область):
- Переменные, определённые в функциях внешнего уровня по отношению к вложенным функциям. Эти переменные доступны вложенным функциям.
- Пример:
3. Global (глобальная область):
- Это переменные, определённые на уровне модуля, вне каких-либо функций. Они доступны во всём модуле.
- Чтобы изменить глобальную переменную внутри функции, нужно использовать ключевое слово
- Пример:
4. Built-in (встроенная область):
- Это встроенные в Python функции и имена, такие как
- Пример:
Правила поиска переменной (LEGB)
Когда вы обращаетесь к переменной, Python ищет её значение в следующем порядке:
1. Local: Ищет в локальной области.
2. Enclosing: Ищет в охватывающей области, если функция вложена.
3. Global: Ищет среди глобальных переменных модуля.
4. Built-in: Ищет среди встроенных имён.
Таким образом, Python будет использовать ближайшую переменную в соответствии с этим порядком.
👉@BookPython
В 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, желающий узнать больше, руководство эксперта может дополнить знания, полученные из книги.
👉@BookPython
Функции как объекты в Python
В Python функции являются объектами первого класса, что означает, что их можно присваивать переменным, передавать как аргументы другим функциям, возвращать из других функций и хранить в структурах данных, таких как списки или словари.
Рассмотрим основные аспекты использования функций как объектов:
1. Присваивание функции переменной
Вы можете присвоить функцию переменной и вызывать её через эту переменную.
2. Передача функции в качестве аргумента
Функцию можно передать как аргумент другой функции.
3. Возврат функции из другой функции
Функция может возвращать другую функцию.
4. Хранение функций в структурах данных
Функции можно хранить в списках, словарях и других структурах данных.
5. Анонимные функции (lambda)
Вы можете создавать функции "на лету" с помощью выражения
Таким образом, функции в Python могут использоваться гибко и динамически, что позволяет писать более функциональный и модульный код.
👉@BookPython
В 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
Содержание:
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
Под "структурой" мы понимаем решения, которые вы принимаете относительно того, как ваш проект наилучшим образом достигает своей цели. Нам нужно рассмотреть, как лучше всего использовать возможности 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
Какое-то время назад, во время разбора кода, мы обсудили выбор 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
➡️ Сохраняйте себе, чтобы не потерять
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
🐞 Тестирование: @QAPortal
Please open Telegram to view this post
VIEW IN TELEGRAM