Функции в Python – пособие с примерами

Цель данной статьи

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

Итак, приступим к обучению!

Введение

Функция, написанная на любом языке программирования, представляет собой последовательность операторов в определенном порядке и с заданным именем. При вызове функции эти операторы how much is a rolex copy worth выполняются. Таким образом, нам не нужно снова и снова писать код для каждого типа данных, к которому мы хотим его применить. Это называется возможностью повторного использования кода.

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

Пользовательские функции

Преимущества пользовательских функций в Python

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

Обозначение функции в Python

Чтобы определить свою собственную функцию в Python, вам нужно написать ключевой слово def перед именем функции. И за его именем должны следовать круглые скобки, а после них двоеточие ‘:‘.

def hello():
      print("Hello")

Содержимое внутри тела функции должно иметь одинаковый отступ.

Вы можете определить строку документации прямо под первой строкой объявления функции. Она будет объяснять, что делает эта функция.

def hello():
         """
         This Python function simply prints hello to the screen
         """
         print("Hello")

При помощи атрибута __doc__ можно получить доступ к этой строке документации.

def func1():
       """
       This is the docstring
       """
       print("Hello")

func1.__doc__

# Результат:
# 'This is the docstring'

Однако, если вы примените этот атрибут к функции без строки документации, произойдет следующее:

sum.__doc__
type(sum.__doc__)

# Результат:
# <class 'NoneType'>

bool(sum.__doc__)

# Результат:
# False

Если вы еще не знаете какой код должен быть в вашей функции, то поместите туда оператор pass. В противном случае вы получите следующее сообщение об ошибке: “Expected an indented block”.

def hello1():
   pass
hello1()

А дальше вы всегда сможете вашу функцию переопределить.

Правила именования функций в Python

При именовании функций мы следуем тем же правилам, что и при именовании переменных.

  1. Имя может начинаться с одного из следующих символов: A-Z, a-z и знак подчеркивания ‘_‘.
  2. Остальная часть имени может содержать следующие символы: AZ, az, цифры (0-9) и подчеркивание (_).
  3. Зарезервированные ключевые слова не могут быть выбраны в качестве имени (идентификатора) функции или переменной.

Хорошей практикой считается называть функцию так, чтобы было понятно что она делает.

Параметры функций в Python

Иногда требуется, чтобы функция работала с некоторыми переменными и возвращала результат. Такая 저렴한 HAPP Box 일회용 전자담배 функция может принимать любое количество параметров. Для примера рассмотрим функцию, которая складывает два числа.

def sum(a,b):
       print(f"{a}+{b}={a+b}")

sum(2,3)

# Результат:
# 2+3=5

Здесь функция sum() принимает два параметра — a и b. Когда мы вызываем функцию, то передаем в нее числа 2 и 3. Это аргументы a и b соответственно. Функции в Python могут содержать любое количество параметров или вообще ни одного.

В следующем примере мы попробуем сложить целое число (тип int) и число с плавающей запятой (тип float):

def sum2(a,b):
     print(f"{a}+{b}={a+b}")

sum2(3.0,2)

# Результат:
# 3.0+2=5.0

Но несовместимые типы данных складывать нельзя:

sum2('Hello',2)

Результат:

Traceback (most recent call last):

File “<pyshell#39>”, line 1, in <module>

sum2(‘Hello’,2)

File “<pyshell#38>”, line 2, in sum2

print(f”{a}+{b}={a+b}”)

TypeError: must be str, not int

Оператор return

Функции в Python могут (но необязательно) возвращать значения. Значение может быть результатом работы данной функции или тем, чем вы определите – выражением или какой-то величиной.

def func1(a):
         if a%2==0:
               return 0
          else:
                return 1

func1(7)

# Результат:
# 1

Как только интерпретатор доходит до оператора return, выполнение функции прекращается. И затем уже будет выполняться следующий после вызова функции оператор. Теперь давайте попробовать вернуть выражение:

def sum(a,b):
     return a+b
sum(2,3)

# Результат:
# 5

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

Чтобы вызвать функцию в Python, нужно просто написать ее название в нужном месте вашего кода и передать в нее аргументы, если они имеются. Давайте вызовем объявленную ранее функцию hello():

hello()

# Результат:
# Hello

Как вызывать функцию с аргументами, мы уже видели в предыдущем разделе.

Область видимости и время жизни переменных в Python

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

Область видимости

Область видимости переменной говорит нам, где в программе она доступна. Переменная может иметь локальную или глобальную область видимости.

Переменная, объявленная внутри функции, имеет локальную область видимости. Другими словами, она является локальной для этой самой функции.

def func3():
    x=7
    print(x)

func3()

# Результат:
# 7

Теперь, если вы попытаетесь получить доступ к переменной x вне функции, у вас ничего не выйдет.

x

Результат:

Traceback (most recent call last):

File “<pyshell#96>”, line 1, in <module>

x

NameError: name ‘x’ is not defined

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

y=7
def func4():
      print(y)

func4()

# Результат:
# 7

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

def func4():
      global y
      y+=1
      print(y)

func4()

# Результат:
# 8

y

# Результат:
# 8

Как можно заметить, значение переменной y было изменено.

Срок жизни переменной

Время жизни переменной — это период времени, в течение которого она находится в памяти.

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

def func1():
         counter=0
         counter+=1
         print(counter)

func1()

# Результат:
# 1

func1()

# Результат:
# 1

Как можно заметить, значение переменной внутри функции не растет.

Удаление функции Python

До сих пор мы видели, что можно удалять переменные. Точно так же при помощи команды del можно удалить и функцию.

def func7():
    print("7")

func7()

# Результат:
# 7
del func7
func7()

Результат:

Traceback (most recent call last):

File “<pyshell#137>”, line 1, in <module>

func7()

NameError: name ‘func7’ is not defined

При удалении функции скобки после ее имени ставить не нужно.

Встроенные функции Python

Эти функции Python применяется к таким конструкциям, как int, float, bin, hex, string, list, tuple, set, dict и так далее. Мы рассмотрим их в соответствующих статьях про эти типы данных.

Лямбда функции в Python

Как мы уже говорили ранее, у функции не обязательно должно быть имя. Лямбда-выражение в Python позволяет нам создать анонимную функцию, и мы используем для нее ключевое слово lambda. Ниже приведен синтаксис лямбда-выражения.

myvar=lambda a, b : (a * b) + 2
myvar(3, 5)

# Результат:
# 17

Этот код принимает числа 3 и 5 в качестве аргументов a и b соответственно и помещает их в выражение (a * b) + 2. Получается (3 * 5) + 2, что равно 17. Наконец, возвращается 17.

Собственно, объекту функции присваивается идентификатор myvar.

Рекурсивные функции в Python

Рекурсия – это очень интересная концепция в любой области знаний. В рекурсии используется что-то чтобы определить себя через обращение к себе. В Python это означает, что функция вызывает саму себя. Чтобы увидеть, как это может быть полезно, давайте попробуем вычислить факториал числа. Математически факториал числа это: n!=n*n-1*n-2*…*2*1

В виде кода это выглядит следующим образом:

def facto(n):
  if n==1:
    return 1
  return n*facto(n-1)

facto(5)

# Результат:
# 120

facto(1)

# Результат:
# 1

facto(2)

# Результат:
# 2

facto(3)

# Результат:
# 6

Это все, что мы пока хотим вам сказать про рекурсию в Python.

Заключение

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

Перевод статьи Python Function Tutorial – Type of Functions in Python(With Example).

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll to Top