функции
До сих пор мы писали весь наш код в app.py, но по мере роста наших программ нам нужен лучший способ организации нашего кода. Нам нужно разбить наш код на более мелкие, более управляемые и удобные для сопровождения фрагменты, которые мы называем функциями. Функция представляет собой контейнер для нескольких строк кода, выполняющих определенную задачу.
Например, вы уже узнали о нескольких встроенных функциях Python. print()
и input()
. Каждая функция имеет цель и знает, как выполнить конкретную задачу. Итак, когда мы создаем большие сложные программы, мы должны разбивать наш код на более мелкие повторно используемые фрагменты, т. е. функции.
Давайте разберемся с этой концепцией, создав программу для печати приветственного сообщения.
print('Hi there!')
print('Welcome aboard!')
Здесь у нас есть простая программа, состоящая всего из двух строк кода. Теперь, допустим, они понадобятся нам в других программах, чтобы поместить их в функцию, которую мы сможем использовать повторно.
Позвольте мне ввести зарезервированное ключевое слово def
в Python, что является сокращением для определения и используется для определения функции.
def greet_user():
print('Hi there!')
print('Welcome aboard!')
Теперь этот блок кода будет определять функцию «greet_user
” со строками кодов после этого. Всякий раз, когда эта функция вызывается, эти две строки будут выполняться. Давайте использовать это:
print('start')
greet_user()
print('finish')
Программа выполняется последовательно, то есть вам нужно определить функцию перед ее вызовом в программе.
параметры
Определенные функции работают немного иначе, чем встроенные функции Python. Например, в случае print()
функция, она принимает некоторую информацию, которую мы хотим напечатать, но наша функция приветствия не принимает никакой информации. Не было бы лучше, если бы вы могли передавать имя пользователя здесь, а затем, вместо того, чтобы говорить «привет», вы могли бы напечатать имя пользователя?
Вы можете сделать это, добавив параметры в круглые скобки определенной функции. Позволь мне показать тебе:
def greet_user(name):
print('Hi there!')
print('Welcome aboard!')
Сейчас "name
” внутри круглых скобок будет действовать как локальная переменная, и мы можем передать имя пользователя при ее вызове.
greet_user('Shahbaz')
Теперь для параметра имени установлено значение «Shahbaz
». Давайте изменим программу, чтобы использовать ее.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
print('finish')
Важно отметить, что «имя» в первой строке называется параметром, тогда как указанное имя, т. е. Shahbaz, называется аргументом.
Давайте продолжим и запустим эту программу.
Итак, с этими параметрами мы можем получать информацию в наших функциях.
Теперь займемся чем-нибудь интересным. Допустим, вы хотите добавить еще одно имя в приветственное сообщение. Это просто.
def greet_user(name):
print(f'Hi {name}')
print('Welcome aboard!')
print('start')
greet_user('Shahbaz')
greet_user('Aayush')
print('finish')
Теперь обратите внимание, что когда у функции есть параметр, мы обязаны передать значение этого параметра. Если убрать имя из функции и запустить программу, то получим ошибку. Вы также можете использовать несколько параметров в одной функции, разделенных запятой.
Например, greet_user(first_name, last_name):
. Аргументы также будут отформатированы аналогичным образом.
Аргументы ключевых слов
До сих пор мы узнали, что всякий раз, когда мы определяем параметры для наших функций, мы всегда должны указывать значения, иначе мы получим ошибку. В последней программе аргументы 'Shahbaz'
и 'Bhatti'
называются позиционными аргументами, что означает, что их положение или порядок имеют значение в программе.
В Python у нас есть аргументы другого типа, называемые аргументами ключевого слова, для которых позиция не имеет значения. Позвольте мне показать вам, как они работают.
Посмотрите последнюю программу. Мы можем изменить его следующим образом:
def greet_user(first_name, last_name):
print(f'Hi {first_name} {last_name}')
print('Welcome aboard!')
print('start')
greet_user(first_name='Shahbaz', last_name='Bhatti')
print('finish')
Сейчас first_name
и last_name
являются параметрами ключевого слова. Вы можете поменять их местами, и результат будет таким же.
Это не означает, что мы всегда должны использовать аргументы ключевых слов. В большинстве случаев мы используем позиционные аргументы, но в определенных ситуациях эти аргументы с ключевыми словами помогают нам улучшить читаемость нашего кода.
Есть еще одна вещь, которую вам нужно знать об аргументах ключевых слов. Аргументы ключевого слова всегда должны следовать после позиционных аргументов.
Заявление о возврате
До сих пор мы научились создавать функции и отправлять им информацию, используя их параметры. Теперь давайте научимся создавать функции, возвращающие значения. Это особенно полезно, если вы выполняете какие-то вычисления и хотите вернуть результат тому, кто использует вашу функцию. Позволь мне показать тебе.
Давайте определим функцию, которая будет вычислять квадрат числа.
def square(number):
return number*number
Мы использовали оператор return, чтобы вернуть это число вне функции. Теперь, если мы вызовем эту функцию, она вернет значение точно так же, как input()
функция. Распечатаем на терминале.
Вы можете возразить, что тот же результат можно получить и без использования оператора return. Давайте проверим это.
Мы видим две вещи, число 9 и ничего. Что здесь происходит?
Когда интерпретатор Python выполняет этот код, сначала он вызывает квадратную функцию, и управление переходит к этой функции. Здесь мы вычисляем квадрат этого заданного числа, а затем печатаем его на терминале.
Теперь по умолчанию все функции возвращают значение none. Так что, если у нас здесь нет оператора return, по умолчанию Python ничего не возвращает. None — это объект, представляющий отсутствие значения. Это как ничего или ноль в C, C++, Java и Javascript.
Заворачивать!
Надеюсь, вы поняли важность функций.
Они являются важным аспектом изучения Python, если вы планируете писать большие и сложные программы во время своей карьеры программиста.
Оставьте комментарий