Функции

Функции

evgenij tkachenko

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

def имя_функции ([параметры]):

    инструкции

Определение функции начинается с выражения def, которое состоит из имени функции, набора скобок с параметрами и двоеточия. Параметры в скобках необязательны. А со следующей строки идет блок инструкций, которые выполняет функция. Все инструкции функции имеют отступы от начала строки.

Например, определение простейшей функции:

def say_hello():

    print("Hello")

Функция называется say_hello. Она не имеет параметров и содержит одну единственную инструкцию, которая выводит на консоль строку "Hello".

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

def say_hello():

    print("Hello")

     

say_hello()

say_hello()

say_hello()

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

Hello
Hello
Hello

Теперь определим и используем функцию с параметрами:

def say_hello(name):

    print("Hello,",name)

 

say_hello("Tom")

say_hello("Bob")

say_hello("Alice")

Функция принимает параметр name, и при вызове функции мы можем передать вместо параметра какой-либо значение:

Hello, Tom
Hello, Bob
Hello, Alice

Значения по умолчанию

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

def say_hello(name="Tom"):

    print("Hello,", name)

     

say_hello()

say_hello("Bob")

Здесь параметр name является необязательным. И если мы не передаем при вызове функции для него значение, то применяется значение по умолчанию, то есть строка "Tom".

Именованные параметры

При передаче значений функция сопоставляет их с параметрами в том порядке, в котором они передаются. Например, пусть есть следующая функция:

def display_info(name, age):

    print("Name:", name, "\t", "Age:", age)

     

display_info("Tom", 22)

При вызове функции первое значение "Tom" передается первому параметру - параметру name, второе значение - число 22 передается второму параметру - age. И так далее по порядку. Использование именованных параметров позволяет переопределить порядок передачи:

def display_info(name, age):

    print("Name:", name, "\t", "Age:", age)

     

display_info(age=22, name="Tom")

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

Неопределенное количество параметров

С помощью символа звездочки можно определить неопределенное количество параметров:

def sum(*params):

    result = 0

    for n in params:

        result += n

    return result

 

 

sumOfNumbers1 = sum(1, 2, 3, 4, 5)      # 15

sumOfNumbers2 = sum(3, 4, 5, 6)         # 18

print(sumOfNumbers1)

print(sumOfNumbers2)

В данном случае функция sum принимает один параметр - *params, но звездочка перед названием параметра указывает, что фактически на место этого параметра мы можем передать неопределенное количество значений или набор значений. В самой функции с помощью цикла for можно пройтись по этому набору и произвести с переданными значениями различные действия. Например, в данном случае возвращается сумма чисел.

Возвращение результата

Функция может возвращать результат. Для этого в функции используется оператор return, после которого указывается возвращаемое значение:

def exchange(usd_rate, money):

    result = round(money/usd_rate, 2)

    return result

 

result1 = exchange(60, 30000)

print(result1)

result2 = exchange(56, 30000)

print(result2)

result3 = exchange(65, 30000)

print(result3)

Поскольку функция возвращает значение, то мы можем присвоить это значение какой-либо переменной и затем использовать ее: result2 = exchange(56, 30000).

В Python функция может возвращать сразу несколько значений:

def create_default_user():

    name = "Tom"

    age = 33

    return name, age

 

 

user_name, user_age = create_default_user()

print("Name:", user_name, "\t Age:", user_age)

Здесь функция create_default_user возвращает два значения: name и age. При вызове функции эти значения по порядку присваиваются переменным user_name и user_age, и мы их можем использовать.

Функция main

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

def main():

    say_hello("Tom")

    usd_rate = 56

    money = 30000

    result = exchange(usd_rate, money)

    print("К выдаче", result, "долларов")

 

 

def say_hello(name):

    print("Hello,", name)

     

     

def exchange(usd_rate, money):

    result = round(money/usd_rate, 2)

    return result

 

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

main()


Report Page