Как проверить, возвращает ли функция None в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь проверять, возвращает ли функция None в Python. В рамках лабораторной работы вы узнаете о возвращаемых значениях функций, создав простой скрипт на Python с функцией, которая возвращает сумму двух чисел. Затем вы запустите скрипт и посмотрите на вывод.

Затем в рамках лабораторной работы функция будет модифицирована для возврата различных типов данных, и в конечном итоге внимание будет сосредоточено на сценариях, когда функция может не возвращать значение явно, что приводит к возврату None. Вы научитесь получать возвращаемое значение функции и проверять, равно ли оно None с использованием оператора is.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") subgraph Lab Skills python/conditional_statements -.-> lab-559522{{"Как проверить, возвращает ли функция None в Python"}} python/function_definition -.-> lab-559522{{"Как проверить, возвращает ли функция None в Python"}} python/arguments_return -.-> lab-559522{{"Как проверить, возвращает ли функция None в Python"}} end

Изучение возвращаемых значений функций

На этом этапе вы узнаете о возвращаемых значениях функций в Python. Функции - это повторно используемые блоки кода, выполняющие определенные задачи. Часто вам нужно, чтобы функция вернула результат после выполнения своей работы. Этот результат называется возвращаемым значением.

Начнем с создания простого скрипта на Python, который определяет функцию с возвращаемым значением.

  1. Откройте редактор VS Code в среде LabEx.

  2. Создайте новый файл с именем calculate.py в директории ~/project.

    ~/project/calculate.py
  3. Добавьте следующий код в файл calculate.py:

    def add(x, y):
        """This function adds two numbers and returns the result."""
        sum = x + y
        return sum
    
    ## Call the function and print the returned value
    result = add(5, 3)
    print(result)

    В этом коде:

    • Мы определяем функцию с именем add, которая принимает два аргумента, x и y.
    • Внутри функции мы вычисляем сумму x и y и сохраняем ее в переменной с именем sum.
    • Инструкция return sum указывает, что функция должна вернуть значение переменной sum при вызове.
    • Вне функции мы вызываем функцию add с аргументами 5 и 3 и сохраняем возвращаемое значение в переменной с именем result.
    • Наконец, мы используем функцию print() для вывода значения переменной result.
  4. Сохраните файл calculate.py.

  5. Откройте терминал в WebIDE.

  6. Запустите скрипт с помощью следующей команды:

    python calculate.py

    Вы должны увидеть следующий вывод:

    8

    Этот вывод показывает, что функция add правильно вычислила сумму 5 и 3 и вернула значение 8, которое затем было выведено в консоль.

Теперь изменим функцию так, чтобы она возвращала другое тип значения, например, строку.

  1. Откройте файл calculate.py в VS Code.

  2. Измените код следующим образом:

    def greet(name):
        """This function returns a greeting message."""
        message = "Hello, " + name + "!"
        return message
    
    ## Call the function and print the returned value
    greeting = greet("LabEx User")
    print(greeting)

    В этом коде:

    • Мы определяем функцию с именем greet, которая принимает один аргумент, name.
    • Внутри функции мы создаем приветственное сообщение, объединяя строку "Hello, ", значение аргумента name и строку "!".
    • Инструкция return message указывает, что функция должна вернуть приветственное сообщение.
    • Вне функции мы вызываем функцию greet с аргументом "LabEx User" и сохраняем возвращаемое значение в переменной с именем greeting.
    • Наконец, мы используем функцию print() для вывода значения переменной greeting.
  3. Сохраните файл calculate.py.

  4. Запустите скрипт еще раз с помощью следующей команды:

    python calculate.py

    Вы должны увидеть следующий вывод:

    Hello, LabEx User!

    Этот вывод показывает, что функция greet правильно создала приветственное сообщение и вернула его, которое затем было выведено в консоль.

Захват возвращаемого значения

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

Продолжим работу с файлом calculate.py, который вы создали на предыдущем этапе. Мы изменим скрипт, чтобы он выполнял больше операций и захватывал возвращаемые значения.

  1. Откройте файл calculate.py в VS Code.

  2. Измените код следующим образом:

    def add(x, y):
        """This function adds two numbers and returns the result."""
        sum = x + y
        return sum
    
    def subtract(x, y):
        """This function subtracts two numbers and returns the result."""
        difference = x - y
        return difference
    
    ## Call the functions and capture the return values
    num1 = 10
    num2 = 5
    
    sum_result = add(num1, num2)
    print("The sum of", num1, "and", num2, "is:", sum_result)
    
    difference_result = subtract(num1, num2)
    print("The difference between", num1, "and", num2, "is:", difference_result)

    В этом коде:

    • Мы определяем две функции: add и subtract.
    • Мы вызываем функцию add с аргументами num1 и num2 и сохраняем возвращаемое значение в переменной с именем sum_result.
    • Мы вызываем функцию subtract с аргументами num1 и num2 и сохраняем возвращаемое значение в переменной с именем difference_result.
    • Мы используем функцию print() для вывода значений sum_result и difference_result вместе с описательным текстом.
  3. Сохраните файл calculate.py.

  4. Запустите скрипт с помощью следующей команды:

    python calculate.py

    Вы должны увидеть следующий вывод:

    The sum of 10 and 5 is: 15
    The difference between 10 and 5 is: 5

    Этот вывод показывает, что мы успешно захватили возвращаемые значения функций add и subtract и использовали их в нашей программе.

