Питон как задать функцию

Питон как задать функцию

Don’t learn to code. Code to learn!

  • Python — Обзор
  • Основы синтаксиса Python
  • Операторы в Python
  • Типы данных в Python
  • Условные конструкторы в Python
  • Циклы в Python
  • Функции в Python
  • Функциональное программирование в Python
  • ООП в Python
  • Модули в Python
  • Работа с файлами в Python
  • Обработка исключительных ситуаций в Python

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

Создание функции

Существуют некоторые правила для создания функций в Python.

  • Блок функции начинается с ключевого слова def, после которого следуют название функции и круглые скобки ( () ).
  • Любые аргументы, которые принимает функция должны находиться внутри этих скобок.
  • После скобок идет двоеточие ( : ) и с новой строки с отступом начинается тело функции.

Пример функции в Python:

def my_function(argument): print argument

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

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

Аргументы функции в Python

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

  • Обязательные аргументы (Required arguments)
  • Аргументы-ключевые слова (Keyword argument)
  • Аргументы по умолчанию (Default argument)
  • Аргументы произвольной длины (Variable-length argumens)

Обязательные аргументы функции:

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

def bigger(a,b): if a > b: print a else: print b # В описании функции указано, что она принимает 2 аргумента # Корректное использование функции bigger(5,6) # Некорректное использование функции bigger() bigger(3) bigger(12,7,3)

Аргументы — ключевые слова

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

def person(name, age): print name, "is", age, "years old" # Хотя в описании функции первым аргументом идет имя, мы можем вызвать функцию вот так person(age=23, name="John")

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

Аргумент по умолчанию, это аргумент, значение для которого задано изначально, при создании функции.

def space(planet_name, center="Star"): print planet_name, "is orbiting a", center # Можно вызвать функцию space так: space("Mars") # В результате получим: Mars is orbiting a Star # Можно вызвать функцию space иначе: space("Mars", "Black Hole") # В результате получим: Mars is orbiting a Black Hole

Аргументы произвольной длины

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

def unknown(*args): for argument in args: print argument unknown("hello","world") # напечатает оба слова, каждое с новой строки unknown(1,2,3,4,5) # напечатает все числа, каждое с новой строки unknown() # ничего не выведет

Ключевое слово return

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

def bigger(a,b): if a > b: return a # Если a больше чем b, то возвращаем a и прекращаем выполнение функции return b # Незачем использовать else. Если мы дошли до этой строки, то b, точно не меньше чем a # присваиваем результат функции bigger переменной num num = bigger(23,42)

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

Некоторые переменные скрипта могут быть недоступны некоторым областям программы. Все зависит от того, где вы объявили эти переменные.

Читайте также:  Java version not detected

В Python две базовых области видимости переменных:

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

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

# глобальная переменная age age = 44 def info(): print age # Печатаем глобальную переменную age def local_info(): age = 22 # создаем локальную переменную age print age info() # напечатает 44 local_info() # напечатает 22

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

# глобальная переменная age age = 13 # функция изменяющая глобальную переменную def get_older(): global age age += 1 print age # напечатает 13 get_older() # увеличиваем age на 1 print age # напечатает 14

Рекурсия

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

Напомним, что факториалом числа, например, 5 является произведение всех натуральных (целых) чисел от 1 до 5. То есть, 1 * 2 * 3 * 4 * 5

Рекурсивная функция вычисления факториала на языке Python будет выглядеть так:

def fact(num): if num == 0: return 1 # По договоренности факториал нуля равен единице else: return num * fact(num - 1) # возвращаем результат произведения num и результата возвращенного функцией fact(num - 1)

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

Читайте также:  Template program in cpp

Рецепт создания функции в Python

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

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

# На данном этапе мы еще не указываем имена переменных def rectangle_area_finder( ): """ >>> rectangle_area_finder(3, 5) 15 >>> rectangle_area_finder(17.2, 6) 103.2 """
# функция принимает два числа, а возвращает одно def rectangle_area_finder( ): """ (num, num) -> num >>> rectangle_area_finder(3, 5) 15 >>> rectangle_area_finder(17.2, 6) 103.2 """
# Поскольку это математическая функция нам вполне подойдут имена a и b def rectangle_area_finder(a, b): """ (num, num) -> num >>> rectangle_area_finder(3, 5) 15 >>> rectangle_area_finder(17.2, 6) 103.2 """
def rectangle_area_finder(a, b): """ (num, num) -> num Returns an area of a rectangle with given sides a and b. >>> rectangle_area_finder(3, 5) 15 >>> rectangle_area_finder(17.2, 6) 103.2 """
def rectangle_area_finder(a, b): """ (num, num) -> num Returns an area of a rectangle with given sides a and b. >>> rectangle_area_finder(3, 5) 15 >>> rectangle_area_finder(17.2, 6) 103.2 """ return a * b

python function call example, пример вызова функции в Python

Как видно, при вызове команды help() с именем нашей функции в качестве аргумента мы получаем написанную нами документацию.

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

Источник

Функции в Python для начинающих

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

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

Функции в Python похожи на математические функции из алгебры. Например, в алгебре функция определяется как-то так:

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

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

def имя_функции(параметры): определениие_функции

Математическая функция f(x) = x * 2 в Python будет выглядеть вот так:

Читайте также:  Owncloud trusted domains config php

Ключевое слово def сообщает Python, что вы определяете функцию. После def вы указываете имя функции; оно должно отвечать тем же правилам, что и имена переменных. Согласно конвенции, в имени функции нельзя использовать заглавные буквы, а слова должны быть разделены подчеркиванием вот_так .

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

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

Ключевое слово return используется для определения значения, которое функция возвращает при вызове.

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

Ниже описан вызов функции f из предыдущего примера с параметром 2 .

Консоль ничего не вывела. Можно сохранить вывод вашей функции в переменной и передать ее функции print .

# Продолжение
# предыдущего примера
def f(x):
return x * 2
result = f(2)
print(result) # 4

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

def f(x):
return x + 1
z = f(4)
if z == 5:
print("z равно 5")
else:
print ("z не равно 5")

У функции может быть один параметр, несколько параметров или вообще их не быть. Чтобы определить функцию, не требующую параметров, оставьте круглые скобки пустыми.

def f():
return 1 + 1
result = f()
print(result) # 2

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

def f(x, y, z):
return x + y + z
result = f(1, 2, 3)
print(result) # 6

Наконец, функция не обязана содержать инструкцию return. Если функции нечего возвращать, она возвращает значение None .

def f():
z = 1 + 1
result = f()
print(result) # None

Обязательные и необязательные параметры ¶

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

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

def f(x=2):
return x**x
print (f()) # 4
print (f(4)) # 16

Сначала функция вызывается без передачи параметра. Так как параметр необязательный, x автоматически становится равен 2 , и функция возвращает 4 .

Затем та же функция вызывается с параметром 4 . То есть x будет равен 4 и функция вернет 16 . Вы можете определить функцию, которая принимает как обязательные, так и опциональные параметры, но обязательные нужно определять в первую очередь.

def add(x, y=10):
return x + y
result = add(2)
print(result)

Источник

Оцените статью