news
Управление шириной канала в настроенных серверах с VPN
KI
2 декабря 2022
Обновлено 11 января 2023

Создание функций в Python 3

Linux Python Ubuntu

Введение

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

  • print() — выводит информацию;
  • int() — преобразовывает строковый или числовой тип данных в целочисленный тип данных;
  • len() — возвращает длину значения.

В данной инструкции мы рассмотрим создание новых функций для использования в нашем проекте.

Подготовка перед работой

Необходимо подготовить систему к работе, установите последнюю версию Python 3 и разверните виртуальную среду.

Определение функции

Рассмотрим обычный код такой, как для вывода информации. Создадим файл test_hello.py и добавим функцию в нашей виртуальной среде. Функция определяется с помощью ключевого слова def():

def hello():

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

Добавим следующий кусок кода для вывода информации в консоль.

def hello():
print("Hello, Dear, User!")

В конце кода вызовем функцию hello().

def hello():
print("Hello, Dear, User!")
 
hello()

Запустим код и получим результат:

python3 test_hello.py
1
Рисунок 1 – Результат написанной функции

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

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

# Создание функции names()
def names():
# Переменная для ввода имени
name = str(input('Введите своё имя: '))
# Проверка на гласные буквы
if set('aeiou').intersection(name.lower()):
print('В вашем имени есть гласные буквы!')
else:
print('Ваше имя не содержит гласных букв')
 
# Итерация по имени
for letter in name:
print(letter)
 
# Вызов функции
names()

Так, мы создали функцию names() и использовали в ней условные операторы if-else и оператор for.

Работа с параметрами

До этого момента мы рассматривали функции без использования параметров, далее определим функцию и её параметры.

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

Рассмотрим код с тремя параметрами i, j и k и создадим функцию для складывания их всех вместе в разных конфигурациях. Затем их суммы будут напечатаны в функции add(). Для получения результата вызовем функцию.

Напишем следующий кусок кода в новом файле TestAdd.py:

def add(i, j, k):
q = i + j
w = i + k
e = j + k
print(q, w, e)
 
add(20, 25, 30)

Передали данные в параметры, т.е. 20 — для параметра i, 25 — для параметра j, 30 — для параметра k. Программа выполняет следующие математические действия:

q = 20 + 25
w = 20 + 30
e = 25 + 30

Запустим программу и получим наш результат в виде:

45 50 55

Когда мы передали 20, 25 и 30 в качестве параметров функции add(), мы получили ожидаемый результат.

Ключевые аргументы

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

Создадим файл с названием TestInfo. Определим функцию info() и присвоим параметры. Добавим оператора print() для вывода информации. Вауказа конце кода вызовем функцию info с использованием параметров и их значений, определенных внутри вызова функции info().

# Функция с параметрами
def info(name, age):
print("Name: " + name)
print("Age: " + str(age))

Далее рассмотрим присвоение значений параметрам.

# Определение функции с параметрами
def info(name, age):
print("Имя: " + name)
print("Возраст: " + str(age))
 
#Вызов функции с параметрами выше
info("ServerSpace", 25)
 
#Вызов функции с использованием ключевых аргументов
info(name="Team", age=35)

Запустим код и получим результат:

2
Рисунок 2 – Результат полученный с использованием параметров и ключевых аргументов

В следующем коде рассмотрим указывания параметра age в начале вызова функции info(). После определения функции мы вызываем оператора print() для вывода информации об имени и возрасте.

В конце кода вызовем функцию info, сначала указав возраст, затем имя. Но перед этим получим результат об имени, потом о возрасте внутри функции info(). Причина в том, что порядок вызова оператора print() не изменён:

# Определение функции с параметрами
def info(name, age):
print("Name: " + name)
print("Age: " + str(age))
 
#Вызов функции с использованием ключевых аргументов
info(age=40, name="ServerSpaceTeam")
3
Рисунок 3 – Результат вызова параметров ноборот

Присваивание ключевых аргументов

Скопируем файл TestInfo.py и изменим название на TestInfoValue.py

cp TestInfo.py TestInfoValue.py

По умолчанию параметру возраст присваиваем значение "1". Если вызвать функцию info, не указав значение параметра age, получим результат Age = 1. Рассмотрим варианты вызова функции info с указыванием значения параметра age и с использованием ключевого аргумента:

