#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from CoolPython
​​Введение в декораторы

В нескольких следующих постах я хочу поговорить о декораторах. Будет базовое определение, мотивация их использовать, всякие хитрости, а еще куча примеров.

Прежде, чем говорить о декораторах, нужно кое-то узнать о функциях в Python. Допустим, у нас есть функция, которая здоровается с Юпи:

def hey_Jupi():
print("Привет, Юпи!")

Функции в Python -- это объекты первого класса, ничем не хуже, чем int'ы или словари. Это значит, что:

🐙 Функцию можно присвоить переменной:

say_hi = hey_Jupi
say_hi()
# Привет, Юпи!

🐙 Функцию можно вернуть из функции:

def wrapper(func):
print("Юпи пришла.")
return func

hello_Jupi = wrapper(hey_Jupi)
# Юпи пришла.
hello_Jupi()
# Привет, Юпи!

🐙 Функцию можно определить внутри другой функции:

def deco(func):
def wrapper():
print("Юпи пришла.")
func()
return wrapper

hey_Jupi = deco(hey_Jupi)
hey_Jupi()
# Юпи пришла.
# Привет, Юпи!

Смотрите, что получилось на последнем шаге. На этапе создания deco никакой код не выполняется -- мы заходим в deco, видим, что здесь определена функция wrapper и возвращаем ее. Таким образом мы подменяем исходную hey_Jupi на wrapper и получаем новое поведение hey_Jupi, не изменяя ее код!

Это и назвается декоратор. Это настолько удобный и мощный инструмент, что в Python для него придумали спецальный синтаксический сахар. При условии, что функция deco у нас уже определена так же, как выше, можно добавить название декоратора с символом @ перед определением функции и получить эквивалентное поведение:

@deco
def hey_Jupi():
print("Привет, Юпи!")

hey_Jupi()
# Юпи пришла.
# Привет, Юпи!

Кстати, этот же декоратор можно применить и к любой другой функции:

@deco
def take_five():
print("Юпи, дай пять!")

take_five()
# Юпи пришла.
# Юпи, дай пять!

Декораторы круты тем, что позоляют гибко модифицировать поведение функции, применять одну и ту же модификацию к нескольким функциям сразу и даже менять поведение функций, доступа к коду которых у нас нет! Зачем нам декораторы на реальных проектах?

🐙 Декораторы используют в веб фреймворках для проверки авторизации или для разделения групп пользователей. Например, часть методов доступна только авторизованным пользователям, либо пользователям с определенной ролью, а остальные методы -- всем. Для этого нужные методы оборачивают в декораторы, которе делают необходимые проверки.
🐙 Декораторы позволяют проверить, что аргументы функции имеют нужный тип и значения. Это можно сделать на входе в функцию, но иногда проверки переносят в функцию-обертку.
🐙 С помощью декоратора можно замерять время выполнения функций.

В следующих постах разберемся, как комбинировать декораторы и передавать в декоратор параметры. Всем пять!🐠
Есть вот такой словарь:
 
sports ={
'Nikolai':{
'weight':92,
'height':187,
'age':32
},
'Natasha':{
'weight':65,
'height':170,
'age':24
},
'Boris':{
'weight':87,
'height':180,
'age':28
}
}


Как получить имя самого старшего спортсмена?

Решение через полчаса.
Возможное решение:
 
max(sports, key=lambda k: sports[k]['age'])
Forwarded from # pip install (Student B.)
🔥 Pathlib - манипуляция путями, создание и удаление папок и файлов
🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

Модуль Pathlib в Python упрощает работу с файлами и папками. Он доступен в Python 3.4 и более поздних версиях. Pathlib сочетает в себе лучшее из модулей файловой системы Python — os, os.path, glob и так далее.

Содержание статьи
1. Концепт пути и директории в Python
2. Как использовать модуль Pathlib?
3. Зачем использовать модуль Pathlib?
4. Создание и удаление папок через Pathlib
5. Генерация кроссплатформенных путей в Pathlib
6. Получение информации о пути в Pathlib
7. Альтернатива для модуля glob
8. Чтение и запись файлов с использованием Pathlib

