【Python入門】関数の使い方の注意点。関数の実行結果を代入することと、関数そのものを代入することを使い分けよう

Pythonの関数の使い方について、代入の仕方の違いを簡単に解説

今回はPython初心者がたまにやる初歩的なミスをご紹介します。それは関数を作って使うときに、

・関数そのものを代入する
・関数を実行した結果を代入する

ということを区別しないでコードを書いてしまうことです。

ではさっそく具体例を見ていきましょう。

Pythonにおける関数についての代入の注意点

def greet():
    return "hello"

今このように、greetという名前の関数を定義しました。

この関数greetをどう使うかですが、その使い方はおおきく2つに別れます。それが上述の、

・関数そのものを代入する
・関数を実行した結果を代入する

という2つです。

順番に見ていきましょう。

変数に関数そのものを代入する場合

まず、「関数そのものを代入する」場合のコードがこちらです。

func_obj=greet

func_objという変数にgreetという「関数を代入」しています。したがって、func_objは関数オブジェクトです。

実際にfunc_objの型を調べてみましょう。次のコードを見てください。

type(func_obj) 

この実行結果として、「function」と表示されます。functionとは「関数」を意味する英語です。

というわけで代入した結果は関数です

変数に関数の実行結果を代入する場合

次に、「関数の実行結果を代入する」場合のコードを見てみましょう。

func_result=greet() #←()がついています

greetの後に()がついていることに注意してください。

これも上と同じように、型を調べてみましょう。

type(func_result)

この結果として、「str」と表示されます。つまり文字列です。ではどんな文字列なのでしょう?実際にfunc_resultを出力してみましょう。

print(func_result)

こうすると、「hello」と出力されます。

つまり関数greetの実行結果が代入されているとわかりますね。

まとめ

以上、簡単な内容でしたがいちおう雑にまとめると、

関数を代入 関数の実行結果を代入
変数=関数名だけ変数=関数名()

という違いになります。

これをしっかりと区別しないとエラーが出たり、期待していた結果にならないので注意するようにしたいですね。

やっぱりプログラミングは独学だとわかりにくいですよね、そこでスクールや動画による解説を利用しましょう!

Tech Academy

厚切りジェイソンのCMでおなじみのプログラミングスクール。自宅でオンライン受講OK。現役のプロが一人一人に専属メンターになってくれ、質問すればすぐに回答。転職保証あり

Udemy

世界最大級のオンライン学習動画サービス。AI・データサイエンスなど最先端のプログラミング講座からビジネススキル講座まで10万以上の講座から選び放題。講師に掲示板から直接に質問もできる。