🐍 Самоучитель по Python для начинающих. Часть 11: Функции с позиционными и именованными аргументами

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

Функция – это мини-программа внутри основной программы. Код такой подпрограммы отвечает за решение определенной задачи: например, в игре Тетрис будут отдельные функции для подсчета очков, рисования игрового поля, движения фигурки и так далее. Использование функций позволяет:

  • ограничить область видимости переменных функциями, которые их используют;
  • исключить дублирование кода;
  • разбить большую и сложную программу на небольшие мини-программы, которые можно вызывать в нужный момент;
  • выстроить простую и понятную структуру программы – такой код удобнее дебажить и поддерживать.

У функций есть несколько особенностей:

  • Функция выполняется только тогда, когда ее вызывает основная программа.
  • В функцию можно передавать различные данные. Параметры – это переменные, которые используются при объявлении функции, аргументы – фактические значения, которые передаются переменным при вызове функции.
  • Функции могут передавать результаты своей работы в основную программу или в другие функции.

Функции в Python

Python работает со встроенными и пользовательскими функциями. Встроенные функции – это уже знакомые нам print(), input(), map(), zip() и так далее. Пользовательские функции, в свою очередь, делятся на:

  • Рекурсивные (вызывают сами себя до тех пор, пока не будет достигнут нужный результат).
  • Анонимные, или лямбда-функции (объявляются в любом участке кода и сразу же вызываются).
  • Все остальные функции, которые определены пользователем и не относятся ни к рекурсивным, ни к анонимным.

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

🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

Объявление и вызов функций в Python

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

def my_function():
  print('Привет от Python')

Для вызова такой функции достаточно написать ее название:

my_function()

Результат вызова:

Привет от Python

А это пример простейшей функции с параметром:

def my_function(name):
    print(f'Привет, {name}')

При вызове функция получает аргумент:

my_function('Вася')

Результат вызова:

Привет, Вася

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

def my_function(name, lastname):
    print(f'Добрый день, {name} {lastname}')

Если передать в функцию два аргумента – my_function('Егор', 'Куликов'), результат вызова будет таким:

Добрый день, Егор Куликов

Но если число аргументов окажется меньше числа параметров – my_function('Алена'), возникнет ошибка:

    my_function('Алена')
TypeError: my_function() missing 1 required positional argument: 'lastname'
🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»

Порядок обработки позиционных аргументов

Python обрабатывает позиционные аргументы слева направо:

def my_function(name, last_name, occupation, age):
    print(f'Сотрудник #1 - {name} {last_name} {occupation} {age}')

info1, info2, info3, info4 = 'Алиса', 'Селезнева', 'скрам-мастер', 30
my_function(info1, info2, info3, info4)                  
my_function(info2, info3, info1, info4)                 
my_function(info4, info1, info2, info3)                 

Вывод:

Сотрудник #1 - Алиса Селезнева скрам-мастер 30
Сотрудник #1 - Селезнева скрам-мастер Алиса 30
Сотрудник #1 - 30 Алиса Селезнева скрам-мастер

Аргументы по умолчанию

Функция может использовать аргументы по умолчанию – они указываются после позиционных:

def my_function(strt, build, ap, city='Москва'):
    print(f'Адрес: г.{city}, ул.{strt}, д.{build}, кв.{ap}')
my_function('Красная', '5', '3', 'Тула')
my_function('Красная', '5', '3')
Результат:
Адрес: г.Тула, ул.Красная, д.5, кв.3
Адрес: г.Москва, ул.Красная, д.5, кв.3

Именованные аргументы

Помимо позиционных, в функцию можно передать именованные аргументы, причем порядок передачи именованных аргументов при вызове функции может не совпадать с порядком параметров:

def sales_price(price, discount=5):
    return price - price * discount / 100

print(sales_price(5000))
print(sales_price(5000, discount=10))
print(sales_price(discount=15, price=5000))

Вывод:

4750.0
4500.0
4250.0
***

Отлично! Вы освоили создание и вызов стандартных функций.

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

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

  • Создавать функции, которые принимают произвольное количество аргументов с помощью *args и **kwargs — ключевой навык для написания универсального кода.
  • Возвращать результат вычислений из функции с помощью оператора return, чтобы использовать его в других частях вашей программы.
  • Закрепите всё на 10 практических задачах, создавая функции профессионального уровня.

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
28 июня 2018

3 самых важных сферы применения Python: возможности языка

Существует множество областей применения Python, но в некоторых он особенно...
admin
13 февраля 2017

Программирование на Python: от новичка до профессионала

Пошаговая инструкция для всех, кто хочет изучить программирование на Python...