Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Python: Функции

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


def buttonC_wasPressed():
  lcd.print(myfun(-9))
  
  sum = add(3, 6)
  lcd.print(sum)
  pass
btnC.wasPressed(buttonC_wasPressed)

def myfun(x):
  if x > 0:
    return x
  else:
    return -x
    
def add(a, b):
  return a + b
  
def sayHello():
  print('Hello Kitty')

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


x = "awesome"

def myfunc():
  x = "fantastic"
  print("Cat is " + x)

myfunc()

print("The Cat is " + x)

# The Cat is fantastic
# The Cat is awesome

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


def myfunc():
  global x
  x = "fantastic"
  print(x)

myfunc()

print("Cat is " + x)

# fantastic
# Cat is fantastic

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


x = "awesome"

def myfunc():
  global x
  x = "fantastic"

myfunc()

print("Cat is " + x)

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

Создадим функцию с аргументами по умолчанию.


def meow(message, times = 3):
  print(message * times)
  
meow("Мяу") # МяуМяуМяу
meow("Мяу", 1) # Мяу

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

Также можно использовать именованные параметры.


def someFunc(a, b = 1, c = 10):
  print(a + b + c)

someFunc(3)               # 14: 3 + 1 + 10
someFunc(1, 2)            # 13: 1 + 2 + 10
someFunc(1, c = 3)        # 5: 1 + 1 + 3
someFunc(4, c = 5, b = 3) # 12: 4 + 3 + 5

Функция имеет один параметр без значения по умолчанию, за которым следуют два параметра со значениями по умолчанию. При первом вызове параметр a получает значение 3, остальные параметры получают своё значение по умолчанию. При втором вызове переменная a получает значение 1 в силу позиции аргумента, b получает значение 2. Третий аргумент не указан, поэтому используется значение по умолчанию. Остальные примеры проходят по такому же сценарию.

Функция может принимать произвольное количество аргументов.

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

Оператор return используется для возврата из функции. При этом можно также вернуть некоторое значение из функции. Примеры были выше.

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

Оператор pass используется в Python для обозначения пустого блока команд.

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

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

Синтаксис:


lambda args: expression

Пример сложения двух чисел при помощи лямбды-функции.


sumLambda = lambda x, y: x + y
result = sumLambda(3, 6) # 9
print(result)

Смотри также пример с фильтрацией в списках.

Реклама