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

Функции Python

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

Определение функций

Чтобы определить функцию в Python, мы используем ключевое слово def, за которым следует имя функции и набор скобок.

Общий синтаксис определения функции в Python:

def function_name(parameter1, parameter2,...):
    # function body
    return value # optional

Вот пример:

def greet(name):
  print("Hello, " + name + "!")

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

Вызов функций

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

Общий синтаксис вызова функции в Python:

function_name(argument1, argument2,…)

Вот пример:

greet("Alice")

В этом коде мы вызываем функцию приветствия и передаем значение «Алиса» в качестве параметра имени.

Давайте определим простую функцию, которая принимает два числа в качестве параметров и возвращает их сумму:

def add_numbers(a, b):
  # function body
  result = a + b # calculate the 
  return result # return the sum

давайте вызовем функцию add_numbers, которую мы определили ранее, с другими аргументами:

add_numbers(3, 5) # call with 3 and 5 as arguments
add_numbers(10, -2) # call with 10 and -2 as arguments
add_numbers(7.5, 2.5) # call with 7.5 and 2.5 as arguments

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

8
8
10.0

Обратите внимание: когда мы вызываем функцию, которая возвращает значение (например, add_numbers), мы можем присвоить это значение переменной или использовать его в выражении. Например:

sum = add_numbers(3, 5) # assign the return value to a variable
print(sum) # print the variable
print(add_numbers(10, -2) * 2) # use the return value in an expression

Вывод этого кода:

8
16

Определение и передача параметров и аргументов

В Python существует несколько способов определения и передачи параметров и аргументов функциям. Вот некоторые распространенные типы:

Позиционные параметры и аргументы:

  • Позиционные параметры объявляются в определении функции, и их порядок имеет значение.
  • Позиционные аргументы передаются в функцию по положению, соответствующему порядку параметров в определении функции.

Вот пример:

def greet(name, age):
  print("Hello, my name is", name, "and I am", age, "years old.")

greet("Alice", 30)

В этом коде «Алиса» — это первый позиционный аргумент, соответствующий параметру name, а 30 — второй позиционный аргумент, который соответствует параметру age.

Параметры и аргументы ключевых слов:

  • Параметры ключевых слов объявляются в определении функции, и их имена имеют значение.
  • Аргументы ключевого слова передаются функции по имени, совпадающему с именами параметров в определении функции.

Вот пример:

def greet(name, age):
  print("Hello, my name is", name, "and I am", age, "years old.")

greet(name="Bob", age=25)

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

Произвольные параметры и аргументы:

  • Произвольные параметры позволяют функции принимать произвольное количество аргументов.
  • Произвольные аргументы передаются функции с использованием синтаксиса *args, который позволяет передавать любое количество аргументов.

Вот пример:

def greet(*names):
  for name in names:
    print("Hello,", name)
greet("Alice", "Bob", "Charlie")

В этом коде «Алиса», «Боб» и «Чарли» передаются как произвольные аргументы с использованием *имен. , который создает кортеж всех аргументов.

Параметры и аргументы, содержащие только ключевые слова:

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

Вот пример:

def greet(name, *, age):
  print("Hello, my name is", name, "and I am", age, "years old.")

greet("Alice", age=30)

В этом коде «Алиса» передается в качестве аргумента имя, а 30 — в качестве аргумента возраст. используя его имя параметра. Поскольку параметр age содержит только ключевое слово, его можно передать только с использованием имени параметра.

Произвольные параметры и аргументы ключевого слова:

  • Произвольные параметры ключевого слова позволяют функции принимать произвольное количество аргументов ключевого слова.
  • Произвольные аргументы ключевого слова передаются в функцию с использованием синтаксиса **kwargs, который позволяет передавать любое количество аргументов ключевого слова.

Вот пример:

def greet(**kwargs):
  for key, value in kwargs.items():
    print(key, "is", value)
greet(name="Alice", age=30)

В этом коде «Алиса» передается в качестве аргумента ключевого слова name, а 30 — в качестве возраста. аргумент ключевого слова с использованием синтаксиса **kwargs, который создает словарь всех аргументов ключевого слова.

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

Возвращаемые значения

Функции также могут возвращать значения с помощью оператора return. Вот пример:

def add(x, y):
  return x + y

В этом коде мы определяем функцию add, которая принимает два параметра, x и y. Внутри функции мы используем оператор return для возврата суммы x и y.

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

result = add(2, 3)
print(result)

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

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