Forwarded from Python School
Аннотации типов
Python — динамически типизированный язык. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Это позволяет ускорить процесс разработки. Однако мало что раздражает так сильно, как ошибка времени выполнения, возникшая из-за простого несовпадения типа.
С версии Python 3.5 при определении функции можно добавлять аннотации типов
Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Python — динамически типизированный язык. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Это позволяет ускорить процесс разработки. Однако мало что раздражает так сильно, как ошибка времени выполнения, возникшая из-за простого несовпадения типа.
С версии Python 3.5 при определении функции можно добавлять аннотации типов
Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Forwarded from Python School
Data classes
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Forwarded from Яндекс Образование
Мы начинаем публиковать лекции летних школ Академии Яндекса на нашем YouTube! ⚡️
Сегодня — курс лекций Школы бэкенд-разработки 2021 для тех, кто пишет на Python. Скоро поделимся записями по фронтенду, мобильной разработке, менеджменту и дизайну. Ловите ссылку на плейлист: https://clck.ru/YVduf
Авторы этих видео — опытные разработчики Яндекса. Лекции рассчитаны на тех, кто уже знает основы Python, хочет углубить и систематизировать знания. Из курса вы узнаете тонкости построения архитектуры и инфраструктуры, подходы к тестированию, важнейшие метрики и алгоритмы в бэкенд-разработки, основы асинхронного программирования и работы с legaсy-кодом.
В рамках летних школ студенты не только слушали лекции, но и погружались в промышленную разработку, делали реальные проекты бок о бок с менторами и ребятами других направлений. Чтобы не пропустить новый набор и поучаствовать в следующих школах, оставляйте заявку на сайте Академии: https://clck.ru/YVdB3
Сегодня — курс лекций Школы бэкенд-разработки 2021 для тех, кто пишет на Python. Скоро поделимся записями по фронтенду, мобильной разработке, менеджменту и дизайну. Ловите ссылку на плейлист: https://clck.ru/YVduf
Авторы этих видео — опытные разработчики Яндекса. Лекции рассчитаны на тех, кто уже знает основы Python, хочет углубить и систематизировать знания. Из курса вы узнаете тонкости построения архитектуры и инфраструктуры, подходы к тестированию, важнейшие метрики и алгоритмы в бэкенд-разработки, основы асинхронного программирования и работы с legaсy-кодом.
В рамках летних школ студенты не только слушали лекции, но и погружались в промышленную разработку, делали реальные проекты бок о бок с менторами и ребятами других направлений. Чтобы не пропустить новый набор и поучаствовать в следующих школах, оставляйте заявку на сайте Академии: https://clck.ru/YVdB3
Forwarded from HABR FEED + OPENNET
[Перевод] Python как инструмент сборки
https://habr.com/ru/post/586046/?utm_source=habrahabr&utm_medium=rss&utm_campaign=586046
Tags: Блог компании НПП ИТЭЛМА, Python, python
Author Itelma #habr
https://habr.com/ru/post/586046/?utm_source=habrahabr&utm_medium=rss&utm_campaign=586046
Tags: Блог компании НПП ИТЭЛМА, Python, python
Author Itelma #habr
Хабр
Python как инструмент сборки
Предлагаем вашему вниманию перевод поста Никиты Прокопова, разрабочика с 15-летним стажем. Обычно, начиная проект на Java (или любой другой проект), вы не хотите заново изобретать колесо. Вы де-факто...
Forwarded from Python Academy
Делаем планировщик задач
К моему удивлению, далеко не все знают про пакет
Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#schedule
К моему удивлению, далеко не все знают про пакет
schedule
, который позволяет планировать задачи и повторять их через промежуток времени. Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
schedule
не требует внешних зависимостей и сам в целом легковесный. Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#schedule
Forwarded from Python Academy
Отсутствующие ключи в словаре
При обращении по отсутствующему ключу в словаре мы получим исключение
Для этого создадим свой собственный класс словаря, унаследовавшись от
Мы можем, например, возвращать какое-то дефолтное значение, либо определить любую другую необходимую логику поведения.
#dict
При обращении по отсутствующему ключу в словаре мы получим исключение
KeyError
. Но мы можем переопределить это поведение.Для этого создадим свой собственный класс словаря, унаследовавшись от
dict
. После чего нам просто необходимо переопределить метод __missing__
, который вызывается в базовой реализации методом dict.__getitem__
при при адресации к отсутствующему ключу. Мы можем, например, возвращать какое-то дефолтное значение, либо определить любую другую необходимую логику поведения.
#dict
Forwarded from Python Academy
Работаем с файловыми путями
В стандартной библиотеке есть максимально удобный пакет
Для представления пути к файлу есть класс
Но самой классной фичей является замена
Итого, пакет
#pathlib
В стандартной библиотеке есть максимально удобный пакет
pathlib
для простой работы с файловыми путями. Для представления пути к файлу есть класс
Path
, с объектами которого уже можно производить операции. Например, методы exists()
и is_dir()
проверяют, существует ли файл и является ли он директорией. Но самой классной фичей является замена
os.path.join()
на более удобный и элегантный вариант с использованием слэшей, как показано на картинке. Итого, пакет
pathlib
может стать частичной заменой os
в некоторых случаях при работе с файловыми путями. #pathlib
Forwarded from NOP::Nuances of Programming
Считаете Python верхом совершенства? А как насчет альтернативы - высокопроизводительного языка Julia? Некоторые из возможностей Julia явно не помешали бы старому доброму Python.
https://nuancesprog.ru/p/14342/
@nuancesprog #Julia #Python
https://nuancesprog.ru/p/14342/
@nuancesprog #Julia #Python
Forwarded from NOP::Nuances of Programming
Что может заставить программиста, который 10 лет предпочитал Python другим компьютерным языкам, перейти на Rust? Узнайте о 5 проблемах Python и о том, как Rust решил эти проблемы.
https://nuancesprog.ru/p/14331/
@nuancesprog #Rust #Python
https://nuancesprog.ru/p/14331/
@nuancesprog #Rust #Python
Forwarded from # pip install
Главный секрет операторов match/case в Python
Не так давно увидела свет версия языка пайтон 3.10. В ней был добавлен pattern matching statement (оператор сопоставления с шаблонами). Как гласит официальное описание этого оператора в PEP622, разработчики в большей мере вдохновлялись наработками таких языков как: Scala, Erlang, Rust.
Многие, в том числе и я, встретили оператор с критикой. Можно для примера почитать комментарии к недавнему посту. В основном люди жалуются на синтаксис, который похож на синтаксис пайтона, однако означает совершенно другое.
Подробнее: https://habr.com/ru/post/585518/
Не так давно увидела свет версия языка пайтон 3.10. В ней был добавлен pattern matching statement (оператор сопоставления с шаблонами). Как гласит официальное описание этого оператора в PEP622, разработчики в большей мере вдохновлялись наработками таких языков как: Scala, Erlang, Rust.
Многие, в том числе и я, встретили оператор с критикой. Можно для примера почитать комментарии к недавнему посту. В основном люди жалуются на синтаксис, который похож на синтаксис пайтона, однако означает совершенно другое.
Подробнее: https://habr.com/ru/post/585518/
Forwarded from Python School
Data classes
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Forwarded from Python School
xkcd
Юмор — ключевая особенность Python. В конце концов, язык был назван в честь британского комедийного шоу «Летающий цирк Монти Пайтона». Во многих местах официальной документации можно найти отсылки к самым известным эпизодам шоу.
Конечно, чувство юмора не заканчивается на документации.
Юмор — ключевая особенность Python. В конце концов, язык был назван в честь британского комедийного шоу «Летающий цирк Монти Пайтона». Во многих местах официальной документации можно найти отсылки к самым известным эпизодам шоу.
Конечно, чувство юмора не заканчивается на документации.
Forwarded from Data Ninja (Dmitriy)
Хотел написать про DWH, но опять пишу про Питон :)
Нашел интересный пример показывающий принцип разрешения конфликтов множественного наследования. Если кто не помнит, то уточню, при наличии одинаковых родительских методов у класса, Питон выберет 1 из них, а вот способ которым он это делает именуется mro, для него используется специальный алгоритм С3. Его суть в упорядочивании всех родителей класса.
Нашел интересный пример показывающий принцип разрешения конфликтов множественного наследования. Если кто не помнит, то уточню, при наличии одинаковых родительских методов у класса, Питон выберет 1 из них, а вот способ которым он это делает именуется mro, для него используется специальный алгоритм С3. Его суть в упорядочивании всех родителей класса.
class Cat():Ну и конечно посмотрим лично как Питон разрешил эту проблему:
def say(self):
print('Meow')
class Dog():
def say(self):
print('Gav')
class CatDog(Cat,Dog):
pass
class DogCat(Dog,Cat):
pass
muteDog=CatDog()
muteDog.say()
>> Meow
muteCat=DogCat()
muteCat.say()
>> Gav
CatDog.__mro__#собеседование
>> (__main__.CatDog, __main__.Cat, __main__.Dog, object)
python
DogCat.__mro__
>> (__main__.DogCat, __main__.Dog, __main__.Cat, object)
Forwarded from Data Ninja (dmitriy)
Люблю понимать как работает та или иная технология, долгое количество времени принимал JOIN в SQL как данность, не задумываясь что же происходит внутри, а на самом деле внутри не происходит ничего сверхъестественного. Существует всего 3 основных алгоритма объединения данных
Алгоритм вложенными циклами. Сложность N*N
Алгоритм вложенными циклами. Сложность N*N
a = [1, 2, 3, 4, 5]Алгоритм sort join, для отсортированных таблиц. Сложность N*LOG(N) для неотсортированных таблиц и N для отсортированных
b = [2, 3, 4, 5, 6]
_ = list()
for i in a:
for j in b:
if i == j:
print(i)
a = [1, 2, 3, 4, 5]Алгоритм hash join. Сложность N. Используем set map в случае с питоном.
b = [2, 3, 4, 5, 6]
i = 0
j = 0
while i != len(a) and j != len(b):
if a[i] < b[j]:
i += 1
elif a[i] == b[j]:
print(a[i], b[j])
i += 1
j += 1
else:
j += 1
a = [1, 2, 3, 4, 5]#собеседование
b = set([2, 3, 4, 5, 6])
for i in a:
if i in b:
print(i)
Forwarded from Data Ninja
Часто встречаю путаницу у людей в связи с тем что такое итератор в Python. Например многие по ошибке говорят что всеми нами любимый range(N) это итератор, отнюдь.
Iterator это объект у которого определены два метода next, iter. Iterable это всё у чего есть метод iter, и что вернет Iterator. Generator это всё что использует yield вместо return.
Собственно если мы исполним код,
>>> next(range(5))В питоне существует 3 типа итерируемых объекта, если их так можно назвать. Iterable, Iterator, Generator.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'range' object is not an iterator
Iterator это объект у которого определены два метода next, iter. Iterable это всё у чего есть метод iter, и что вернет Iterator. Generator это всё что использует yield вместо return.
Собственно если мы исполним код,
for i in range(5):Будет аналогично такому псевдокоду
print(i)
rn = iter(range(5))#собеседование
while True:
next(rn)
Forwarded from Python School
YAML (ч.1)
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы.
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы.
Forwarded from Python School
YAML (ч.2)
Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python.
PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python.
PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Forwarded from Python School
Queue (ч.1)
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Python поддерживает многопоточность, в использовании которой помогает стандартный модуль Queue.
Он позволяет реализовывать такую структуру данных, как очередь. Очереди позволяют добавлять и извлекать элементы согласно определённому правилу.
Forwarded from Python Community
⚡️ Что такое
Представим, что вы написали небольшой скрипт, который выводит hello world при запуске. А другой программист захотел импортировать ваш модуль, поскольку там была функция print_hello().
Но вместе с импортом он получил ненужную hello world в терминал. Почему так случилось? Потому что python-код также выполняется во время импорта. Чтобы этого избежать, используют
При импорте
#теория
__name__
Заглянув в большинство скриптов вы можете увидеть строку по типу __name__ == "__main__"
. Многие новички не понимают, зачем её добавлять, если и так всё работает. Представим, что вы написали небольшой скрипт, который выводит hello world при запуске. А другой программист захотел импортировать ваш модуль, поскольку там была функция print_hello().
Но вместе с импортом он получил ненужную hello world в терминал. Почему так случилось? Потому что python-код также выполняется во время импорта. Чтобы этого избежать, используют
__name__
.При импорте
__name__
получает название модуля, а при прямом запуске (python3 script.py
) его значение будет __main__
. Подробнее вы, как обычно, можете почитать тут.#теория
Forwarded from HABR FEED + OPENNET
Ещё одна статья о декораторах в python, или немного о том, как они работают и как они могут поменять синтаксис языка
https://habr.com/ru/post/587066/?utm_source=habrahabr&utm_medium=rss&utm_campaign=587066
Tags: Python, Программирование, декоратор, декораторы, синтаксис, python, реализация
Author LinearLeopard #habr
https://habr.com/ru/post/587066/?utm_source=habrahabr&utm_medium=rss&utm_campaign=587066
Tags: Python, Программирование, декоратор, декораторы, синтаксис, python, реализация
Author LinearLeopard #habr
Хабр
Ещё одна статья о декораторах в python, или немного о том, как они работают и как они могут поменять синтаксис языка
Декораторы в python являются одной из самых часто используемых возможностей языка. Множество библиотек и, особенно, веб-фреймворков предоставляют свой функционал в виде декораторов. У неопытного...