Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回は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の実行結果が代入されているとわかりますね。
以上、簡単な内容でしたがいちおう雑にまとめると、
関数を代入 | 関数の実行結果を代入 |
---|---|
変数=関数名だけ | 変数=関数名() |
という違いになります。
これをしっかりと区別しないとエラーが出たり、期待していた結果にならないので注意するようにしたいですね。