Библиотека 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. Для сравнения можно использовать следующие функции:

reduce() и map();
collection.counter();
sort() вместе с оператором ==;
set() вместе с оператором ==;
List Comprehension.
Both for and with can be asynchronous. async with uses __aenter__ and __aexit__ magic methods, async for uses __aiter__ and __anext__. All of them are async and you can await within them:

import asyncio

class Sleep:
def __init__(self, t):
self._t = t

async def __aenter__(self):
await asyncio.sleep(self._t / 2)

async def __aexit__(self, *args):
await asyncio.sleep(self._t / 2)

async def main():
async with Sleep(2):
print('*')

loop = asyncio.get_event_loop()
loop.run_until_complete(main())


When you implement __iter__ you often don't write an iterator with __next__ method, you just use yield that makes __iter__ a generator:

class Bracketed:
def __init__(self, data):
self._data = data

def __iter__(self):
for x in self._data:
yield '({})'.format(x)

print(list(Bracketed([1, 2, 3])))
# ['(1)', '(2)', '(3)']


PEP 525 allows you do the same with __aiter__. Both yield and await in the function body make it asynchronous generator. While await is used to communicate with the loop, yield deals with for:

import asyncio

class Slow:
def __init__(self, data, t=1):
self._data = data
self._t = t

async def __aiter__(self):
for x in self._data:
await asyncio.sleep(self._t)
yield x

async def main():
async for x in Slow([1, 2, 3]):
print(x)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Consider the following class hierarchy:

class GrandParent:
pass

class Parent1(GrandParent):
pass

class Parent2(GrandParent):
pass

class Child(Parent1, Parent2):
pass


Which order will be used to look up the Child.x() method? The naive approach is to recursively search through all parent classes which gives us Child, Parent1, GrandParent, Parent2. While many programming languages follow this method indeed, it doesn't quite make sense, because Parent2 is more specific than GrandParent and should be looked up first.

In order to fix that problem, Python uses C3 superclass linearization, the algorithm that always searches for a method in all child classes before looking up the parent one:

In : Child.__mro__
Out:
(__main__.Child,
__main__.Parent1,
__main__.Parent2,
__main__.GrandParent,
object)
Forwarded from Реальный Python
Пять отличных Python-библиотек для data science

https://nuancesprog.ru/p/8431/

👉 @python_real
​Awesome Python Books

Большинство платных книг, почти все ссылки ведут на amazon.

Содержание:
• Учебные книги
• Структуры и алгоритмы данных
• Разработка игр
• Hardware
• Машинное обучение
• Глубокое обучение
• Обработка естественного языка
• Сети
• Data Analysis
• Безопасность
• SQL и ORM
• Системное администрирование
• Тестирование
• Веб-разработка
• Web Scraping

https://github.com/Junnplus/awesome-python-books
Подборка интересных каналов 🔥

DeepFake
На канале публикуем deepfake видео и связанные с ними технологии.
https://t.me/deepfakenow

Мир технологий (Technology World)
Добро пожаловать в мир технологий
https://t.me/mir_teh

GitHub Сообщество
https://t.me/Githublib

Реальный Python
Все о пайтон, новости, подборки на русском и английском.
https://t.me/python_real

BigData
Data Science : Big Data : Machine Learning : Deep Learning
https://t.me/bigdata_1

Базы данных (Data Base)
https://t.me/database_info

Книги для программистов Rus
https://t.me/book_for_dev

DevOps
Пишем о Docker, Kubernetes и др.
https://t.me/i_DevOps

Типичный Сисадмин
Админский юмор, фото железа, было/стало, все здесь!
https://t.me/tipsysdmin

Python академия
Учи Python быстро и легко.
https://t.me/pythonofff

Coddy
Академия кода.
https://t.me/coddy_academy

Bitkoinoff - новости криптовалют
Все самое важное о криптовалютах и блокчейне
https://t.me/bitkoinoff

Сообщество Дизайнеров
https://t.me/ux_web

GameDev: разработка игр
https://t.me/game_devv
Forwarded from Python академия
Как удалить каждый второй элемент списка в python?

Вы можете использовать индексирование [::2] (2 означает шаг) для удаления каждого второго элемента.

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

print(array[::2])

# Вывод : [1, 3, 5, 7, 9]


Подписывайтесь на канал 👉@pythonofff
Letting direct access to an object attributes may be not the best idea. If clients communicate with the object via methods, you can always modify how every request is processed while with direct attribute access it may be not possible.

Different languages deal with that problem in different ways. In Ruby, it's syntactically impossible to access an attribute directly, obj.x is a call of the x method. In Java, it's recommended to make all attributes private and write trivial getters instead: public int getX() { return this.x }.

Python offers a solution that is somehow similar to that that Ruby has. You can define property so obj.x invokes a method instead of returning the x attribute directly.

class Example:
def __init__(self, x):
self._x = x

@property
def x(self):
return self._x
Как подружить Redis, сову и глобус? Кто выживет: Django или FasAPI?

Ответы на эти и другие вопросы можно будет получить 27 апреля в 18:00 на митапе TechnoMeetsPython. Будем обсуждать Redis, FastAPI, SQLAlchemy и asynсio. Среди спикеров

🔹 Павел Мальцев из сервиса Speechki с темой: «Redis, сова и глобус»
🔹 Никита Архипов из Технократии с темой: «Проблемы и практики FastAPI, SQLAlchemy и asynсio»

Экспертами выступят: Дарья Плотникова из СберМаркета и Альбина Альмухаметова из Технократии. Также организуем круглый стол, за которым поговорим на тему «FastAPI vs Django. Останется только один?».

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

Зарегистрироваться тут
Напоминалка о митапе тут
Forwarded from Реальный Python
Как конвертировать PDF-файлы в PNG с помощью Python

https://nuancesprog.ru/p/12485/

👉 @python_real
This media is not supported in your browser
VIEW IN TELEGRAM
Graphs in Python: Breadth-First Search (BFS) Algorithm

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

Из-за их широкого использования поиск и обход графов играют важную вычислительную роль. Два фундаментальных, взаимодополняющих и вводных алгоритма, используемых для поиска и обхода графов, - это поиск в глубину (Depth-First Search, DFS) и поиск в ширину (Breadth-First Search, BFS).

https://stackabuse.com/graphs-in-python-breadth-first-search-bfs-algorithm/
Python: подготовительный 14-дневный курс: https://bit.ly/3EODqmZ

12 учебных модулей, 69 уроков с практикой в браузере, вебинары и лайвкодинг. Помощь наставника. 990 ₽ за всё!
Начало 27 апреля!
A Tour of Python's itertools Library (Экскурсия по библиотеке Python itertools)

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

В этой статье вы рассмотрите примеры каждого строительного блока, чтобы к концу вы поняли, как использовать их в своем коде.
Sometimes you want to clear a collection in Python. You probably something like d = {} (for dictionaries) but it's not exactly clearing, it's creating a new collection and throwing the old one away. It may work for you, but other owners of the same object will still have a reference to the original one.

The proper way to clear dictionary, set, deque and other collections is to call x.clear().
Проект для комфортной релокации айтишников GeeckoMove

Помощь в релокации: от оформления документов до трудоустройства.

Узнать больше @RelocationDEV