You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Посчитайте программно (а не в голове) минимальное число среди 3, 10, 22, -3, 0 — и выведите его на экран. Воспользуйтесь функцией `min()`, которая работает аналогично `max()`.
У некоторых функций есть особенность — они принимают переменное число аргументов. Это не связано со значениями по умолчанию, как в случае с `round()`. Речь идёт о том, что количество передаваемых данных не ограничено фиксированным числом.
1
2
2
-
В этом уроке мы разберем функцию `max()`, а также посмотрим, как она работает в Python.
3
-
4
-
У некоторых функций есть особенность — они принимают переменное число параметров. И мы говорим не о значениях по умолчанию. Посмотрите на этот пример:
3
+
Рассмотрим функцию `max()`. Она находит наибольшее значение из переданных данных.
5
4
6
5
```python
7
-
max(1, 10, 3) # 10
6
+
print(max(1, 10, 3)) # => 10
7
+
print(max(1, -3, 2, 3, 2)) # => 3
8
8
```
9
9
10
-
В примере выше функция `max()` находит максимальное значение среди переданных параметров. Чтобы узнать, сколько параметров можно передавать на вход, нужно изучить [документацию](https://docs.python.org/3/library/functions.html?highlight=pow#max) этой функции. Там мы увидим такую конструкцию:
10
+
В документации можно встретить несколько вариантов описания `max()`. Чтобы упростить понимание, сосредоточимся на одном, который нам сейчас нужен:
11
11
12
12
```python
13
-
max(arg1, arg2, *args[, key])
13
+
max(arg1, arg2, /, *args, key=None)
14
14
```
15
15
16
-
Это значит, что `max()` принимает на вход два параметра и больше:
16
+
Это значит:
17
+
- функция требует как минимум два значения (`arg1` и `arg2`);
18
+
- дальше можно передавать ещё сколько угодно значений (`*args`);
19
+
- функция вернёт наибольшее из переданных.
20
+
21
+
Если среди аргументов есть несколько одинаковых максимальных значений, возвращается первый из них.
17
22
18
23
```python
19
-
max(1, -3, 2, 3, 2)#3
24
+
print(max(5, 5, 2))#=> 5
20
25
```
21
26
22
-
Если функция найдет несколько параметров с максимальным значением, значит, она вернет самый первый из них.
27
+
Аналогично работает функция `min()`, только она ищет наименьшее значение:
Copy file name to clipboardExpand all lines: modules/35-calling-functions/270-deterministic/ru/EXERCISE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,3 @@
1
-
2
1
Функция `random()` возвращает случайное число от 0 до 1 с большим количеством знаков после запятой. Реализуйте код, который выводит на экран случайное целое число в диапазоне от 0 до 10. Для этой задачи вам понадобится функция `random()` и функция [round()](https://docs.python.org/3/library/functions.html#round), которая округляет переданное ей значение
3
2
4
3
```python
@@ -8,4 +7,5 @@ round(2.320000789855705) # 2
8
7
Попробуйте решить это задание в одну строчку
9
8
10
9
## Алгоритм
10
+
11
11
Так как функция `random()` возвращает числа в диапазоне от 0 до 1, то чтобы получить числа от 0 до 10, нам нужно выполнить умножение на 10. Затем получившиеся число округляется и так мы получаем то, что нужно.
У функций в любом языке программирования есть фундаментальные свойства. Эти свойства помогают понимать, как функция будет вести себя в разных ситуациях, как её тестировать и где применять. Одно из таких свойств — **детерминированность**.
1
2
2
-
У функций внутри каждого языка программирования есть фундаментальные свойства. Эти свойства помогают прогнозировать поведение функций, способы их тестирования и место использования. К таким свойствам относится детерминированность.
3
-
4
-
Детерминированная функция возвращает один и тот же результат для одинаковых входных параметров. Например, детерминированной можно назвать функцию, которая считает количество символов:
3
+
**Детерминированная функция** всегда возвращает один и тот же результат при одинаковых входных данных. Например, детерминированной можно назвать функцию, которая считает количество символов:
5
4
6
5
```python
7
6
len('hexlet') # 6
@@ -11,9 +10,11 @@ len('wow') # 3
11
10
len('wow') # 3
12
11
```
13
12
14
-
Можно бесконечно вызывать эту функцию и передавать туда значение `'hexlet'` — она всегда вернет `6`.
13
+
Функцию `len()` можно вызывать бесконечно с одним и тем же аргументом, и она всегда вернёт один и тот же результат.
14
+
15
+
## Недетерминированные функции
15
16
16
-
Посмотрим и обратный случай — недетерминированные функции. Например, к этой категории относится функция, которая возвращает случайное число: у одного и того же входа мы получим всегда разный результат. Если хотя бы один из миллиона вызовов функция вернет другой результат, она считается недетерминированной. Это работает и в том случае, если параметры не принимаются:
17
+
Есть и обратные примеры — **недетерминированные функции**. Это функции, которые могут возвращать разные результаты при одинаковых входных данных или при их отсутствии (функции без параметров). Хороший пример — функция, которая возвращает случайное число:
17
18
18
19
```python
19
20
# Синтаксис импортов будет изучаться позже на Хекслете
@@ -24,4 +25,14 @@ random() # 0.09856613113197676
24
25
random() # 0.8839904367241888
25
26
```
26
27
27
-
Детерминированность — это важное свойство функции, так как она влияет на многие аспекты. Например, детерминированные функции удобны в работе — их легко оптимизировать и тестировать. Если возможно, то лучше сделать функцию детерминированной.
28
+
У этой функции нет аргументов, но её результат каждый раз разный. Если хотя бы один вызов среди миллионов даст другой результат, функция считается недетерминированной.
29
+
30
+
## Почему это важно
31
+
32
+
Детерминированность влияет на то, как мы работаем с функциями:
33
+
34
+
- детерминированные функции легко тестировать и предсказывать;
35
+
- их проще оптимизировать и использовать повторно;
36
+
- недетерминированные функции сложнее проверять, потому что результат меняется.
37
+
38
+
Поэтому там, где это возможно, лучше стремиться к тому, чтобы функция была детерминированной.
0 commit comments