Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.78K photos
75 videos
51 files
4.36K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
#codeexample

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

<type> = type(<el>) # <class 'int'> / <class 'str'> / ...
from numbers import Integral, Rational, Real, Complex, Number
<bool> = isinstance(<el>, Number)
Pipenv: будущее управления зависимостями в Python
Этот доклад посвящен истории создания пакетов Python, инструментам, которые были исторически доступны для развертывания приложений, проблемам / ограничениям, представленным ими, и представляет собой целостное решение многих из этих проблем: Pipenv.

Speaker: Kenneth Reitz

https://prglb.ru/51s6g
Как Вам, наверняка, известно, инструменты Python поддерживают функциональное программирование

#полезностьдня

Применяем функцию к каждому элементу последовательности:
<iter> = map(lambda x: x + 1, range(10)) # (1, 2, ..., 10)

Отфильтруем элементы последовательности, которые больше 5:
<iter> = filter(lambda x: x > 5, range(10)) # (6, 7, 8, 9)

Следующая функция вычисляет сумму элементов последовательности:
from functools import reduce
<int> = reduce(lambda out, x: out + x, range(10)) # 45
Flask Web Development
Автор: Мигель Гринберг

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

#книгадня

Примеры:
https://prglb.ru/3ppwv

Скачать книгу:
https://t.me/progbook/2396
29 Python-проектов, оказавших огромное влияние на разработку
Пишете код на Python? Собрали для вас подборку полезных Python-проектов, которые спасали разработчиков на протяжении 2018 года.

#статьядня

https://prglb.ru/4jjlq
#codeexample

Разработчики Python обычно инициализируют словарь по-разному:

foo = {}
foo = dict()


Безусловно, результат тот же, но давайте погрузимся глубже:

timeit.timeit('{}', number=10**8)
2.65754420599842
timeit.timeit('dict()', number=10**8)
6.245466648993897


Похоже, что вторая инициализация словаря, по крайней мере, в два раза медленнее.
Давайте посмотрим, почему это происходит, используя модуль dis, который позволяет проверять внутренности байт-кода python:

dis.dis('foo={}')
1 0 BUILD_MAP 0
2 STORE_NAME 0 (foo)
4 LOAD_CONST 0 (None)
6 RETURN_VALUE
dis.dis('foo=dict()')
1 0 LOAD_NAME 0 (dict)
2 CALL_FUNCTION 0
4 STORE_NAME 1 (foo)
6 LOAD_CONST 0 (None)
8 RETURN_VALUE


Ответ очевиден - всякий раз, когда вы предпочитаете dict () вместо {}, вы теряете дополнительное время на вызов избыточной функции.
Но в большинстве приложений на Python это не имеет значения, потому что мы имеем дело с микросекундами. Во всяком случае - имейте в виду.
​​С 11 по 29 марта пройдет серия бесплатных онлайн-конференций по программированию. Ведущие специалисты страны поделятся своими знаниями и секретами.

Регистрация уже началась 👉 https://goo.gl/t1bhNG

Узнай о том, как:
✔️ правильно выбрать язык программирования;
✔️ программировать на Python, Java, C#;
✔️ создать сайт;
✔️ написать приложение и др.

Успей присоединиться — количество бесплатных мест ограничено!
PyTorch является одним из основных инструментов, используемых в наши дни для изучения машинного обучения. Он разрабатывался в бета-режиме уже более 2 лет, но в октябре этого года был выпущен кандидат на выпуск версии 1.0! В этом выступлении автор кратко представит библиотеку, а затем перейдет к демонстрации новейших функций.

#видеодня

EVENT: PyData Warsaw 2018
Speaker: Adam Paszke

https://prglb.ru/4swyq
​​Библиотека Matplotlib построена на принципах ООП, но имеет процедурный интерфейс pylab, который предоставляет аналоги команд MATLAB

#youtubeдня

