☆youtube更新中☆
Youtubeも登録で更新頻度がUPするかも!!

Youtubeで文章にするのが難しい内容について
実際にしゃべって解説しています。
ブログでは紹介していない(しにくい)内容も
じゃんじゃん更新中。

Youtubeでhobbyhappyを応援する

pythonの関数(def)の中に関数を引数として渡してみる

def-in-def-eyecatchPython
この記事は約4分で読めます。
sponsored
sponsored

今回もpythonについての記事です。

pythonで関数を定義することもあると思いますが、

その関数の定義でちょっとアドバンス的な使い方を習得したので、

ここでご紹介します。

関数の引数に関数を持たせることによるメリットなんかも

ご紹介していこうと思います。

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

Youtubeチャンネルにさまざまな動画を上げています

↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓

↓↓↓↓これまでのPythonの記事についてはこちら↓↓↓↓

まずはpythonの関数を用意する。

さて、まずはpythonで関数を用意するところからスタートです。

はっきりいってどんな関数でもいいですが、

基本的に関数と言ったら、引数を用いることがほとんどだと思いますから、

今回は、このような計算式を関数化してみることにします。

x2+5

2次関数ですね。

これを関数化すると、このようになりますね?

def f0(x):
    return x**2+5

関数名はf0としています。

また、2乗するところですが、

pythonでは**2となりますので注意して下さい。

^2とかやると怒られます。

pythonの関数で、引数に関数を持つものを作る。

次に、本題ですが、

引数に関数を持つ関数を用意しましょう。

今回は、微分する関数を用意しました。

いわゆる中心差分を使った数値微分ですね。

def fBibun(f,x):
    h=1e-4
    return ((f(y+h)-f(y-h))/(2*h))

関数の名前はfBibunとしました。

微分なのでBibunですね。ちょっと安易です。

この関数の引数の【f】

に注目してください。

よく見ると、ただの数値が入っていないことに注意です。

通常よく使う引数というものは、

ただの変数として使いますよね?

fBibun関数でいうところの、【x】がそれにあたります。

fは最初から関数として引数にいれる前提ですので、

このfBibun関数のように、f(x+h)や

f(x-h)なんて記述が可能なんです。

実際に引数に関数を持つ関数を使ってみる。

それでは、実際にやってみましょう。

テストしたいだけなので、printするだけにします。

また、具体的な数値を入れないと計算できませんから、

xにはテキトーに5という数字をいれてみます。

def f0(x):
    return x**2+5

def fBibun(f,y):
    h=1e-4

    return ((f(y+h)-f(y-h))/(2*h))


print(fBibun(f0,5))

こんな感じですね。

さて、計算結果は、

9.999999999976694

こんな感じになりました。

ちょっと手計算して値のチェックをしてみましょう。

x2+5をxで微分すると、

2xですね。

今回、yとして入れている値は5

その5がxにも入りますから、

答えとしては2*x=2*5

ということで、10となります。

計算結果としてはほぼ10となっていますので、

正しく計算できているということがわかりますね。

引数に関数を持つ関数を使用するメリット

さて、関数の微分を例にして話を進めてきましたが、

理解できましたでしょうか??

ここまで理解できれば、なんとなくメリットもわかってくるかと思います。

それが、

【いろんな関数で試したいときにラクできる】

これですね。

今回の例では、

x2+5をxで微分する。という例でしたが、

違う関数を微分したいとき、いちいちmain上、もしくは

微分している関数(具体的にはfBibun関数)を

直接いじるのはあまり効率的とは言えないですよね?

ただ、関数を引数として使えることがわかっていないと、

そのようにするしかありません。

なので、メリットの理解に加えて、

積極的にこの仕組みを使っていったほうがいいことがわかります。

今回のまとめ

私自身、引数に使えるもの(つかってきたもの)といえば、

せいぜい、intやstring、その配列、あとはクラスくらい

なものでした。

実際のところ、書籍で微分する関数を目にするまで、

やろうとも思ったことがなかったですが、

機械学習なんかやる人には当たり前に使う技術のようです。

ぜひあなたもこの技術を使ってみてください!!!


独学の限界を感じているあなた。

昨今のトレンドに乗り遅れていませんか?

「苦労して少ない情報をネット検索するのはもうやめましょう。」

プログラミング習得のテッパンはずばりスクールです。

「無料でpythonの基礎」を習得しませんか?

すでに1万人以上が受講している人気講座です。

時代のトレンドに乗り遅れる前に今のうちに習得しておきませんか??

コメント

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