В предыдущих примерах данной книги использовались встроенные функции языка Python, такие, как, например, print(). Однако в большинстве программ на языке Python может содержаться значительное число пользовательских функций, вызываемых по мере необходимости. Пользовательскую функцию можно создать, используя ключевое слово def (definition), после которого следует выбранное вами имя функции и скобки. В качестве имени для своей функции программист может выбирать любой идентификатор за исключением ключевых слов языка Python, а также существующих имен встроенных функций. Строка с определением функции обязана заканчиваться символом двоеточия. Инструкции, которые должны выполняться при вызове функции (тело функции), располагаются на строках ниже с использованием отступа.

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

def sum():
    print (2 + 3)
sum() #5

При создании пользовательских функций необходимо понимать принцип доступности переменных в программе (область видимости переменных).

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

Пример с глобальными переменными:

def sum():
    print (a + b)
a = 2; b = 3 # a и b глобальные переменные
sum() #5

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

def f():
    global a
    a = 1
    print(a) #1
f()
#теперь переменная a доступна за пределами функции
print(a + 1) #2