Python「関数のネスト ~関数の中に関数を定義する~」

Python

def文の中にdef文とreturn 中の関数名

こんにちは、徳です。

デジタルDIYができるようコーディング・プログラミング・画像加工・動画編集などを本やYouTubeで勉強しています。

現在は初心者なので、とにかくゆっくり進んでいくと思います。

また、「間違っていること」や「こうした方が良いよ」などがあれば、コメントなどしていただけたら幸いです。

では、いきましょう!

Python

今回は、

関数のネスト

です。

関数とは、複数の処理を一つにまとめたものです。

この複数の処理には、別の関数の定義することもできます。

徳

この書き方どんな感じか想像できますか?

想像と実際の書き方にそんなに差はないと思いますが、

少し違うと思います。

今回は、

その関数の中に関数を定義する書き方

を紹介します。

徳

よく使うことになる機能です。

何度も書いて慣れていきましょう。

それではよろしくお願いします。

関数のネスト

関数のネストとは

関数のネストとは、

関数の中に関数を定義する

ということです。

徳

ネストとは、「入れ子」のことです。

あるものの中に同じ種類のものが入っている

という感じですね。

どんなことができるの?

関数のネストは、

  • 関数を使用するときに別の関数も使用する
  • 指定した関数以外で間違って使用されたくない関数がある

場合に使用します。

関数を使用するときに別の関数も使用する

関数の中に関数を定義するため、

処理文内で使用すれば中の関数を使う

ことができます。

しかし実際には、

別々で関数を定義しておき、関数の処理文でもう一つの関数を使用する

ことでも可能です。

 徳

そのため、絶対にネストしないとできないことではありません。

指定した関数以外で間違って使用されたくない関数がある

ネストされた関数は、関数を使用しないと定義もされません。

徳

関数を使われて初めて定義されるため、使えませよね。

そのため、

指定した関数以外ではネストされた関数を使用することはできない

のです。

徳

こちらが使う目的のメインだと考えています。

書き方

def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)
徳

私は、この書き方が初めややこしく感じました。

考え方

def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)
①、関数の定義
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

まず、元の関数の定義をします。

この時に使用する引数があれば指定しましょう。

②、関数内の処理文を処理する
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

定義された関数の処理がされます。

ここで、ネストされた関数の定義もされます。

③、元の関数のreturnにネストされた関数名を指定
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

元の関数の戻り値に、

ネストされた関数名を指定

します。

ここに、ネストされた関数を入れることで、

ネストされた関数を呼び出す

ことができます。

また、引数には元の関数の引数を同じ引数を入れましょう

徳

引数を一緒にすることで、

実行した引数がネストされた関数に渡されます。

④、ネストされた関数に引数を渡す
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

return文に指定した引数1がネストされた関数の引数2に渡されます。

⑤、ネストされた関数の処理文を処理
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

引数2を使用して処理文を処理します。

⑥、戻り値を返す
def 関数名(引数1):
        処理文
        def ネストされた関数名 (引数2):
              処理文
              return 戻り値
       return ネストされた関数名 (引数1)

処理した後の指定した戻り値を返します。

徳

ここに戻り値がある場合は、

実行するときに変数に入れましょう。

関数のネスト

def multi(z):
       print("掛け算をします")
       def calc (x):
             y = x * 5
             return y
       return calc(z)

まとめ

今回は、

関数のネスト

について紹介させていただきました。

関数のネストとは、

関数内で別の関数を定義する

することです。

主に、

他の時に使用されたくない関数がある

時に使用します。

つまり、

元の関数の中で定義する

元の関数を使用した時に定義され使用できるようになる

ということです。

徳

定義されていない関数は使用できませんからね。

最後まで読んでいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました