Что такое «питоническое» кодирование?

Во многих статьях, посвященных изучению python и его библиотек, при рассмотрении кода обычно говорится, что он «недостаточно питоничен». Но что это означает на самом деле? Давайте разберемся в этой статье.

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

Когда программист объявляет фрагмент недостаточно «питоническим», он в основном имеет в виду, что код либо является дословным переводом с другого языка, либо что код можно сделать более читабельным, используя присущие Python особенности. Для дальнейшей иллюстрации этой концепции приведены два примера:

Упаковка кортежей

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

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

def sum_multiply_power(x, y):
    a = x + y
    b = x * y
    c = x ** y
    return a, b, c

ans = sum_multiply_power(5, 3)
print(ans)
Вход в полноэкранный режим Выход из полноэкранного режима
>>> (8, 15, 125)
Войти в полноэкранный режим Выход из полноэкранного режима

Подобно упаковке, в Python также есть распаковка кортежей, с помощью которой мы можем извлекать элементы типа данных коллекции в отдельные переменные без лишних усилий и хлопот.

ans1, ans2, ans3 = ans
print("The first part of ans is:", ans1)
print("The second part of ans is:", ans2)
print("The third part of ans is:", ans3)
Вход в полноэкранный режим Выход из полноэкранного режима
>>> The first part of ans is: 8
>>> The second part of ans is: 15
>>> The third part of ans is: 125
Войти в полноэкранный режим Выход из полноэкранного режима

Также при передаче значений в функцию или переменную и обратно распаковка элемента может быть выполнена с помощью оператора звездочки ‘*’:

def print_3_birds(a, b, c):
    print("At first comes:", a)
    print("Then comes:", b)
    print("And lastly comes:", c)

blues = "Jake", "Jay", "Jim"
print_3_birds(*blues)
Войти в полноэкранный режим Выход из полноэкранного режима
>>> At first comes: Jake
>>> Then comes: Jay
>>> And lastly comes: Jim
Войти в полноэкранный режим Выход из полноэкранного режима

Понимание списков

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

  • Список без использования понимания:
evens = []
for i in range(100):
    if(i%2==0):
        evens.append(i)
Вход в полноэкранный режим Выход из полноэкранного режима
  • Список, созданный с использованием понимания:
evens = [i for i in range(100) if i%2==0]
Войти в полноэкранный режим Выйти из полноэкранного режима
  • Обновление списка с помощью понимания:
odds = [i for i in range(100) if i%2==0]
odds = [num+1 for num in odds]
Войти в полноэкранный режим Выйти из полноэкранного режима

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

def pretty_print(val):
    print("The value of this variable is:", val)

[pretty_print(num) for num in (odds+evens)]
[print(num) for num in odds if odds>20]
Вход в полноэкранный режим Выход из полноэкранного режима

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

Оцените статью
devanswers.ru
Добавить комментарий