- 6 августа 2025
- 8 минут
- 364
Функции в Python: вызов и возврат. Математические функции
Статью подготовили специалисты образовательного сервиса Zaochnik.
Функции в Python создаются с использованием инструкции `def`. Это позволяет создать объект функции и назначить ему имя, которое будет служить ссылкой на этот объект.
```python
def TestFunction(arg1, arg2, arg3):
return arg1 + arg2 + arg3
```
В этом примере `TestFunction` — это имя функции, которое используется как при её описании, так и при вызове.
После заголовка функции в новой строке с отступом располагаются выражения тела функции.
В теле функции может находиться (и может отсутствовать) инструкция `return`, которая завершает выполнение функции и возвращает значение в основную программу.
Вызов функции и возврат значения
Пример вызова функции:
```python
a = TestFunction(10, 2, 5)
```
Если бы внутри функции отсутствовала команда `return`, то ничего не возвращалось бы, и переменная `a` не получила бы числовое значение. Если функция не указывает возвращаемое значение через `return`, то по умолчанию возвращается `None`.
Передача параметров в функцию
При описании функции после её имени в круглых скобках указываются параметры. Если их нет, скобки остаются пустыми, но они обязательно должны присутствовать. За скобками ставится двоеточие, обозначающее конец заголовка функции.
При вызове функции в скобках указываются переменные или выражения, которые станут параметрами. Даже если у функции нет параметров, пустые скобки все равно нужны.
Допустим, нам нужно вычислить число сочетаний из `n` элементов по `k`: для этого понадобятся факториалы трех значений: `n`, `k` и `n-k`. Вместо создания трех циклов, что увеличивает размер программы из-за дублирования кода, лучше написать одну функцию для вычисления факториала любого числа `n` и использовать её три раза. Вот как может выглядеть такая функция:
```python
def factorial(n):
result = 1
for i in range(2, n + 1):
result *= i
return result
```
Этот код должен находиться в том месте, где мы захотим вызвать функцию `factorial`.
Первая строка — это описание функции. `factorial` — это имя функции. В круглых скобках находится список параметров, который, в нашем случае, представляет собой одно значение `n`, заканчивающееся двоеточием.
Затем идет тело функции, оформленное в виде блока с отступом. Здесь мы вычисляем факториал числа `n` и сохраняем его в переменной `result`. Завершает работу функции команда `return result`, которая возвращает значение переменной. Инструкция `return` может находиться в любом месте функции, и её выполнение завершает работу функции, возвращая указанное значение. Если функция не возвращает значение, команда `return` используется без возвращаемого значения, а также в функциях без `return` может отсутствовать вовсе.
Теперь мы можем использовать нашу функцию несколько раз. В этом примере вызовем функцию `factorial` три раза для расчета трех факториалов: `factorial(n)`, `factorial(k)`, `factorial(n-k)`.
```python
n = int(input())
k = int(input())
print(factorial(n) // (factorial(k) * factorial(n - k)))
```
Мы также можем объявить функцию `binomial`, которая принимает два целых параметра `n` и `k` и вычисляет число сочетаний из `n` по `k`:
```python
def binomial(n, k):
return factorial(n) // (factorial(k) * factorial(n - k))
```
Теперь в основной программе мы можем вызвать функцию `binomial` для нахождения числа сочетаний:
```python
print(binomial(n, k))
```
Вернемся к задаче нахождения наибольшего из двух или трех чисел. Функцию для нахождения максимума из двух чисел можно написать так (например, в Python есть и встроенная функция `max`):
```python
def max(a, b):
if a > b:
return a
else:
return b
```
А теперь мы можем реализовать функцию `max3`, которая находит максимум из трех чисел:
```python
def max3(a, b, c):
return max(max(a, b), c)
```
Функция `max3` вызывает функцию `max` дважды: в первый раз для нахождения максимума из `a` и `b`, затем — для нахождения максимума из полученного значения и `c`.
Математические функции в Python
Для работы с математическими функциями в Python необходимо импортировать библиотеку `math`:
```python
import math
```
После импорта мы можем использовать функции из этой библиотеки следующим образом:
`math.имя_функции(…)`
Модуль `math` предоставляет множество математических функций и констант, полезных для научных расчетов, инженерных вычислений и различных математических операций.
Основные категории функций модуля math
Функции в библиотеке math:
- `ceil(x)` — возвращает ближайшее целое значение, большее или равное `x` (округление "вверх").
- `fabs(x)` — возвращает абсолютное значение числа `x` (модуль). В Python также есть функция `abs`, но она возвращает модуль числа с тем же типом; `fabs` всегда возвращает `float`.
- `factorial(x)` — возвращает факториал целого числа `x`. Если `x` не является целым, возбуждается исключение `ValueError`.
- `floor(x)` — возвращает округленное в меньшее целое значение `x` (округление "вниз").
- `frexp(x)` — возвращает число в экспоненциальной записи, а также мантиссу `m` и порядок `n` в виде кортежа `(m, n)`.
- `fsum(iterable)` — возвращает сумму числовых элементов итерируемого объекта в формате `float`.
- `isinf(x)` — проверяет, является ли объект `x` бесконечностью.
- `isnan(x)` — проверяет, является ли объект `x` NaN.
- `ldexp(x, i)` — возвращает `x * (2**i)`.
- `modf(x)` — возвращает дробную и целую часть `x` в виде кортежа, сохраняя знак.
- `trunc(x)` — возвращает целую часть числа `x` в виде целого значения.
Степенные и логарифмические функции
- `exp(x)` — возвращает `e**x`.
- `log(x[, base])` — возвращает натуральный логарифм `x`, или логарифм по указанному основанию.
- `log10(x)` — возвращает десятичный логарифм `x`.
- `pow(x, y)` — возвращает `x` в степени `y`, аргументы приводятся к типу `float`.
- `sqrt(x)` — возвращает квадратный корень из `x`.
Тригонометрические функции
- `acos(x)` — возвращает арккосинус `x` в радианах.
- `asin(x)` — возвращает арксинус `x` в радианах.
- `atan(x)` — возвращает арктангенс `x` в радианах.
- `atan2(y, x)` — возвращает арктангенс `y/x` с учетом квадранта.
- `cos(x)` — возвращает косинус `x` в радианах.
- `hyp(x, y)` — возвращает длину гипотенузы.
- `sin(x)` — возвращает синус `x` в радианах.
- `tan(x)` — возвращает тангенс `x` в радианах.
Преобразование радианов в градусы и наоборот
- `degrees(x)` — конвертирует радианы в градусы.
- `radians(x)` — конвертирует градусы в радианы.
Пример программы с математическими функциями
```python
from math import *
def my_function(x):
x = fabs(x) # Наша функция будет четной
y = sqrt(x) # Извлекаем квадратный корень
y = exp(sin(y) + 1) # Считаем синус, прибавляем 1 и возводим в экспоненту
return y
print(my_function(2))
```
Функция может быть реализована и в функциональном стиле:
```python
from math import *
def my_function(x):
return exp(sin(sqrt(fabs(x))) + 1)
print(my_function(2))
```