0Pricing
Python Academy · Урок

Аргументы по умолчанию и именованные аргументы

Используйте значения параметров по умолчанию и синтаксис вызова с именованными аргументами.

«Аргументы по умолчанию и именованные аргументы» — бесплатный урок Python Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Значения параметров по умолчанию и синтаксис вызова с именованными аргументами делают функции Python гибкими и понятными без дополнительных пояснений.

Значения параметров по умолчанию

def greet(name, greeting='Hello'): задаёт для greeting значение по умолчанию. При вызове его можно не указывать.
def greet(name, greeting='Hello'):
    print(f'{greeting}, {name}!')
greet('Alice')
greet('Bob', 'Hi')

Именованные аргументы

Вызывайте функцию с указанием имён: greet(name='Alice', greeting='Hi'). При использовании именованных аргументов их порядок не важен.
def describe(name, age, city):
    print(f'{name}, {age}, {city}')
describe(age=30, city='NYC', name='Alice')

Сочетание позиционных и именованных аргументов

При вызове позиционные аргументы должны идти перед именованными. Вызов describe('Alice', city='NYC', age=30) корректен.
def f(a, b, c='default'):
    print(a, b, c)
f(1, c='X', b=2)

Ловушка изменяемого значения по умолчанию

НЕ используйте изменяемые значения по умолчанию: def f(lst=[]) использует один и тот же список во всех вызовах. Вместо этого используйте def f(lst=None): lst = lst or [].
def append(x, lst=None):
    if lst is None:
        lst = []
    lst.append(x)
    return lst
print(append(1))
print(append(2))

Аргументы только по имени

Параметры после * должны передаваться по имени: def f(a, *, b): только b нельзя передать позиционно. Это делает вызов понятнее.
def f(a, *, b):
    return a + b
print(f(1, b=2))

Аргументы только по позиции (3.8+)

Параметры перед / должны передаваться позиционно: def f(a, b, /, c): a и b нельзя передать по имени.
def f(a, b, /, c=0):
    return a + b + c
print(f(1, 2, c=3))

**kwargs

def f(**kwargs) собирает дополнительные именованные аргументы в словарь. Это удобно для передачи параметров дальше.
def show(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}={v}')
show(name='Alice', age=30)

Сочетание *args и **kwargs

def f(*args, **kwargs) принимает любое сочетание позиционных и именованных аргументов.
def debug(*args, **kwargs):
    print('args:', args)
    print('kwargs:', kwargs)
debug(1,2,x=3)

Распаковка при вызове

f(*[1,2,3]) распределяет элементы списка по позиционным аргументам. f(**{'a':1}) распределяет элементы словаря по именованным аргументам.
def add(a, b, c): return a+b+c
d = {'a':1,'b':2,'c':3}
print(add(**d))

Частичное применение

from functools import partial; double = partial(pow, exp=2) заранее фиксирует некоторые аргументы.
from functools import partial
def power(base, exp): return base ** exp
square = partial(power, exp=2)
print(square(5))

Быстрая проверка

В чём опасность использования изменяемого аргумента по умолчанию, например def f(lst=[])?

Итоги

Аргументы по умолчанию: def f(x=val). Вызов с именованным аргументом: f(x=val). Избегайте изменяемых значений по умолчанию. Используйте * для аргументов только по имени, / — для аргументов только по позиции, а **kwargs — для сбора дополнительных аргументов.

Продолжайте

Отличная работа! Перейдите к следующему уроку, чтобы продолжить обучение.

Часто задаваемые вопросы

Урок «Аргументы по умолчанию и именованные аргументы» бесплатный?

Да — полный текст урока «Аргументы по умолчанию и именованные аргументы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Аргументы по умолчанию и именованные аргументы»?

Используйте значения параметров по умолчанию и синтаксис вызова с именованными аргументами. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Аргументы по умолчанию и именованные аргументы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение и вызов функций
  2. Аргументы по умолчанию и именованные аргументы
  3. args и kwargs
  4. Возвращаемые значения и область видимости
← Назад к Python Academy