Перейти к основному содержимому
Модуль 5 · Урок 1 из 417/36 в курсе~12 min
Уроки модуля (1/4)

защита и возвращение

функция — это повторно используемый блок кода: вы определяете его один раз с помощью def, затем вызывайте его столько раз, сколько захотите. Функции делают код модульным, проверяемые и самодокументируемые.

Основной синтаксис

Python
def saluta(nome):
    return f"Ciao, {nome}!"

saluta("Ada")     # 'Ciao, Ada!'
  • def представляет функцию, за которой следуют имя и параметры в скобки.
  • : открывает блок с отступом.
  • return отправляет значение обратно вызывающему объекту и завершает функцию.

Явный return против неявного None

Если вы не напишете return, функция неявно вернет None:

Python
def stampa_e_basta(x):
    print(x)

risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato)   # None

Пустой return (без значения) также возвращает None, но он может служить ранним выход:

Python
def primo_pari(nums):
    for n in nums:
        if n % 2 == 0:
            return n
    return None   # explicit: communicates "not found"

Несколько значений? Вернуть кортеж

В Python нет «выходных параметров»: чтобы вернуть более одного параметра, верните кортеж (часто распаковываемый вызывающей стороной).

Python
def divisione_resto(a, b):
    return a // b, a % b

quoziente, resto = divisione_resto(17, 5)
# 3, 2

Docstring: встроенная документация.

Первой строкой внутри функции является строка документации: она отображается в help(fn) и в качестве всплывающей подсказки в IDE.

Python
def area_cerchio(raggio):
    """Calcola l'area di un cerchio dato il raggio."""
    import math
    return math.pi * raggio ** 2

Область применения: локальные переменные

Переменные, определенные внутри функции, являются локальными: они не существуют. снаружи.

Python
def f():
    x = 10
    return x

f()    # 10
x      # NameError: name 'x' is not defined

Функции всегда что-то возвращают

В Python, если функция явно не объявляет оператор return или содержит пустой return, она неявно возвращает специальное значение None. Не существует функций, которые не возвращают значение.

Попробуйте это

Упражнение#python.m5.l1.e1
Попыток: 0Загрузка…

Определите функцию double(x)`, которая возвращает `x * 2`. Затем вызовите его с помощью 7 и присвойте результат результату. Оцените «результат».

Загрузка редактора…
Показать подсказку

Используйте возврат x * 2.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#python.m5.l1.e2
Попыток: 0Загрузка…

Определите `min_max(nums)`, который возвращает кортеж `(минимум, максимум)`. Вызовите его на `[3, 1, 4, 1, 5, 9, 2, 6]` и распакуйте результат в `mn, mx`. Оцените `(mn, mx)`.

Загрузка редактора…
Показать подсказку

вернуть мин(числа), максимум(числа)

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#python.m5.l1.e3
Попыток: 0Загрузка…

Определите функцию \`is_palindrome(text)\`, которая возвращает \`True\`, если входная строка равна ее перевернутой версии, и \`False\` в противном случае. Проверьте функцию, используя \`is_palindrome("radar")\` в качестве последнего выражения.

Загрузка редактора…
Показать подсказку

Используйте нарезку text[::-1], чтобы перевернуть строку и сравнить ее с исходным текстом.

Решение доступно после 3 попыток