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

Средний уровень Python для разработчиков

Jasmin Ludolf

Senior Data Science Content Developer

Среднее значение

# Create a custom function
def average(values):
    # Calculate the average
    average_value = sum(values) / len(values)

    # Round the results
    rounded_average = round(average_value, 2)

    # Return rounded_average as an output
    return rounded_average
  • values = Аргумент
Средний уровень Python для разработчиков

Аргументы

  • Значения, передаваемые функции или методу
    • Позиционные
    • Именованные
Средний уровень Python для разработчиков

Позиционные аргументы

  • Аргументы передаются по порядку, через запятую
# Round pi to 2 digits
print(round(3.1415926535, 2))
3.14
Средний уровень Python для разработчиков

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

  • Аргументы передаются путём присвоения значений keywords

  • Удобно для понимания и отслеживания аргументов

# Round pi to 2 digits 
print(round(number=3.1415926535
Средний уровень Python для разработчиков

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

  • Аргументы передаются путём присвоения значений keywords

  • Удобно для понимания и отслеживания аргументов

# Round pi to 2 digits 
print(round(number=3.1415926535, ndigits=2))
3.14
Средний уровень Python для разработчиков

Определение именованных аргументов

# Get more information about the help function
print(help(round))
Help on built-in function round in module builtins:

round(number, ndigits=None)
    Round a number to a given precision in decimal digits.

    The return value is an integer if ndigits is omitted or None.  Otherwise,
    the return value has the same type as the number.  ndigits may be negative.
Средний уровень Python для разработчиков

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

Help on built-in function round in module builtins:

round(number, ndigits=None)
  Round a number to a given precision in decimal digits.

  The return value is an integer if ndigits is omitted or None. Otherwise 
  the return value has the same type as the number. ndigits may be negative.

$$

  • Первый аргумент: number
  • Второй аргумент: ndigits
Средний уровень Python для разработчиков

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

Help on built-in function round in module builtins:

round(number, ndigits=None)
    Round a number to a given precision in decimal digits.

    The return value is an integer if ndigits is omitted or None.  Otherwise,
    the return value has the same type as the number.  ndigits may be negative.
  • None = нет значения / пусто

  • Аргумент по умолчанию: способ задать значение default для argument

  • Мы заменяем None на 2

  • Часто используемое значение — задаётся через аргумент по умолчанию

Средний уровень Python для разработчиков

Добавление аргумента

# Create a custom function
def average(values):
    average_value = sum(values) / len(values)
    rounded_average = round(average_value, 2)
    return rounded_average
Средний уровень Python для разработчиков

Добавление аргумента

# Create a custom function
def average(values, rounded=False):


Средний уровень Python для разработчиков

Добавление аргумента

# Create a custom function
def average(values, rounded=False):

# Round average to two decimal places if rounded is True if rounded == True:
average_value = sum(values) / len(values) rounded_average = round(average_value, 2) return rounded_average
Средний уровень Python для разработчиков

Добавление аргумента

# Create a custom function
def average(values, rounded=False):

# Round average to two decimal places if rounded is True if rounded == True: average_value = sum(values) / len(values) rounded_average = round(average_value, 2) return rounded_average
# Otherwise, don't round else: average_value = sum(values) / len(values) return average_value
Средний уровень Python для разработчиков

Использование изменённой функции average()

# List of preparation times (minutes)
preparation_times = [19.23, 15.67, 48.57, 23.45, 12.06, 34.56, 45.67]
Средний уровень Python для разработчиков

Использование изменённой функции average()

# Get the average without rounding
print(average(preparation_times, False))
28.4585714
# Get the average without rounding
print(average(preparation_times))
28.4585714
Средний уровень Python для разработчиков

Использование изменённой функции average()

# Get the rounded average
print(average(values=preparation_times, rounded=True))
28.46
Средний уровень Python для разработчиков

Давайте потренируемся!

Средний уровень Python для разработчиков

Preparing Video For Download...