Python:
Организация кода в функции

Как это сделать:

Допустим, вы пишете скрипт для расчета квадрата и куба числа. Без функций получается каша из повторений:

num = 4
square = num * num
cube = num * num * num
print(f"Квадрат: {square}, Куб: {cube}")

num = 5
square = num * num
cube = num * num * num
print(f"Квадрат: {square}, Куб: {cube}")

Вывод:

Квадрат: 16, Куб: 64
Квадрат: 25, Куб: 125

С функциями выглядит аккуратнее:

def square(n):
    return n * n

def cube(n):
    return n ** 3

num = 4
print(f"Квадрат: {square(num)}, Куб: {cube(num)}")

num = 5
print(f"Квадрат: {square(num)}, Куб: {cube(num)}")

Вывод:

Квадрат: 16, Куб: 64
Квадрат: 25, Куб: 125

Погружение

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

Альтернативы функциям включают классы (объединение функций с данными, на которых они оперируют) и встраиваемый код (интеллект там, где он нужен, но рискованный для сложных задач). С точки зрения реализации, хитрость не только в создании функций, но и в их способности хорошо выполнять одну задачу — подумайте о принципе единственной ответственности. Функции также идеально должны быть без состояния, что означает отсутствие сюрпризов с данными, поступающими внутрь или выходящими наружу.

Смотрите также

  • Официальные руководства Python по функциям: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
  • “Чистый код” Роберта Мартина, принципы написания аккуратных функций.
  • “Рефакторинг: Улучшение проекта существующего кода” Мартина Фаулера, который включает примеры организации кода.