- 📘 День 11
- Функции
- Определение функции
- Объявление и вызов функции
- Функция без параметров
- Возвращаемое значение функции - Часть 1
- Функция с параметрами
- Передача аргументов парой ключ - значение
- Возвращаемое значение функции - Часть 2
- Функция с параметрами по умолчанию
- Произвольное количество аргументов
- Количество параметров функции по умолчанию и произвольное
- Функция как параметр для другой функции
- 💻 Упражнения: День 11
- Функции
Мы уже рассмотрели много встроенных функций Python. В этом разделе мы сосредоточимся на пользовательских функциях. Что же такое функция? Перед созданием функций давайте узнаем, что это такое, и для чего они нам нужны.
Функция - это переиспользуемый блок кода или программные инструкции, разработанные для выполнения определенного задания. Чтобы объявить функцию в Python есть ключевое слово def. Далее представлен синтаксис объявления функции. Блок кода функции выполняется только тогда, когда она вызвана.
Когда мы создаем функцию, мы называем это объявлением функции. Когда мы начинаем ее использовать, мы называем это вызовом функции (calling или invoking). Функции могут объявляться с параметрами и без них.
# синтаксис
# Объявление функции
def function_name():
код
код
# Вызов функции
function_name()Функция может быть объявлена без параметров.
Пример:
def generate_full_name():
first_name = 'Иван'
last_name = 'Петров'
space = ' '
full_name = first_name + space + last_name
print(full_name)
generate_full_name() # вызов функции
def add_two_numbers():
num_one = 2
num_two = 3
total = num_one + num_two
print(total)
add_two_numbers()Функция также может возвращать значения, если в функции нет выражения с ключевым словом return, функция возвращает значение None. Давайте перепишем функции выше, используя return. Теперь мы будем получать из вызванной функции значение и выводить его на печать.
def generate_full_name():
first_name = 'Иван'
last_name = 'Петров'
space = ' '
full_name = first_name + space + last_name
return full_name
print(generate_full_name())
def add_two_numbers():
num_one = 2
num_two = 3
total = num_one + num_two
return total
print(add_two_numbers())Мы можем передать в функцию в качестве параметров разные типы данных (числа, строки, булевые значения, списки, кортежи, словари или множества).
- Один параметр: Если наша функция принимает параметр, мы должны вызвать функцию, передав в нее аргумент
# синтаксис
# Объявление функции
def function_name(parameter):
код
код
# Вызов функции
print(function_name(argument))Пример:
def greetings(name):
message = name + ', добро пожаловать в Python!'
return message
print(greetings('Иван'))
def add_ten(num):
ten = 10
return num + ten
print(add_ten(90))
def square_number(x):
return x * x
print(square_number(2))
def area_of_circle(r):
PI = 3.14
area = PI * r ** 2
return area
print(area_of_circle(10))
def sum_of_numbers(n):
total = 0
for i in range(n+1):
total += i
return total
print(sum_of_numbers(10)) # 55
print(sum_of_numbers(100)) # 5050- Два параметра: У функции может быть параметр (или параметры), а может и не быть. Также у функции может быть два и более параметра. Если наша функция принимает параметры, мы должны вызывать ее с аргументами. Давайте взглянем на функцию с двумя параметрами:
# синтаксис
# Объявление функции
def function_name(para1, para2):
код
код
# Вызов функции
print(function_name(arg1, arg2))Пример:
def generate_full_name(first_name, last_name):
space = ' '
full_name = first_name + space + last_name
return full_name
print('Полное имя: ', generate_full_name('Иван', 'Петров'))
def sum_two_numbers(num_one, num_two):
sum = num_one + num_two
return sum
print('Сумма двух чисел: ', sum_two_numbers(1, 9))
def calculate_age(current_year, birth_year):
age = current_year - birth_year
return age
print('Возраст: ', calculate_age(2021, 1819))
def weight_of_object(mass, gravity):
weight = str(mass * gravity)+ ' Н' # сперва преобразуем значение в строку
return weight
print('Вес предмета в Ньютонах: ', weight_of_object(100, 9.81))Если мы передаем аргументы парой ключ-значение, порядок аргументов не имеет значения.
# синтаксис
# Объявление функции
def function_name(para1, para2):
код
код
# Вызов функции
print(function_name(para1='Иван', para2='Петров')) # порядок аргументов здесь не имеет значенияПример:
def print_fullname(firstname, lastname):
space = ' '
full_name = firstname + space + lastname
print(full_name)
print_fullname(firstname='Иван', lastname='Петров')
def add_two_numbers(num1, num2):
total = num1 + num2
return total
print(add_two_numbers(num2=3, num1=2)) # порядок не имеет значенияЕсли мы не возвращаем значение из функции, тогда наша функция по умолчанию возвращает None. Чтобы вернуть значение из функции мы используем ключевое слово return, после которого следует возвращаемая переменная. Мы можем вернуть из функции любой тип данных.
- Возвращаем строку:
Пример:
def print_name(firstname):
print(firstname)
print_name('Иван') # Иван
def print_full_name(firstname, lastname):
space = ' '
full_name = firstname + space + lastname
print(full_name)
print_full_name(firstname='Иван', lastname='Петров')- Возвращаем число:
Пример:
def add_two_numbers(num1, num2):
total = num1 + num2
return total
print(add_two_numbers(2, 3))
def calculate_age(current_year, birth_year):
age = current_year - birth_year
return age
print('Возраст: ', calculate_age(2019, 1819))- Возвращаем булево значение:
Пример:
def is_even(n):
if n % 2 == 0:
print('четное')
return True # return останавливает дальнейшее выполнение функции, аналогично break
return False
print(is_even(10)) # True
print(is_even(7)) # False- Возвращаем список:
Пример:
def find_even_numbers(n):
evens = []
for i in range(n + 1):
if i % 2 == 0:
evens.append(i)
return evens
print(find_even_numbers(10))Иногда мы передаем значения параметров по умолчанию, когда вызываем функцию. Если при вызове функции не передать аргументы, будут использованы их значения по умолчанию.
# синтаксис
# Объявление функции
def function_name(param=value): # В параметрах знак = не отделяется пробелами
код
код
# Вызов функции
function_name()
function_name(arg)Пример:
def greetings(name='Петр'):
message = name + ', добро пожаловать в Python!'
return message
print(greetings())
print(greetings('Иван'))
def generate_full_name(first_name='Иван', last_name='Петров'):
space = ' '
full_name = first_name + space + last_name
return full_name
print(generate_full_name())
print(generate_full_name('Денис', 'Никифоров'))
def calculate_age(birth_year, current_year=2023):
age = current_year - birth_year
return age
print('Возраст: ', calculate_age(1821))
def weight_of_object(mass, gravity=9.81):
weight = str(mass * gravity) + ' Н' # значение сперва должно быть преобразовано в строку
return weight
print('Вес предмета в Ньютонах: ', weight_of_object(100)) # 9.81 - среднее ускорение свободного падения на поверхности Земли
print('Вес предмета в Ньютонах: ', weight_of_object(100, 1.62)) # ускорение свободного падения на поверхности ЛуныЕсли мы не знаем, сколько аргументов будем передавать в функцию, мы можем создать функцию, которая может принимать произвольное количество аргументов, добавив * перед названием параметра.
# синтаксис
# Объявление функции
def function_name(*args): # можно использовать любое название параметра, но при использовании * принято называть параметр args (arguments)
код
код
# Вызов функции
function_name(param1, param2, param3,..)Пример:
def sum_all_nums(*nums):
total = 0
for num in nums:
total += num # аналогично записи total = total + num
return total
print(sum_all_nums(2, 3, 5)) # 10Примечание переводчика: аналогично можно при объявлении функции предусмотреть, что в нее будет передаваться произвольное количество аргументов парой ключ - значение. В таком случае перед названием параметра ставится **.
# синтаксис
# Объявление функции
def function_name(**kwargs): # можно использовать любое название параметра, но при использовании ** принято называть параметр kwargs (keyword arguments)
код
код
# Вызов функции
function_name(param1=value1, param2=value2, param3=value3,..)Пример:
def create_list_of_lists(**kwargs):
lst = []
for key, value in kwargs.items():
lst.append([key, value])
return lst
print(create_list_of_lists(a=2, b=3, c=5)) # [['a', 2], ['b', 3], ['c', 5]]def generate_groups (team, *args):
print(team)
for i in args:
print(i)
generate_groups('Команда-1', 'Иван', 'Петр', 'Максим', 'Никита')# Вы можете передавать функции как параметры
def square_number(n):
return n * n
def do_something(f, x):
return f(x)
print(do_something(square_number, 3)) # 9🌕 Вы уже многого достигли. Продолжайте! Вы только что завершили день 11 челленджа и теперь на 11 шагов дальше на пути к успеху. Теперь выполните несколько упражнений для мозга и мускулов.
Самое время выразить свои мысли об авторе и челлендже 30 дней Python. Вы можете оставить обратную связь по этой ссылке
- Объявите функцию add_two_numbers. Она принимает два параметра и возвращает сумму.
- Площадь круга рассчитывается так: площадь = π x r x r. Напишите функцию, которая считает area_of_circle.
- Напишите функцию add_all_nums, которая принимает произвольное количество аргументов и суммирует все аргументы. Убедитесь, что все аргументы в списке являются числами. Если нет, дайте соответствующую обратную связь.
- Температуру в градусах Цельсия (°C) можно перевести в градусы Фаренгейта (°F) по формуле: °F = (°C x 9/5) + 32. Напишите функцию, которая переводит из °C в °F, convert_celsius_to_fahrenheit.
- Напишите функцию check-season, она принимает месяц и возвращает время года: Осень, Зима, Весна или Лето.
- Напишите функцию calculate_slope, которая возвращает наклон линейной функции
- Квадратное уравнение выглядит так: ax² + bx + c = 0. Напишите функцию, которая возвращает множество решений квадратного уравнения, solve_quadratic_eqn.
- Объявите функцию print_list. Она принимает список в качестве параметра и выводит на печать каждый элемент списка.
- Объявите функцию reverse_list. Она принимает список в качестве параметра и возвращает развернутый наоборот список (используйте циклы).
print(reverse_list([1, 2, 3, 4, 5]))
# [5, 4, 3, 2, 1]
print(reverse_list1(["A", "B", "C"]))
# ["C", "B", "A"]- Объявите функцию capitalize_list_items. Она принимает список в качестве параметра и возвращает список, у которого каждый элемент начинается с заглавной буквы, а следом идут строчные.
- Объявите функцию add_item. Она принимает список и элемент в качестве параметров. Она возвращает список с элементом добавленным в конец.
food_staff = ['Картофель', 'Томат', 'Манго', 'Молоко']
print(add_item(food_staff, 'Мясо')) # ['Картофель', 'Томат', 'Манго', 'Молоко', 'Мясо']
numbers = [2, 3, 7, 9]
print(add_item(numbers, 5)) # [2, 3, 7, 9, 5]- Объявите функцию remove_item. Она принимает список и элемент в качестве параметров. Она возвращает список, из которого удален этот элемент.
food_staff = ['Картофель', 'Томат', 'Манго', 'Молоко']
print(remove_item(food_staff, 'Манго')) # ['Картофель', 'Томат', 'Молоко']
numbers = [2, 3, 7, 9]
print(remove_item(numbers, 3)) # [2, 7, 9]- Объявите функцию sum_of_numbers. Она принимает числовой параметр и суммирует все числа в этом диапазоне.
print(sum_of_numbers(5)) # 15
print(sum_all_numbers(10)) # 55
print(sum_all_numbers(100)) # 5050- Объявите функцию sum_of_odds. Она принимает числовой параметр и суммирует все нечетные числа в этом диапазоне.
- Объявите функцию sum_of_even. Она принимает числовой параметр и суммирует все четные числа в этом диапазоне.
- Объявите функцию evens_and_odds. Она принимает целое положительное число и считает количество четных и нечетных чисел в этом диапазоне.
print(evens_and_odds(100))
# Количество нечетных - 50.
# Количество четных - 51.- Объявите функцию factorial, Она принимает целое число и возвращает его факториал
- Объявите функцию is_empty, она принимает параметр и проверяет, пустой он или нет
- Напишите несколько функций, принимающих списки. Они должны: считать среднее арифметическое (calculate_mean), медиану (calculate_median), моду (calculate_mode), диапазон (calculate_range), дисперсию (calculate_variance), стандартное отклонение (calculate_std).
- Напишите функцию is_prime, которая проверяет, является ли число простым.
- Напишите функцию, которая проверяет, все ли элементы в списке уникальны.
- Напишите функцию, которая проверяет, все ли элементы в списке одного типа.
- Напишите функцию, которая проверяет, является ли переданная строка допустимым названием для переменной в Python
- Откройте файл countries-data.py в папке data.
- Создайте функцию most_spoken_languages (самые часто используемые языки в мире). Она должна возвращать 10 или 20 самых используемых в мире языков в порядке убывания
- Создайте функцию most_populated_countries. Она должна возвращать 10 или 20 самых населенных стран в порядке убывания.
🎉 ПОЗДРАВЛЯЮ ! 🎉
