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

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

РКН clck.ru/3Ko7Hq
Download Telegram
Чтение и запись файлов MS Word с помощью модуля Python-Docx

В этой статье вы узнаете, как в Python считывать и записывать файлы MS Word.
Существует несколько библиотек, которые можно использовать для чтения и записи в Python файлов MS Word. Мы будем использовать модуль python-docx .
Подробнее
👍8🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
С чего начать путь в IT? Так ли хорош Python в качестве первого языка для изучения программирования? И какие карьерные перспективы ждут питониста?

Об этом и многом другом онлайн-встреча с Валентином Хомутенко, старшим наставником программы «Python-разработчик» на Хекслете, бэкенд-инженером в Avito.

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

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

🎉Среди участников, присутствующих на встрече, разыграем грант в размере 50% стоимости нашей полной программы по обучению Python-разработке.
Встречаемся онлайн, 31 марта, в 20:00 по Москве. Участие бесплатное. Регистрируйтесь по ссылке!
👍4
In Python, you can override square brackets operator ([]) by defining __getitem__ magic method. The example is Cycle object that virtually contains an infinite number of repeated elements:

class Cycle:
def __init__(self, lst):
self._lst = lst

def __getitem__(self, index):
return self._lst[index % len(self._lst)]

print(Cycle(['a', 'b', 'c'])[100]) # prints 'b'


The unusual thing here is [] operator supports a unique syntax. It can be used not only like this — [2], but also like this — [2:10], or [2:10:2], or [2::2], or even [:]. The semantic is [start:stop:step] but you can use it any way you want for your custom objects.

But what __getitem__ gets as an index parameter if you call it using that syntax? The slice objects exist precisely for this case.

In : class Inspector:
...: def __getitem__(self, index):
...: print(index)
...:
In : Inspector()[1]
1
In : Inspector()[1:2]
slice(1, 2, None)
In : Inspector()[1:2:3]
slice(1, 2, 3)
In : Inspector()[:]
slice(None, None, None)


You can even combine tuple and slice syntaxes:

In : Inspector()[:, 0, :]
(slice(None, None, None), 0, slice(None, None, None))


slice is not doing anything for you except simply storing start, stop and step attributes.

In : s = slice(1, 2, 3)
In : s.start
Out: 1
In : s.stop
Out: 2
In : s.step
Out: 3
👍5
If you want to ignore some exception, you probably do something like this:

try:
lst = [1, 2, 3, 4, 5]
print(lst[10])
except IndexError:
pass


That will work (without printing anything), but contextlib let you do the same more expressively and semantically correct:

from contextlib import suppress
with suppress(IndexError):
lst = [1, 2, 3, 4, 5]
lst[10]
👍17
In Python, range() defines all integers in a half-open interval. So range(2, 10) means, speaking mathematically, [2, 10). Or, speaking Python, [2, 3, 4, 5, 6, 7, 8, 9].

Despite asymmetry, that is not a mistake nor an accident. It makes perfect sense since it allows you to glue together two adjacent intervals without risk of one-off errors:

[a, c) = [a, b) + [b, c)

Compare to closed intervals that feel more “natural”:

[a, c] = [a, b] + [b+1, c]

This is also a reason for indexing to start from zero: range(0, N) has exactly N elements.

Dijkstra wrote an excellent article on the subject back in 1982.
👍7
Не можете продлить нужный сервис, оплатить хостинг или получить деньги из-за рубежа?

Ребята из rk.finaxe.ru тоже столкнулись с данной проблемой и запустили сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана.

Для чего это нужно:
— Оплата любых зарубежных сервисов и покупок
— Получение денег из-за рубежа
— Использование в путешествиях

Весь процесс проходит онлайн, от вас потребуется только загранпаспорт, даже вставать с дивана не понадобится!

Оформить заявку
и ознакомиться с FAQ можно в боте:
https://t.me/Robokazakh_bot
🔥4
Forwarded from Python академия
Работа с процессами в Python

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

Подробнее

Подписывайтесь на канал 👉@pythonofff
👍8
Sometimes you need to know the size of a generator without retrieving the actual values. Some generators support len(), but this is not the rule:

In : len(range(10000))
Out: 10000

In : gen = (x ** 2 for x in range(10000))
In : len(gen)
...
TypeError: object of type 'generator' has no len()


The straightforward solution is to use an intermediate list:

In : len(list(gen))
Out: 10000


Though fully functional, this solution requires enough memory to store all the yielded values. The simple idiom allows to avoid such a waste:

In : sum(1 for _ in gen)
Out: 10000
👍6👎1
Сбор данных с обходом капчи посредством PYAUTOGUI, KERAS и TENSORFLOW

Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).