https://prglb.ru/5ezs6
Когда вы пишете надежный код, тесты необходимы для проверки правильности, надежности и эффективности логики вашего приложения. Однако ценность ваших тестов зависит от того, насколько хорошо они демонстрируют эти критерии. Препятствия, такие как сложная логика и непредсказуемые зависимости, затрудняют написание ценных тестов. Библиотека фиктивных объектов Python, unittest.mock, может помочь вам преодолеть эти препятствия.

#статьядня

https://prglb.ru/3lsbb
👍1
#codeexample

Python 3.5+ позволяет передавать несколько наборов
аргументов ключевого слова («kwargs») для функции в пределах одного вызова, используя синтаксис «»:

def process_data(a, b, c, d):
print(a, b, c, d)
 x = {'a': 1, 'b': 2}
y = {'c': 3, 'd': 4}


process_data(**x, **y)
# 1 2 3 4


process_data(**x, c=23, d=42)
#1 2 23 42
​​​​The Quick Python Book
Автор: Naomi Ceder

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

#книгадня

Скачать книгу:
https://t.me/progbook/2626
​​Самый полный видеокурс по Django от установки до проекта
Занимательный видеокурс по Django на примере создания интернет-магазина.

#статьядня

https://prglb.ru/2vfep
Когда вы разветвляете свой процесс, случайное начальное число, которое вы используете, копируется между процессами. Это может привести к тому, что процессы будут давать одинаковый «случайный» результат.

Чтобы избежать этого, вы должны вручную вызывать random.seed() в каждом процессе.

Однако, если вы используете multiprocessing, он делает это за вас.

import multiprocessing
import random
import os
import sys
                            
def test(a):                       
    print(random.choice(a), end=' ')
                                   
# a = [1, 2, 3, 4, 5]

for _ in range(5):
    test(a)
print()

for _ in range(5):                 
    p = multiprocessing.Process(   
        target=test, args=(a,))
    p.start()                      
    p.join()                       
print()                            

for _ in range(5):
    pid = os.fork()
    if pid == 0:
        test(a)
        sys.exit()
    else:
        os.wait()
print()


# Результат:
4 4 4 5 5
1 4 1 3 3
2 2 2 2 2

Более того, если вы используете Python 3.7 или новее,  os.fork делает то же самое, благодаря новому хуку at_fork.

Вывод приведенного выше кода для Python 3.7:
1 2 2 1 5
4 4 4 5 5
2 4 1 3 1
​​Инструменты Python: лучшая шпаргалка для начинающих
Большая шпаргалка для питониста на любой случай. Рассмотрены основные инструменты Python с примерами. Осторожно: много кода!

#статьядня

https://prglb.ru/1gzq2
Управление несколькими версиями Python с помощью pyenv

Из данной статьи вы узнаете:
Установите несколько версий Python
Установите последнюю версию Python для разработки
Переключение между установленными версиями
Используйте виртуальные среды с pyenv
Активируйте разные версии Python и виртуальные среды автоматически

#статьядня

https://prglb.ru/j69v
Как создать приложение с графическим интерфейсом Python с помощью wxPython

- Начало работы с wxPython
- Определение GUI
- Создание скелетного приложения
- Создание рабочего приложения

#статьядня

https://prglb.ru/22iq4
Будущие питонисты и те, кто уже вышел на этот тернистый путь)
У нас появился канал с вакансиями специально для Вас!
Подписывайтесь и следите за обновлениями, а мы постараемся радовать Вас только самыми свежими и интересными предложениями на рынке!

Ждем Вас здесь: @pydevjob
Библиотека питониста | Python, Django, Flask pinned «Будущие питонисты и те, кто уже вышел на этот тернистый путь) У нас появился канал с вакансиями специально для Вас! Подписывайтесь и следите за обновлениями, а мы постараемся радовать Вас только самыми свежими и интересными предложениями на рынке! Ждем…»