如何在 Python 中检查函数是否返回 None

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Python 中检查一个函数是否返回 None。本实验会引导你创建一个简单的 Python 脚本,其中包含一个返回两个数字之和的函数,从而帮助你理解函数的返回值。然后,你将执行该脚本并观察输出结果。

接下来,实验会修改函数,使其返回不同的数据类型,最后聚焦于函数可能不会显式返回值,从而返回 None 的场景。你将学习如何捕获函数的返回值,然后使用 is 运算符检查该值是否为 None


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{{"如何在 Python 中检查函数是否返回 None"}} python/function_definition -.-> lab-559522{{"如何在 Python 中检查函数是否返回 None"}} python/arguments_return -.-> lab-559522{{"如何在 Python 中检查函数是否返回 None"}} end

了解函数返回值

在这一步中,你将了解 Python 中的函数返回值。函数是执行特定任务的可重复使用的代码块。通常,你会希望函数在完成工作后返回一个结果,这个结果就称为返回值。

让我们从创建一个简单的 Python 脚本开始,该脚本定义一个带有返回值的函数。

  1. 在 LabEx 环境中打开 VS Code 编辑器。

  2. ~/project 目录下创建一个名为 calculate.py 的新文件。

    ~/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 的函数,它接受两个参数 xy
    • 在函数内部,我们计算 xy 的和,并将其存储在一个名为 sum 的变量中。
    • return sum 语句指定函数在被调用时应返回 sum 的值。
    • 在函数外部,我们使用参数 53 调用 add 函数,并将返回的值存储在一个名为 result 的变量中。
    • 最后,我们使用 print() 函数显示 result 的值。
  4. 保存 calculate.py 文件。

  5. 在 WebIDE 中打开一个终端。

  6. 使用以下命令运行脚本:

    python calculate.py

    你应该会看到以下输出:

    8

    这个输出表明 add 函数正确计算了 5 和 3 的和,并返回了值 8,然后该值被打印到控制台。

现在,让我们修改函数以返回不同类型的值,例如字符串。

  1. 在 VS Code 中打开 calculate.py 文件。

  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 语句指定函数应返回问候消息。
    • 在函数外部,我们使用参数 "LabEx User" 调用 greet 函数,并将返回的值存储在一个名为 greeting 的变量中。
    • 最后,我们使用 print() 函数显示 greeting 的值。
  3. 保存 calculate.py 文件。

  4. 再次使用以下命令运行脚本:

    python calculate.py

    你应该会看到以下输出:

    Hello, LabEx User!

    这个输出表明 greet 函数正确创建了一个问候消息并返回了它,然后该消息被打印到控制台。

捕获返回值

在上一步中,你学习了如何定义返回值的函数。现在,你将学习如何在程序中捕获并使用这些返回值。捕获返回值意味着将函数返回的值存储在一个变量中,以便后续使用。

让我们继续使用你在上一步中创建的 calculate.py 文件。我们将修改脚本以执行更多操作并捕获返回值。

  1. 在 VS Code 中打开 calculate.py 文件。

  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)

    在这段代码中:

    • 我们定义了两个函数:addsubtract
    • 我们使用参数 num1num2 调用 add 函数,并将返回的值存储在一个名为 sum_result 的变量中。
    • 我们使用参数 num1num2 调用 subtract 函数,并将返回的值存储在一个名为 difference_result 的变量中。
    • 我们使用 print() 函数显示 sum_resultdifference_result 的值,并附带描述性文本。
  3. 保存 calculate.py 文件。

  4. 使用以下命令运行脚本:

    python calculate.py

    你应该会看到以下输出:

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

    这个输出表明我们成功捕获了 addsubtract 函数的返回值,并在程序中使用了它们。

现在,让我们创建一个更复杂的示例,其中我们将一个函数的返回值用作另一个函数的参数。

  1. 在 VS Code 中打开 calculate.py 文件。

  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)

    在这段代码中:

    • 我们定义了两个函数:addmultiply
    • 我们使用参数 num1num2 调用 add 函数,并将返回的值存储在一个名为 sum_result 的变量中。
    • 我们使用参数 sum_result2 调用 multiply 函数。这展示了如何将 add 函数的返回值用作 multiply 函数的输入。我们将返回的值存储在一个名为 product_result 的变量中。
    • 我们使用 print() 函数显示 sum_resultproduct_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

在某些情况下,函数可能并不总是返回有意义的值。在这种情况下,它可以返回 NoneNone 是 Python 中的一个特殊值,表示没有值。在使用函数的返回值之前,检查函数是否返回 None 很重要,以避免出现错误。

让我们修改 calculate.py 文件,使其包含一个可能返回 None 的函数。

  1. 在 VS Code 中打开 calculate.py 文件。

  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 的函数,它接受两个参数 xy
    • 在函数内部,我们检查 y 是否等于 0。如果是,则返回 None 以避免除零错误。
    • 如果 y 不为 0,我们计算 x / y 的结果并返回。
    • 在函数外部,我们使用分母为 0 调用 divide 函数。
    • 我们使用 is 运算符检查返回值是否为 None
    • 如果返回值为 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 的函数,它接受两个参数,计算它们的和并返回结果。然后你调用了该函数,将返回值存储在一个变量中,并将其打印到控制台。

本次实验展示了函数如何返回不同类型的值,例如整数。这使得函数能够执行计算或操作,并将结果返回给调用代码以供进一步使用。