値を返す

Python SELF JA
レベル 6 , レッスン 2
使用可能

8.1 returnステートメント

Pythonでのreturnステートメントは関数の中心的な役割を果たしているんだ。 これを使って関数はその値を返すことができるってわけ。これを理解することは、 効率的なソフトウェア開発に重要だよ。

returnステートメントは関数の実行を終了し、結果を呼び出し元のコードに「返す」んだ。 もし関数が結果を出力する必要があって、それをさらに使いたい時にはreturnを使うよ。

値を返す

関数は数字や文字列、オブジェクト、他の関数やNoneさえも返すことができるんだ。例を見てみよう:


def sum(a, b):
    return a + b
        
result = sum(5, 3)
print(result)  # 8を出力する

このように、a + bの結果をresultという変数に代入できるんだ。

複数の値を返す

Pythonではタプルを使って関数から複数の値を返すことができるんだ:


def get_user():
    name = "イワン"
    age = 25
    return name, age
        
user_name, user_age = get_user()
print(user_name, user_age)  # イワン 25を出力する

returnで関数を終了させる

returnステートメントは、関数内のループや条件ブロックを含めても すぐに関数を終了させるためにも使えるよ:


def check_password(pswd):
    if len(pswd) < 8:
        return "パスワードが短すぎる"
    return "パスワードが受け付けられました"

値なしのreturn

returnが値なしで使われた場合、あるいは全く省略された場合、 関数はNoneを返すんだ:


def print_message(text):
    print(text)
    return
        
result = print_message("こんにちは")
print(result)  # Noneを出力する

returnステートメントはPythonの強力なツールで、プログラムの実行フローを 柔軟に管理してくれる。これを使えば、関数はただ値を返すだけでなく、 実行ロジックをコントロールできるから、コードがよりきれいで分かりやすくなるよ。

8.2 passステートメント

Pythonにはpassっていう特殊なステートメントがあって、これは何もしないよ。 passステートメントはコードブロックの中で、文法的には必要だけど まだ機能的には未定義の場所でプレースホルダーとして使われるんだ(何らかのコードが必要だけど、 まだ考えてない時)。

大規模なプロジェクトに取り組んでいる時や、プログラムを構成したいけど まだ何も操作をさせたくない時に特に便利だよ。以下はいくつかの passの使用例だよ。

関数の定義で:


def my_function():
    pass

ここでは、passはまだ実装されていない関数を定義するために使われるんだ。

ループや条件文で:


for item in my_list:
    pass

ループを作成する必要があるけど、その中身で何もする必要がない時に使うよ。

クラスで:

メソッドや属性なしでクラスを定義し、将来の使用のためにクラスの名前と構造を予約するんだ。

passステートメントは、プログラムの構造が明確で、実装の詳細が まだ決まっていない時に、コードを組織化して機能を徐々に追加することができるので、 開発やテストの過程でよく使われるよ。それによってプログラム全体の動作を 妨げることなくコードを書くことができるんだ。

8.3 関数を返す

Pythonでは、関数が別の関数を返すことができるっていうのは強力な道具だよ、 特にclosuresfirst-class functionsのサポートによって。 この言語の特性は、decoratorsfunction factoriesのような概念を 使用して、柔軟で表現力のあるプログラムを作成するのに役立つんだ。

Pythonでは関数はオブジェクトであるため、変数に割り当てたり 他の関数に引数として渡したり、結果としてそれらを返すことができるんだ。 この特性により、関数はモジュール性が高く、テストしやすいコードを作成するための 非常に強力なツールとなるんだよ。

例として、べき乗を行う関数を生成するための関数を作ってみよう。 一つの関数は2乗を行い、もう一つは3乗を行うという感じで。こんな風にコーディングするよ:


def power(exponent):
    def inner(base):
        return base ** exponent
    return inner
        
square = power(2)
print(square(3))  # 9を出力する
        
cube = power(3)
print(cube(3))  # 27を出力する

注意してほしいのは、power関数は inner関数を呼び出さないってこと。 代わりに、power関数の中でinner関数が baseというパラメータで宣言されているんだ。 でもinner関数は単に宣言されているだけじゃなくて、 その内部でexponentパラメータを使用しているんだよ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION