Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonの関数の解説

【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の実行結果が代入されているとわかりますね。

まとめ

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

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

という違いになります。

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

愛を分かち合いましょう