Подробнее: https://python-scripts.com/pathlib
На Moscow Python Conf++ Никита Воронов будет выступать с докладом о Dependency Hell. Перед конференцией Никита Соболев взял у него интервью, расспросил о докладе и узнал о резолвинге зависимостей, боли плохих решений, DepHell, pip, принципе first match wins, Гвидо и сообществе, Pipflie, инкрементальном развитии Python, какое решение из Go можно было бы взять в Python, и будущем экосистемы в плане работы с зависимостями. https://habr.com/ru/company/oleg-bunin/blog/483920/
Forwarded from # pip install
Полный обзор новой версии Python 3.7

Python 3.7 официально вышел! Новая версия Python была в разработке с сентября 2016 года и теперь мы все можем порадоваться результату работы команды разработчиков.

✌️ Обзор с Примерами: https://python-scripts.com/python-3-7
Forwarded from # pip install
Что можно делать с Python?

В данной статье мы рассмотрим несколько разных проектов, ресурсов и руководств, которые вы можете использовать для создания чего-либо в Python.

Подробнее: https://python-scripts.com/what-can-i-do-with-python
#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
#книгадня

«Python. К вершинам мастертва» (англ. «Fluent Python») — эту книгу можно смело считать библией любого неначинающего разработчика на Python. Она не только покрывает все аспекты языка программиования, но и рассказывает о том, почему они так работают. Даже если у вас довольно большой опыт программирования, вы все равно узнаете что-то новое.

Почитать: https://t.me/progbook/796
Какая разница между одинарным (_) и двойным (__) подчеркиванием? Исчерпывающий ответ здесь: https://hackernoon.com/understanding-the-underscore-of-python-309d1a029edc
Python — самый популярный язык программирования по версии рейтинга PYPL. Почему новички выбирают именно его? Какими он обладает преимуществами? С чего начать обучение? И почему он называется Python? На последний вопрос ответим здесь: в честь комедийного телешоу «Летающий цирк Монти Пайтона». Все остальное найдете в статье.

#Статья_Skillbox #Skillbox_программирование
Forwarded from # pip install (Student B.)
Разница между Python 2 и Python 3 - Кого выбрать? 🤔
🎯 Telegram Чат: @python_scripts
🎯 Канал: @pip_install

Многие пользователи задаются вопросом, с какой версии Python следует начинать изучение данного языка. Зачастую новички останавливаются на версии, которая фигурирует в рассматриваемом ими учебном пособии.

Содержание статьи
1. Что такое Python 2?
2. Что такое Python 3?
3. Что нужно знать о Python 2?
4. Какую версию Python использовать?
5. История Python 2
6. История Python 3
7. Главные различия между Python 2 и Python 3
8. Модуль future Python
9. Сравнительные примеры кода Python 2 и Python 3
10. Функция print в Python 2 и Python 3
11. Деление целых чисел в Python 2 и Python 3
12. Юникод в Python 2 и Python 3
13. Функция xrange() в Python 2
14. Метод contains для объектов range в Python 3
15. Разница в скорости между Python 2 и Python 3
16. Вызов исключений в разных версиях Python
17. Обработка исключений в Python 2 и Python 3

Подробнее: https://python-scripts.com/python-2-vs-3
Forwarded from Python Academy
​​Switch-конструкция с помощью словаря

Привет, на связи Адриан. Начинающие программисты достаточно часто спрашивают меня про switch-конструкции, а в Python их вобщем-то нет.

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

В этом примере я использовал lambda-функции для упрощения кода, но вместо них можете подставить любые другие. Объясню немного подробнее, lambda – объявление анонимной функции, x и y - принимаемые аргументы, x + y – возвращаемый результат.

Думаю, такой подход удобнее башни из условных конструкций.
Serious Python (2018)

Настоящее руководство считается одним из лучших сборников лучших приемов и практик разработки на Python. Вы узнаете про основные шаблоны проектирования, лучшие инструменты и практики программирования. Также руководство содержит интервью с разными разработчиками, которые поделятся с вами своим опытом.