Сегодня мы поговорим о том, что такое функции, и как с ними работать. Иногда, набор каких-то повторяющихся команд нужно выполнять несколько раз. Такие блоки команд обычно выносят в отдельные кусочки программы. Именно из функций состоят внешние модули, которые можно подключать к программам. У функции могут быть входные параметры называемые аргументами - это одна или несколько переменных, которые пишутся в скобках после имени функции. Также функция может возвращать одно или несколько значений с помощью команды return. Объявление функции начинается с ключевого слова def, далее следует имя функции, аргументы в скобках, и программный код отделённый четырьмя пробелами.
Для примера разберём простейшую функцию которая будет перемножать два любых числа. Назовём её umn.
def umn(a,b):
c=a*b
return c
Теперь, когда мы описали функцию, далее в этой же программе мы можем её использовать
a=int(input('Введите первое число: '))
b=int(input('Введите второе число: '))
с=umn(a,b)
print(c)
Внутри программы мы можем вызывать созданную нами функцию сколько угодно раз. Давайте создадим программу, которая будет считать прибавку к зарплате, менеджерам по продаже автомобилей. Пусть у каждого менеджера своя зарплата, в зависимости от его ранга, но начисления прибавки для всех работает по принципу +2 процента к базовой зарплате за каждый проданный автомобиль, если автомобилей продано больше чем 10.
Напишем функцию которая принимает в качестве аргументов размер зарплаты сотрудника, и количество проданных им за месяц автомобилей. Используем для округления результата команду round() которая округлит прибавку до целого числа.
def pribavka(zarplata, avto):
k=0
if(avto > 10):
k = round((avto - 10) * 0.02 * zarplata)
return k
a=int(input('Введите зарплату сотрудника: '))
b=int(input('Введите количество автомобилей проданных за месяц: '))
c=pribavka(a,b)
print('В этом месяце прибавка к зарплате составит: ' + str(c))
Давайте посмотрим как работает наша программа:
Введите зарплату сотрудника: 10000
Введите количество автомобилей проданных за месяц: 15
В этом месяце прибавка к зарплате составит: 1000
Если функция должна возвращать больше чем одну переменную, то переменные можно писать через запятую.
Например если в конце нашей функции стоит return a,b
def myfunc(x):
какие-то команды
какие-то команды
return a, b
то в программе, чтобы получить обе переменные мы тоже напишем их через запятую
a, b = myfunc(x)
Внутри функций вы можете использовать переменные, которые встречались в коде программы до команды вызывающей функцию по её имени. Но если внутри кода функции после какой-то из переменных поставить знак = то эта переменная автоматически становится локальной, то есть все её дальнейшие изменения не выходят в основной код программы.
Поясним на примере:
def boom(a, b):
z=15
c=a*b*z
return c
z=1
c=boom(15,20)
print(z)
Напечатает:
1
Так как внутри кода функции встретилась команда z=15, переменная z стала локальной, и теперь все её изменения не выходят за пределы функции. То есть переменная z, в основной программе останется равна единице. Это немного трудно понять, но любые изменения внешних переменных внутри функции делает их локальными, и не выходят за рамки данной функции. Единственная обратная связь которую предоставляет функция это возврат значений переменных с помощью команды return.
В следующем уроке мы начнём работать с сетью интернет, подписывайтесь на мой блог, будет еще много интересных уроков!
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
t3ran13, archibald116, svetlanaaa, tristamoff, gapel, vika-teplo, sva-lana, kondratij, bombo, nerengot, lokkie, vealis, prifix, ksantoprotein, vlad1m1r, verdon
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
def pribavka(zarplata, avto):
k=0
if(avto > 10):
k = round((avto - 10) * 0.02 * zarplata)
return(k)
a=int(input('Введите зарплату сотрудника: '))
b=int(input('Введите количество автомобилей проданных за месяц: '))
c=pribavka(a,b)
print('В этом месяце прибавка к зарплате составит: ' + str(c))
Может здесь опечатка: в функции возвращаем (k), а в программе k превращается в (c)? И еще одно: в одном случае return (c) в другом return c - скобки не нужны или нужны?
Нет опечатки здесь нету - возвращаемую переменную можно назвать как угодно, причем имена в функции и в программе могут быть разные, это не повлияет ни на что. Потому что return возвращает внутреннюю локальную переменную, и передает её во внешнюю переменную которая в программе.
Насчёт скобок - это была моя ошибка - скобки после return не нужны. Спасибо что заметили, поправил код!
P.S. если кто-то будет копировать код с данного поста, обратите внимание что четыре пробела перед блоками кода могут не скопироваться. Лучше перенаберите код вручную!