# Определение функции с параметрами
def info(name, age=1):
print("Name: " + name)
print("Age: " + str(age))
 
#Вызов функции с ключевым аргументом и без ключевого аргумента
info(name="ServerSpace")
info(name="Team", age=15)
4
Рисунок 4 – Результат выполненного кода с использованием значения по умолчанию

Мы рассмотрели два вида вызова функции info(). В первом случае мы указали значение параметру name и не указали значение параметру age и при выводе информации параметру age было присвоено значение по умолчанию "1". Во втором случае указали значения обоим параметрам, но значение параметра age по умолчанию не было отображено.

Возвращение значений

Данные из параметров можно передавать в функцию. Значение параметра можно возвращать с помощью оператора return.

При использовании return без аргумента, получим результат со значением None.

Создадим файл TestSquare.py и определим функцию testsquare с параметром i. Добавим переменную j в котором возведём параметр i в третью степень. Используем return, чтобы вернуть значение полученное в результате операции внутри переменной j. С помощью переменной result, присвоим значение 5 параметру i в функции testsquare. В конце кода используем оператор print() для вывода информации result. В результате вернется значение операции 5 ** 3. Использование "**" в Python обозначает возвышение в степень:

def testsquare(i):
j = i ** 3
return j
 
result = testsquare(5)
print(result)

После запуска кода и получим результат:

5
Рисунок 5 – Возвращение функции с помощью return

Если закомментировать строку return j, то получим результат:

6
Рисунок 6 – Возвращение None значения

Рассмотрим возвращение функции с помощью return в файле TestAdd.py:

def add(i, j, k):
q = i + j
w = i + k
e = j + k
return q, w, e
 
result = add(20,25,30)
print(result)

Запустим код и получим результат:

7
Рисунок 7 – Результат возвращения функции

Получаем значение (45, 50, 55) в виде кортежа, потому что при вызове функции return переменные указывали через запятую.

Использование main() в виде функции

Функция main() помещает в себя компоненты программы в одну функцию, в то же время функцию main() не обязательно вызывать в программе.

Рассмотрим использование main() в обычной программе, создадим файл TestMain.py. Определим функцию TestMain и добавим оператора print() для вывода текста. Определим функцию main() и добавим оператора print(). В нижней части кода добавим TestMain() и main() для вызова функций и вывода текста. Напишем код, запустим и получим результат:

def TestMain():
print("Hello, Dear, User!")
 
def main():
print("This is test text")
 
TestMain()
main()
8
Рисунок 8 – Результат вышеописанного кода

В Python можно использовать следующую конструкцию '__main__', в котором будет выполняться код верхнего уровня.

Целая конструкция выглядит следующим образом:

if __name__ == '__main__':

Рассмотрим программу с использованием конструкции '__main__'. Логика программы в том, чтобы код анализировал введённое значение в переменную name и сопоставил с гласными буквами. Если в имени есть гласные буквы, то будет возвращен результат
"В вашем имени есть гласные буквы":

# Объявление глобальной переменной и для ввода имени
name = str(input('Ваше имя: '))
 
# Функция для проверки гласных букв
def vowel():
 
if set('aeiou').intersection(name.lower()):
print('В вашем имени есть гласные буквы.')
else:
print('В вашем имени нет гласных букв.')
 
# Итерация букв в имени
def print_letters():
for letter in name:
print(letter)
 
# Определение главной функции
def main():
has_vowel()
print_letters()
 
# Выполнение функции main
if __name__ == '__main__':
main()

Также в конце можно указать две функции has_vowel() и print_letters(), результат будет одинаковым:

if __name__ == '__main__':
has_vowel()
print_letters()
Screenshot_51
Рисунок 9 – Результат выполненного кода

Выводы

В итоге можем сказать, функции — это объекты, принимающие аргументы и возвращающие значение.

Подробнее о написании модуля в Python, предлагаем посмотреть в нашей инструкции.

Здесь мы рассмотрели такие возможности, как:

  • определение функций;
  • работу с параметрами функций;
  • ключевые аргументы;
  • возвращение значений с помощью return;
  • использование main() в виде функции.
Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300