Теперь создадим более сложный пример, где мы используем возвращаемое значение одной функции в качестве аргумента для другой функции.

  1. Откройте файл calculate.py в VS Code.

  2. Измените код следующим образом:

    def add(x, y):
        """This function adds two numbers and returns the result."""
        sum = x + y
        return sum
    
    def multiply(x, y):
        """This function multiplies two numbers and returns the result."""
        product = x * y
        return product
    
    ## Call the functions and capture the return values
    num1 = 5
    num2 = 3
    
    sum_result = add(num1, num2)
    product_result = multiply(sum_result, 2)  ## Use the return value of add as an argument to multiply
    
    print("The sum of", num1, "and", num2, "is:", sum_result)
    print("The product of the sum and 2 is:", product_result)

    В этом коде:

    • Мы определяем две функции: add и multiply.
    • Мы вызываем функцию add с аргументами num1 и num2 и сохраняем возвращаемое значение в переменной с именем sum_result.
    • Мы вызываем функцию multiply с аргументами sum_result и 2. Это демонстрирует, как возвращаемое значение функции add может быть использовано в качестве входных данных для функции multiply. Мы сохраняем возвращаемое значение в переменной с именем product_result.
    • Мы используем функцию print() для вывода значений sum_result и product_result вместе с описательным текстом.
  3. Сохраните файл calculate.py.

  4. Запустите скрипт с помощью следующей команды:

    python calculate.py

    Вы должны увидеть следующий вывод:

    The sum of 5 and 3 is: 8
    The product of the sum and 2 is: 16

    Этот вывод показывает, что мы успешно использовали возвращаемое значение одной функции в качестве аргумента для другой функции, демонстрируя мощность и гибкость возвращаемых значений функций.

Проверка на возврат значения None

В некоторых случаях функция может не всегда возвращать осмысленное значение. В таких ситуациях она может вернуть None. None - это специальное значение в Python, которое представляет отсутствие значения. Важно проверить, возвращает ли функция None, перед использованием ее возвращаемого значения, чтобы избежать ошибок.

Давайте изменим файл calculate.py, чтобы он включал функцию, которая может вернуть None.

  1. Откройте файл calculate.py в VS Code.

  2. Измените код следующим образом:

    def divide(x, y):
        """This function divides x by y and returns the result.
        If y is 0, it returns None to avoid division by zero errors.
        """
        if y == 0:
            return None
        else:
            return x / y
    
    ## Call the function and check if the return value is None
    numerator = 10
    denominator = 0
    
    result = divide(numerator, denominator)
    
    if result is None:
        print("Cannot divide by zero!")
    else:
        print("The result of", numerator, "/", denominator, "is:", result)
    
    denominator = 2
    result = divide(numerator, denominator)
    
    if result is None:
        print("Cannot divide by zero!")
    else:
        print("The result of", numerator, "/", denominator, "is:", result)

    В этом коде:

    • Мы определяем функцию с именем divide, которая принимает два аргумента, x и y.
    • Внутри функции мы проверяем, равно ли y 0. Если это так, мы возвращаем None, чтобы избежать ошибки деления на ноль.
    • Если y не равно 0, мы вычисляем результат x / y и возвращаем его.
    • Вне функции мы вызываем функцию divide с знаменателем, равным 0.
    • Мы проверяем, является ли возвращаемое значение None, используя оператор is.
    • Если возвращаемое значение равно None, мы выводим сообщение об ошибке.
    • В противном случае мы выводим результат деления.
    • Затем мы снова вызываем функцию divide с допустимым знаменателем и выводим результат.
  3. Сохраните файл calculate.py.

  4. Запустите скрипт с помощью следующей команды:

    python calculate.py

    Вы должны увидеть следующий вывод:

    Cannot divide by zero!
    The result of 10 / 2 is: 5.0

    Этот вывод показывает, что программа правильно обработала случай, когда знаменатель был равен 0, и вывела соответствующее сообщение об ошибке. Он также показывает, что программа правильно вычислила и вывела результат, когда знаменатель был не равен 0.

Важно использовать оператор is для проверки, является ли значение None, потому что None - это одиночный объект в Python. Это означает, что в всей программе существует только один экземпляр None. Использование оператора == может не всегда работать правильно, так как он сравнивает значения объектов, а не сами объекты.

Резюме

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

В практическом занятии показано, как функции могут возвращать значения различных типов, например, целые числа (integers). Это позволяет функциям выполнять вычисления или операции и передавать результаты обратно в вызывающий код для дальнейшего использования.