Подробнее
👍4
Forwarded from Python академия
Итерирование с использованием функции enumerate

Функция range позволяет получить только индексы элементов списка. Функция enumerate генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.

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

Подписывайтесь на канал 👉@pythonofff
👍13
Forwarded from Python академия
Разница между == и is

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

Итак, оператор == проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.

Подписывайтесь на канал 👉@pythonofff
👍12🔥1
If you have a CPU-heavy task and want to utilize all the cores you have, then multiprocessing.Pool is for you. It spawns multiple processes and delegates tasks to them automatically. Simply create a pool with Pool(number_of_processes) and run p.map with the list of inputs.

In : import math
In : from multiprocessing import Pool
In : inputs = [i ** 2 for i in range(100, 130)]
In : def f(x):
...: return len(str(math.factorial(x)))
...:

In : %timeit [f(x) for x in inputs]
1.44 s ± 19.2 ms per loop (...)

In : p = Pool(4)
In : %timeit p.map(f, inputs)
451 ms ± 34 ms per loop (...)
👍7
Forwarded from Python академия
Как проверить существование переменной в Python?

Вы можете использовать in locals() или in globals(), чтобы проверить переменная существует в Python, разница только:

in locals() проверяет если переменная объявлена в локальной зоне видимости
in globals() проверяет если переменная объявлена в глобальной зоне видимости

Подписывайтесь на канал 👉@pythonofff
👍6🔥1
Присоединяйся к команде VK!

Новый продукт без legacy кода, современный стэк технологий. Возможность роста в тимлида или архитектора, внутренние курсы и ревью кода от коллег.

– Уверенное знание Python
– Опыт работы от 2-х лет
– Опыт работы с реляционными СУБД
– Отличное знание базовых алгоритмов и структур данных, понимание архитектурных паттернов
– Понимание и практический опыт построения API для веб-приложений
👍6👎6
Как обойти капчу: нейросеть на Tensorflow,Keras,python v числовая зашумленная капча

Тема капч не нова, тем не менее, алгоритмы капч меняются, как и алгоритмы их решения. Поэтому, предлагается помянуть старое и прооперировать следующий вариант капчи

Подробнее
👍3
You can use any object as a dictionary key in Python as long as it implements the __hash__ method. This method can return any integer as long as the only requirement is met: equal objects should have equal hashes (not vice versa).

You also should avoid using mutable objects as keys, because once the object becomes not equal to the old self, it can't be found in a dictionary anymore.

There is also one bizarre thing that might surprise you during debugging or unit testing:

In : class A:
...: def __init__(self, x):
...: self.x = x
...:
...: def __hash__(self):
...: return self.x
...:
In : hash(A(2))
Out: 2
In : hash(A(1))
Out: 1
In : hash(A(0))
Out: 0
In : hash(A(-1)) # sic!
Out: -2
In : hash(A(-2))
Out: -2


In CPython -1 is internally reserved for error states, so it's implicitly converted to -2.
👍2🔥2
Forwarded from Python академия
Изучаем две мощные функции map и filter, а также затрагиваем тему анонимных lambda-функций

Эти две функции - очень мощные инструменты в Python, которые входят в тему функционального программирования. Зачастую вместе с ними используют анонимные lambda-функции.

Подробнее

Подписывайтесь на канал 👉@pythonofff
👍4
VR и AR есть не только за рубежом, но и в России!

Что нового происходит в сфере VR/AR в нашей стране? Как эти технологии помогают бизнесу, промышленности и образованию? Какие кейсы реализовываются и какие крупные компании уже используют виртуальную и дополненную реальность? 

Первый и единственный VR/AR-дайджест новостей российского рынка —  «Вестник VR»
👍6
Как работать с числами с плавающей точкой в Python

Числа с плавающей точкой — быстрый и эффективный способ хранения чисел и работы с ними. Но он связан с рядом трудностей для начинающих и опытных программистов! Вот классический пример:

>>> 0.1 + 0.2 == 0.3
False
Впервые увидев такое, можно растеряться. Такое поведение корректно! Поговорим о том, почему ошибки при операциях над числами с плавающей точкой так распространены, почему они возникают и как с ними справиться в Python.
👍5
PEP 424 allows generators and other iterable objects that don't have the exact predefined size to expose a length hint. For example, the following generator will likely return ~50 elements:

(x for x in range(100) if random() > 0.5)

If you write an iterable and want to add the hint, define the __length_hint__ method. If the length is known for sure, use __len__ instead.

If you use an iterable and want to know its expected length, use operator.length_hint.
👍5