HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Существует несколько методов передачи данных в функции, и одним из базовых является использование позиционных параметров.</p>
1 <p>Существует несколько методов передачи данных в функции, и одним из базовых является использование позиционных параметров.</p>
2 <p>Позиционные параметры работают на основе их порядка в определении функции. Когда мы вызываем функцию и передаем ей значения, они подставляются в параметры в том же порядке, в котором они определены в функции.</p>
2 <p>Позиционные параметры работают на основе их порядка в определении функции. Когда мы вызываем функцию и передаем ей значения, они подставляются в параметры в том же порядке, в котором они определены в функции.</p>
3 <p>Напомним, что параметры это имена в определении функции: x и y. А аргументы это значения, что подставляются при вызове. В этом случае с аргументами (10, 20) параметр x получит значение 10, а y - 20.</p>
3 <p>Напомним, что параметры это имена в определении функции: x и y. А аргументы это значения, что подставляются при вызове. В этом случае с аргументами (10, 20) параметр x получит значение 10, а y - 20.</p>
4 <p>Но в Python у функций могут быть еще и именованные аргументы - keyword arguments. Их применять особенно удобно для вызова функций с множеством параметров одного типа.</p>
4 <p>Но в Python у функций могут быть еще и именованные аргументы - keyword arguments. Их применять особенно удобно для вызова функций с множеством параметров одного типа.</p>
5 <p>Например, мы вызываем следующую функцию:</p>
5 <p>Например, мы вызываем следующую функцию:</p>
6 <p>У функции calculate() три параметра - основное значение (base), значение, что вычитается и значение, на которое происходит умножение. При вызове этой функции, например calculate(10, 3, 2), может быть неочевидно сразу, где какой параметр, ведь их несколько и они одного, числового, типа.</p>
6 <p>У функции calculate() три параметра - основное значение (base), значение, что вычитается и значение, на которое происходит умножение. При вызове этой функции, например calculate(10, 3, 2), может быть неочевидно сразу, где какой параметр, ведь их несколько и они одного, числового, типа.</p>
7 <p>В таком случае мы можем вызвать функцию с именованными аргументами. Чтобы передать именованные аргументы в функцию, нужно указать их имена, которые были заданы при объявлении функции:</p>
7 <p>В таком случае мы можем вызвать функцию с именованными аргументами. Чтобы передать именованные аргументы в функцию, нужно указать их имена, которые были заданы при объявлении функции:</p>
8 <p>При вызове функции меняется порядок передаваемых аргументов. Когда функции назначаются соответствующие значения именованных аргументов, Python учитывает их имена, а не позиции. В результате функция будет всегда выводить одно и то же значение независимо от позиций переданных ей аргументов.</p>
8 <p>При вызове функции меняется порядок передаваемых аргументов. Когда функции назначаются соответствующие значения именованных аргументов, Python учитывает их имена, а не позиции. В результате функция будет всегда выводить одно и то же значение независимо от позиций переданных ей аргументов.</p>
9 <p>Нет строгих правил, по которым используются именованные аргументы. Однако широко практикуется такой подход: если функция принимает больше трех аргументов, нужно хотя бы часть из них указать по имени. Важно именовать аргументы, если несколько значений имеют одинаковый тип. В другом случае будет трудно понять, что делает функция с подобным вызовом:</p>
9 <p>Нет строгих правил, по которым используются именованные аргументы. Однако широко практикуется такой подход: если функция принимает больше трех аргументов, нужно хотя бы часть из них указать по имени. Важно именовать аргументы, если несколько значений имеют одинаковый тип. В другом случае будет трудно понять, что делает функция с подобным вызовом:</p>
10 <p>Сравните с этим:</p>
10 <p>Сравните с этим:</p>
11 <p>Такой код читать проще.</p>
11 <p>Такой код читать проще.</p>
12 <h2>Значения параметров по умолчанию</h2>
12 <h2>Значения параметров по умолчанию</h2>
13 <p>Иногда в функции параметры задаются с одними и теми же значениями. Так функцией открытия файлов open() чаще открывают их в режиме чтения, а функция print() добавляет перенос строки. В такой ситуации удобно указать значения по умолчанию:</p>
13 <p>Иногда в функции параметры задаются с одними и теми же значениями. Так функцией открытия файлов open() чаще открывают их в режиме чтения, а функция print() добавляет перенос строки. В такой ситуации удобно указать значения по умолчанию:</p>
14 <h2>Изменяемые объекты как параметры по умолчанию</h2>
14 <h2>Изменяемые объекты как параметры по умолчанию</h2>
15 <p>Python при использовании значений по умолчанию сохраняет их внутри объекта функции. При каждом вызове функции возвращаются сохраненные значения и подставляются в параметр.</p>
15 <p>Python при использовании значений по умолчанию сохраняет их внутри объекта функции. При каждом вызове функции возвращаются сохраненные значения и подставляются в параметр.</p>
16 <p>Посмотреть сохраненные значения можно через метод __defaults__:</p>
16 <p>Посмотреть сохраненные значения можно через метод __defaults__:</p>
17 <p>Потому важно<strong>не использовать</strong>изменяемые коллекции и объекты, ведь они будут сохранять все изменения между вызовами функции.</p>
17 <p>Потому важно<strong>не использовать</strong>изменяемые коллекции и объекты, ведь они будут сохранять все изменения между вызовами функции.</p>
18 <p>Правильным подходом будет создавать изменяемый объект в функции, а по умолчанию передавать None:</p>
18 <p>Правильным подходом будет создавать изменяемый объект в функции, а по умолчанию передавать None:</p>
19 <h2>Keyword-only параметры</h2>
19 <h2>Keyword-only параметры</h2>
20 <p>В Python есть возможность пометить параметры функции так, чтобы вызывать функцию можно было только передавая в них значения по именам. Такие параметры называются<strong>keyword-only</strong>, строго именованные, и в них нельзя передать позиционные аргументы. Выглядит функция с подобными параметрами так:</p>
20 <p>В Python есть возможность пометить параметры функции так, чтобы вызывать функцию можно было только передавая в них значения по именам. Такие параметры называются<strong>keyword-only</strong>, строго именованные, и в них нельзя передать позиционные аргументы. Выглядит функция с подобными параметрами так:</p>
21 <p>Здесь * выступает разделителем - отделяет обычные параметры от строго именованных. Такой разделитель можно использовать только один раз в одном определении. Также можно объявлять функции, у которых будут только строго именованные параметры. Для этого нужно поставить звездочку в самом начале перечня параметров.</p>
21 <p>Здесь * выступает разделителем - отделяет обычные параметры от строго именованных. Такой разделитель можно использовать только один раз в одном определении. Также можно объявлять функции, у которых будут только строго именованные параметры. Для этого нужно поставить звездочку в самом начале перечня параметров.</p>
22 <p>Пример выше демонстрирует подход к описанию параметров. Первый параметр - имя файла, который будет открыт. Оно всегда присутствует и связано по смыслу с именем функции. Поэтому этот параметр можно не именовать. А writable и binary - необязательные параметры, которые получают значения True/False. Если бы их передавали без указания имени, то было бы непонятно какой к чему относится. Поэтому опции и объявлены так, что могут быть указаны только явно и по имени.</p>
22 <p>Пример выше демонстрирует подход к описанию параметров. Первый параметр - имя файла, который будет открыт. Оно всегда присутствует и связано по смыслу с именем функции. Поэтому этот параметр можно не именовать. А writable и binary - необязательные параметры, которые получают значения True/False. Если бы их передавали без указания имени, то было бы непонятно какой к чему относится. Поэтому опции и объявлены так, что могут быть указаны только явно и по имени.</p>
23 <h2>Выводы</h2>
23 <h2>Выводы</h2>
24 <p>В этом уроке мы узнали, что у функций в Python кроме позиционных есть еще и именованные аргументы. Также мы научились использовать их. Они нужны, когда мы хотим изменить порядок размещения передаваемых аргументов.</p>
24 <p>В этом уроке мы узнали, что у функций в Python кроме позиционных есть еще и именованные аргументы. Также мы научились использовать их. Они нужны, когда мы хотим изменить порядок размещения передаваемых аргументов.</p>
25 <p>Важно запомнить, что для передачи именованных аргументов в функцию, нужно указать их имена, которые были заданы при объявлении функции. Когда функции назначаются значения именованных аргументов, Python учитывает их имена, а не позиции.</p>
25 <p>Важно запомнить, что для передачи именованных аргументов в функцию, нужно указать их имена, которые были заданы при объявлении функции. Когда функции назначаются значения именованных аргументов, Python учитывает их имена, а не позиции.</p>