Python で関数が None を返すかどうかを確認する方法

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python で関数が None を返すかどうかを確認する方法を学びます。この実験では、2 つの数値の合計を返す関数を持つ単純な 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)

    このコードでは、以下のことを行っています。

    • xy という 2 つの引数を取る add という関数を定義します。
    • 関数の内部で、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)

    このコードでは、以下のことを行っています。

    • name という 1 つの引数を取る greet という関数を定義します。
    • 関数の内部で、文字列 "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 の 2 つの関数を定義します。
    • add 関数を引数 num1num2 で呼び出し、返された値を sum_result という変数に格納します。
    • subtract 関数を引数 num1num2 で呼び出し、返された値を 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

    この出力は、add 関数と subtract 関数の戻り値を正常に取得し、プログラム内で使用できたことを示しています。

次に、ある関数の戻り値を別の関数の引数として使用する、より複雑な例を作成しましょう。

  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 の 2 つの関数を定義します。
    • add 関数を引数 num1num2 で呼び出し、返された値を sum_result という変数に格納します。
    • multiply 関数を引数 sum_result2 で呼び出します。これは、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 かどうかを確認する

場合によっては、関数が常に意味のある値を返すとは限りません。そのような場合、関数は None を返すことがあります。None は 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)

    このコードでは、以下のことを行っています。

    • xy という 2 つの引数を取る divide という関数を定義します。
    • 関数の内部で、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 でない場合には、正しく結果を計算して出力したことも示しています。

None は Python のシングルトンオブジェクトであるため、値が None かどうかを確認する際には is 演算子を使用することが重要です。これは、プログラム全体に None のインスタンスが 1 つしか存在しないことを意味します。== 演算子を使用すると、オブジェクト自体ではなくオブジェクトの値を比較するため、必ずしも正しく動作しない場合があります。

まとめ

この実験では、Python の関数の戻り値について学びました。2 つの引数を取り、それらの合計を計算して結果を返す add という関数を作成しました。その後、この関数を呼び出し、返された値を変数に格納してコンソールに出力しました。

この実験では、関数が整数などのさまざまな型の値を返すことができることを示しました。これにより、関数は計算や操作を行い、結果を呼び出し元のコードに返してさらに利用することができます。