Статьи

Плавное обновление функций Python

В Python вы можете встретить такие вещи, как file (), print (), open (), range () и т. Д. Это так называемые встроенные функции . То есть функции, уже предоставленные самим языком, которые вы можете выполнять, ссылаясь на них (вызывая). Но что такое функция в любом случае? Это то, что мы собираемся изучить в этом уроке, способ Python!

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

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

1
2
3
def function_name(parameters):
   statement(s)
   return expression

parameters в определении функции являются необязательными, так как некоторые функции не требуют передачи параметров во время вызова функции. Если передано более одного параметра, параметры разделяются запятыми, и они привязываются к аргументам в функции, которые соответствуют переданным параметрам. Операторы (тело функции) выполняются при вызове функции.

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

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

Скажем, мы хотели бы отобразить имя любого сотрудника, введенного в систему. Это может выглядеть следующим образом:

1
2
3
4
5
6
employee_name = ‘Abder’
 
def print_name(name):
    print name
     
print_name(employee_name)

Как видите, если мы хотим вызвать функцию, мы просто идентифицируем следующее:

  • имя функции (то есть print_name)
  • параметры (то есть имя сотрудника)

Если вы print_name(employee_name) перед определением функции, Python пожалуется на следующее:

1
2
3
4
Traceback (most recent call last):
  File «test.py», line 3, in <module>
    print_name(employee_name)
NameError: name ‘print_name’ is not defined

Поэтому вы должны определить функцию перед ее вызовом.

Давайте возьмем другой пример. На этот раз мы будем использовать списки . Предположим, у нас есть следующий список:

numbers_list = [1,2,3,4,5]

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

01
02
03
04
05
06
07
08
09
10
numbers_list = [1,2,3,4,5]
 
def insert_numbers(numbers_list):
    numbers_list.insert(5, 8)
    numbers_list.insert(6, 13)
    print ‘List \»inside\» the function is: ‘, numbers_list
    return
     
insert_numbers(numbers_list)
print ‘List \»outside\» the function is: ‘, numbers_list

Обратите внимание, что вывод этого скрипта Python будет:

1
2
List «inside» the function is: [1, 2, 3, 4, 5, 8, 13]
List «outside» the function is: [1, 2, 3, 4, 5, 8, 13]

Что мы можем из этого сделать? Мы можем сделать вывод, что параметры передаются по ссылке . То есть параметры в вызываемой функции такие же, как переданные аргументы (переменная / идентичность) вызывающей стороной, в отличие от передаваемых по значению, где параметры вызываемой функции являются копией переданных аргументов вызывающей стороны.

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
def add(x,y):
    return x+y
     
def subtract(x,y):
    return xy
     
def multiply(x,y):
    return x*y
     
def divide(x,y):
    return x/y
 
x = 8
y = 4
 
print ‘%d + %d = %d’ % (x, y, add(x, y))
print ‘%d — %d = %d’ % (x, y, subtract(x, y))
print ‘%d * %d = %d’ % (x, y, multiply(x, y))
print ‘%d / %d = %d’ % (x, y, divide(x, y))

Идите, попробуйте и посмотрите, что вы получите.

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

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

1
2
3
4
5
def double(x):
    return x*2
     
x = 10
print double(x)

Лямбда-способ написания этой функции заключается в следующем:

1
2
3
x = 10
double = lambda x: x*2
print double(x)

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

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