Уроки по Python, часть 5 - функции



















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



Строение
Функции обозначаются так:



def hello():

print('hello')


Давайте разберем этот код. def — ключевое слово, обозначает начало функции. Далее следует имя функции, любое (но правила имен переменных учитываются). Скобки, которые нужны для передачи параметров, но об это позднее. Далее двоеточие, которое обозначает блок функции. И само тело — в нем можно писать любой код.



Вы спросите — «А как же запустить функцию?». Легко, просто напишите в коде имя функции со скобками. Например, так:

hello()


Функция автоматически начнет выполняться.



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



name = input('Имя...')

def print_name(name): #В скобках - параметр, который получает функция
print('Твое имя - ' + name)
a=input('Да?')
if a == 'да':
print_name(name)
elif a== 'нет':
print_name('нет :(') #Передаем "нет :(" как параметр
#Еще какой-нибудь код, где мы вызываем эту функцию


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




name = input('Имя...')

def print_name(name='none'): #В скобках - параметр, который получает функция
print('Твое имя - ' + name)


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



def print_name(name='none'):  

print('Твое имя - ' + name)
#Значение по-умолчанию
print_name()
#Способ 1, свое значение
print_name('царь')
#Способ 2, свое значение
print_name(name='котик')


Ну вроде бы с этим разобрались. Давайте разберем еще кое-что.



Возвращаемые значения и глобальные переменные
Функция может возвращать что-нибудь с помощью оператора return. Внимание! После выполнения оператора return, функция сразу же прекращает себя, т.е. закрывает и переходит обратно на то место, где функцию запустили, т.е. в основную ветку программы.

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

Давайте на примере посмотрим, как использовать этот return.



def print_name(name):
return name


На выходе мы получаем значение name.

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

Итак, осталось разобрать последнею проблему; именно проблему, потому что у многих возникает много проблем и путаницы с этим. А именно с глобальными и локальными переменными.



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



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

def simple():

global b
b='Дафтер'




После объявления переменной как глобальной, она доступна из всех пространств имен. Не рекомендуется все время использовать глобальные переменные; скоро вы поймете, почему так (или не поймете, что печально :'()



Домашнее задание
1. Создайте вложенную функцию (догадайтесь, как это сделать)

2. Создайте функцию, которое обрабатывает что-либо (например, получает в качестве аргумента список), делает что-нибудь с аргументом (например, добавляет один элемент) и возвращает это что-либо в основную ветку программы.



На этом все, постигайте дзен и не болейте!



P.S. Понравился урок? Помоги Дафтеру, присоединяйся к нам!



НОВЫЙ УРОК 6