Forwarded from Zen of Python
36 способов выучить Python бесплатно (для аналитиков и не только)
Ловите подборку полезных бесплатные материалов, которые помогут изучить вам аналитику на Python, а также другие направления разработки:
https://vc.ru/education/519077-36-sposobov-vyuchit-python-besplatno-dlya-analitikov-i-ne-tolko
#подборка
Ловите подборку полезных бесплатные материалов, которые помогут изучить вам аналитику на Python, а также другие направления разработки:
https://vc.ru/education/519077-36-sposobov-vyuchit-python-besplatno-dlya-analitikov-i-ne-tolko
#подборка
Forwarded from Zen of Python
Настройка Visual Studio Code для Django
VS Code многое умеет уже из коробки, а что не умеет сам предлагает установить. Но с Django слегка иная ситуация. Здесь не работают правильном образом линтеры из коробки, да и mypy вам тут без надобности, если не «поработать напильником».
Но эти проблемы решаются файлами конфигураций соответствующих инструментов, либо готовыми плагинами для mypy и pylint. Вот о последних и пойдёт речь в этой статье:
https://habr.com/ru/post/701800/
#django #vscode
VS Code многое умеет уже из коробки, а что не умеет сам предлагает установить. Но с Django слегка иная ситуация. Здесь не работают правильном образом линтеры из коробки, да и mypy вам тут без надобности, если не «поработать напильником».
Но эти проблемы решаются файлами конфигураций соответствующих инструментов, либо готовыми плагинами для mypy и pylint. Вот о последних и пойдёт речь в этой статье:
https://habr.com/ru/post/701800/
#django #vscode
Forwarded from Zen of Python
Как создать успешный пет-проект. Инструкция для будущих «дуровых»
Многие сервисы, которые сегодня имеют миллионные и миллиардные капитализации создавались, как пет-проекты, но были настолько успешны, что переросли в бизнес. Как же авторам удалось так развить свои идеи?
В этой статье собрали для вас 10 советов, которые помогут вам создать успешный пет-проект, который не только ваши навыки прокачать поможет, но и сможет стать популярным:
https://tproger.ru/articles/kak-sozdat-uspeshnyj-pet-proekt-instrukcija-dlja-budushhih-cukerbergov-i-durovyh/
Многие сервисы, которые сегодня имеют миллионные и миллиардные капитализации создавались, как пет-проекты, но были настолько успешны, что переросли в бизнес. Как же авторам удалось так развить свои идеи?
В этой статье собрали для вас 10 советов, которые помогут вам создать успешный пет-проект, который не только ваши навыки прокачать поможет, но и сможет стать популярным:
https://tproger.ru/articles/kak-sozdat-uspeshnyj-pet-proekt-instrukcija-dlja-budushhih-cukerbergov-i-durovyh/
Forwarded from Zen of Python
API-интерфейс Django REST в одном файле
REST API является очень распространённым вариантом использования с Django сегодня. Но такое взаимодействие уместно при большом и сложном API, а вот при маленьком можно обойтись и встроенные в Django инструментами, не создавая лишних файлов и сложностей.
Подробнее об этом:
https://adamj.eu/tech/2020/10/15/a-single-file-rest-api-in-django/
#django #restapi
REST API является очень распространённым вариантом использования с Django сегодня. Но такое взаимодействие уместно при большом и сложном API, а вот при маленьком можно обойтись и встроенные в Django инструментами, не создавая лишних файлов и сложностей.
Подробнее об этом:
https://adamj.eu/tech/2020/10/15/a-single-file-rest-api-in-django/
#django #restapi
Forwarded from Zen of Python
Data Science на Python для начинающих
Это видео научит вас почти всему, что вам нужно знать для анализа данных и построения модели машинного обучения. Смотрите в оригинале, с субтитрами или переведите его с помощью Яндекс.
https://youtu.be/BqfM9eeD6KA?list=PL7mOFdpoBB6QiW3_n7aKn_eHTCCftPJLw
#видео #datascience
Это видео научит вас почти всему, что вам нужно знать для анализа данных и построения модели машинного обучения. Смотрите в оригинале, с субтитрами или переведите его с помощью Яндекс.
https://youtu.be/BqfM9eeD6KA?list=PL7mOFdpoBB6QiW3_n7aKn_eHTCCftPJLw
#видео #datascience
Forwarded from Zen of Python
Как работать с процессами и потоками в Python
Эта статья будет полезна тем разработчикам, которые хотят выполнять больше работы за одно и то же время, и задействовать все ресурсы своего железа. Проще говоря, делать больше, и при этом обходиться меньшими ресурсами.
https://habr.com/ru/company/simbirsoft/blog/701020/
Эта статья будет полезна тем разработчикам, которые хотят выполнять больше работы за одно и то же время, и задействовать все ресурсы своего железа. Проще говоря, делать больше, и при этом обходиться меньшими ресурсами.
https://habr.com/ru/company/simbirsoft/blog/701020/
Forwarded from Big Data Science [RU]
🤔PyPy vs CPython: под капотом Python
Каждый разработчик Python-скриптов знает про CPython — наиболее распространенную реализация виртуальной машины, которая интерпретирует написанный код. Кроме CPython есть также PyPy , построенный с использованием языка RPython. По сравнению с CPython, PyPy работает быстрее, реализуя Python 2.7.18, 3.9.15 и 3.8.15. PyPy поддерживает большинство часто используемых модулей стандартных Python-библиотек. Версия PyPy x86 работает в нескольких операционных системах, таких как Linux (32/64 бита), MacOS (64 бита), Windows (32 бита), OpenBSD, FreeBSD. Версии, отличные от x86, поддерживаются в Linux, а ARM64 — в MacOS.
Впрочем, PyPy не сможет ускорить код в кратковременных процессах, которые запускаются менее чем на пару секунд: JIT-компилятору не хватит времени на «разогрев». Также PyPy не даст выиграша в скорости, если все время выполнения проводится в runtime-библиотеках, т.е. в функциях C, а не в фактическом выполнении Python-кода. Поэтому PyPy работает лучше всего при выполнении долго выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python.
С точки зрения потребления памяти, PyPy также может дать фору CPython: Python-программы с высоким потреблением ОЗУ (сотни МБ и более) могут в конечном итоге занимать меньше места в PyPy, чем в CPython.
https://www.pypy.org/features.html
Каждый разработчик Python-скриптов знает про CPython — наиболее распространенную реализация виртуальной машины, которая интерпретирует написанный код. Кроме CPython есть также PyPy , построенный с использованием языка RPython. По сравнению с CPython, PyPy работает быстрее, реализуя Python 2.7.18, 3.9.15 и 3.8.15. PyPy поддерживает большинство часто используемых модулей стандартных Python-библиотек. Версия PyPy x86 работает в нескольких операционных системах, таких как Linux (32/64 бита), MacOS (64 бита), Windows (32 бита), OpenBSD, FreeBSD. Версии, отличные от x86, поддерживаются в Linux, а ARM64 — в MacOS.
Впрочем, PyPy не сможет ускорить код в кратковременных процессах, которые запускаются менее чем на пару секунд: JIT-компилятору не хватит времени на «разогрев». Также PyPy не даст выиграша в скорости, если все время выполнения проводится в runtime-библиотеках, т.е. в функциях C, а не в фактическом выполнении Python-кода. Поэтому PyPy работает лучше всего при выполнении долго выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python.
С точки зрения потребления памяти, PyPy также может дать фору CPython: Python-программы с высоким потреблением ОЗУ (сотни МБ и более) могут в конечном итоге занимать меньше места в PyPy, чем в CPython.
https://www.pypy.org/features.html
PyPy
PyPy - Features
What is PyPy and what are its features
Forwarded from Диджитализируй!
Зззнатокам Python хитрый вопрос!
Какой тип поставить у параметра
Код скопировать можно здесь.
Вот так это делается на TS
А как на Python, м:)?
#IT #python #typescript #codebetter
Какой тип поставить у параметра
field
функции print_user_field
, чтобы последняя строка при проверке типа показала ошибку? Перечислять второй раз поля User
— нельзя, ибо делает возможным рассинхрон имён полей в классе и отдельном их перечислении.Код скопировать можно здесь.
Вот так это делается на TS
А как на Python, м:)?
#IT #python #typescript #codebetter
Forwarded from Диджитализируй!
Почему перечислять второй раз поля — плохо? Потому что возможна ситуация на скриншоте ⬆️ — поле
Почему вынести эту проверку на переданное значение
Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.
Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.
Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.
Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.
#python #it #codebetter
name
в User
переименовалось в username
, а в типах параметра field
осталось name
. Система проверки типов не покажет ошибку при вызове print_user_name(user, "name")
, а хотелось бы ошибку увидеть, так как поля name
уже нет.Почему вынести эту проверку на переданное значение
field
в блок try/except
— плохо? Потому что это уведёт ошибку в runtime, а надо минимизировать ошибки в рантайме, ошибки в рантайме = грустящие пользователи.Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.
Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.
Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.
Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.
#python #it #codebetter
Forwarded from Базы данных | Access, SQL, Big Data
Media is too big
VIEW IN TELEGRAM
Работа с базами данных на Python
В этом видеоуроке автор разбирает процесс работы с базами данных на Python. Вы рассмотрите как создавать таблицу, как смотреть ее содержимое, как вносить, изменять и удалять данные, а также узнаете, что такое первичный ключ и типизация ячеек.
00:00 Введение
00:35 Создание файла базы данных
02:05 Создание таблицы
04:15 Запись данных в таблицу (метод execute)
06:20 Запись массива (метод executemany)
08:00 Как посмотреть содержимое БД
11:52 PRIMARY KEY
13:00 Типизация ячеек
16:25 Чтение из базы данных
21:57 Изменение значений
26:30 Удаление значений
28:20 Удаление таблицы
Смотреть это видео на youtube: youtu.be/siSRd4s7_ro
В этом видеоуроке автор разбирает процесс работы с базами данных на Python. Вы рассмотрите как создавать таблицу, как смотреть ее содержимое, как вносить, изменять и удалять данные, а также узнаете, что такое первичный ключ и типизация ячеек.
00:00 Введение
00:35 Создание файла базы данных
02:05 Создание таблицы
04:15 Запись данных в таблицу (метод execute)
06:20 Запись массива (метод executemany)
08:00 Как посмотреть содержимое БД
11:52 PRIMARY KEY
13:00 Типизация ячеек
16:25 Чтение из базы данных
21:57 Изменение значений
26:30 Удаление значений
28:20 Удаление таблицы
Смотреть это видео на youtube: youtu.be/siSRd4s7_ro
Forwarded from Machine learning Interview
В этой таблице безымянная частичная выгрузка перемещения пользователей по сайту. Один user_id — один пользователь. Расскажите нам всё, что сможете понять по такой выгрузке
Проведите когортный анализ (за основу для когорты можно взять неделю регистрации), подсчитайте ориентировочный срок жизни клиента/когорты оцените популярность отдельных материалов и форматов
Попробуйте определить общие паттерны у тех пользователей, кто перестал учиться на платформе, и у тех, кто продолжает учиться. Вероятно, на основе этих данных вы сможете сделать предложения по адаптации платформы? Каких данных вам не хватает, чтобы провести более детальный анализ?
Выгрузка неполная, поэтому результаты могут быть искажены. Нам важны не итоговые значения, а ход решения, который вы выберите
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
Ответ
Это функция, которая возвращает декоратор. Например, вам нужен декоратор для проверки прав. Логика проверки одинакова, но прав может быть много. Чтобы не плодить копипасту, напишем фабрику декораторов.
from functools import wraps
def has_perm(perm):
def decorator(view):
@wraps(view)
def wrapper(request):
if perm in request.user.permissions:
return view(request)
else:
return HTTPRedirect('/login')
return wrapper
return decorator
@has_perm('view_user')
def users(request):
...
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
Сериализация – это процесс сохранения объектов в двоичном или строковом виде для хранения, передачи и восстановления. Обратный процесс называется десериализацией. Термины-синонимы маршалинг/анмаршалинг
json.dumps / json.dump , json.loads / json.load
Функция dumps модуля json сохраняет JSON-представление объекта в строку. Функция dump – в текстовый файл. Функция loads модуля json загружает объект из строки. Функция load – из текстового файла.
Что делать если нужно сериализовать данные, которые не поддерживаются стандартным модулем json
Можно использовать pickle или расширить классы JSONEncoder и JSONDecoder.
pickle.dumps / pickle.dump, pickle.loads / pickle.load
Функции dump, dumps, load и loads модуля pickle аналогичны по своему предназначению соответствующим функциям модуля JSON, но работают с байтовыми строками и бинарными файлами.
Опциональный параметр protocol данных функций задаёт версию протокола. Последнюю версию протокола можно получить как константу pickle.HIGHEST_PROTOCOL, текущую версию по умолчанию – pickle.DEFAULT_PROTOCOL.
На момент написания данного текста существует пять версий протокола:
0 и 1 – это устаревшие версии, которые использовались в Python 2.2 и ниже;
2 – это основная версия протокола для Python 2;
3 – версия протокола, которая появилась в Python 3, стандартный протокол в Python 3 на текущий момент, не может быть десериализован в Python 2;
4 – версия протокола, появившаяся в Python 3.4, поддерживает очень большие по объёму памяти объекты, поддерживает большее количество типов объектов, добавлены некоторые оптимизации.
5 - версия протокола, появившаяся в Python 3.8. Он добавляет поддержку данных out-of-band и ускорение для in-band данных. PEP 574 более подробно описывает изменения.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
Ответ
Да, можно указать более одного родителя в классе потомка.
MRO – method resolution order, порядок разрешения методов. Алгоритм, по которому следует искать метод в случае, если у класса два и более родителей. Алгоритм линеизирует граф наследования. Коротко можно описать так: ищи слева направо. Поэтому чем правее стоит класс, тем меньше у него приоритет при поиске метода.
Что такое миксины?
Ответ
Миксин (mix-in, анг. “примесь”), паттерн проектирования в ООП, когда в цепочку наследования добавляется небольшой класс-помощник. Например, есть класс
class NowMixin(object):
def now():
return datetime.datetime.utcnow()
Тогда любой класс, наследованный с этим миксином, будет иметь метод now().@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
Те задачи, которые порождают долгий IO. Когда тред упирается в ожидание сокета или диска, интерпретатор бросает этот тред и стартует следующий. Это значит, не будет простоя из-за ожидания. Наоборот, если ходить в сеть в одном треде (в цикле), то каждый раз придется ждать ответа.
Однако, если затем в треде обрабатывает полученные данные, то выполнятся будет только он один. Это не только не даст прироста в скорости, но и замедлит программу из-за переключения на другие треды.
Короткий ответ: хорошо ложатся на треды задачи по работе с сетью. Например, выкачать сто урлов. Полученные данные обрабатывайте вне тредов.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
Напишите код, который будет рассчитывать угол между часовой и минутной стрелкой в заданное время. Данная задача покажет логическое мышление кандидата, и как быстро он сможет придумать решение.
Ответ на картинке
@python_job_interview
Ответ на картинке
@python_job_interview
Forwarded from Python вопросы с собеседований
>>> def append(list=[]):
... # добавление длины списка в список
... list.append(len(list))
... return list
...
>>> append(['a','b'])
['a', 'b', 2]
>>>
>>> append() # вызов без аргумента использует значение list по умолчанию []
[0]
>>>
>>> append() # Но что произойдёт при повторном вызове append без аргумента?
Ответ
Когда значением по умолчанию для аргумента функции является выражение, оно вычисляется только один раз, а не всегда при вызове функции. Таким образом, после того как аргумент list был инициализирован в пустой массив, последующие вызовы функции без аргументов продолжат использовать тот же самый массив, что был инициализирован изначально.
>>> append() # при первом вызове без аргумента используется значение по умолчанию []
[0]
>>> append() # но затем...
[0, 1]
>>> append() # последовательные вызовы расширяют список по умолчанию
[0, 1, 2]
>>> append() # и так продолжается...
[0, 1, 2, 3]
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Python вопросы с собеседований
В чем заключается смысл протокола итератора?
Любой объект в Питоне становится итератором только тогда, когда в него внедрен соответствующий протокол. Он включает 2 метода:
– iter() – возвращает сам себя, вызывается в самом начале. Позволяет пользоваться циклом for и выражением in»;
– next() – перебирает коллекцию по одному элементу и вызывает ошибку StopIteration, когда их не остается.
Пример:
Обозначенную последовательность чисел мы превратили в итератор с помощью функции iter(). После того как функция next() перебрала все значения, возникла ошибка StopIteration.
@python_job_interview
Любой объект в Питоне становится итератором только тогда, когда в него внедрен соответствующий протокол. Он включает 2 метода:
– iter() – возвращает сам себя, вызывается в самом начале. Позволяет пользоваться циклом for и выражением in»;
– next() – перебирает коллекцию по одному элементу и вызывает ошибку StopIteration, когда их не остается.
Пример:
---
>>> num_lst = [7, 10, 3]
>>> num_lst_iter = iter(num_lst)
>>> next(num_lst_iter)
7
>>> next(num_lst_iter)
10
>>> next(num_lst_iter)
3
>>> next(num_lst_iter)
StopIteration
Обозначенную последовательность чисел мы превратили в итератор с помощью функции iter(). После того как функция next() перебрала все значения, возникла ошибка StopIteration.
@python_job_interview
Forwarded from Python вопросы с собеседований
Метакласс это «штука», которая создаёт классы.
Мы создаём класс для того, чтобы создавать объекты, так? А классы являются объектами. Метакласс это то, что создаёт эти самые объекты. Они являются классами классов, можно представить это себе следующим образом:
MyClass = MetaClass()
MyObject = MyClass()
Мы уже видели, что type позволяет делать что-то в таком духе:
MyClass = type('MyClass', (), {})
Это потому что функция type на самом деле является метаклассом. type это метакласс, который Питон внутренне использует для создания всех классов.
@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM