白黒つけようぜ!くまねこ(@kumanecoblog)です。
今日もPython捗っていますか?
このような質問を受けました。
「’float’ object is not callable」というエラーが出ました。
原因がさっぱりわかりません。
どうしたらいいでしょうか?
質問ありがとうございます!
プログラミング学習を始めてすぐは、たくさんエラーを出すものです!
僕もよくエラーを出しまくっていました。
もしかすると、このエラーはよくあるかもしれないと思ったので、
今回は「’float’ object is not callable」の原因とその対処方法を解説します!
なにか分からないことがあればTwitterのDMにてご連絡ください。
「こんな簡単な事聞いちゃってもいいのかな」と心配することはありません。
どんなことでもお気軽にご連絡ください!
ちなみにこの方のエラーは無事解消されたよ!
という方に役に立つ記事です。
エラー文の解説
表示されたエラー文を見てみましょう。
TypeError: 'float' object is not callable
なんとかてあるかと言うと、
float型のオブジェクトが呼び出せないよ!
と書いてあります。
float型とは小数点を含む数値のデータのことです。
簡単に言うと「この操作できないよ!」と書いてあります。
原因
このエラーが出る原因は大きく分けて2つあります。
その2つを紹介します。
1. 変数を関数として呼び出した時
- 変数に小数点を含む数値を入れている
- 変数を関数のように「変数()」と呼び出している
この2つの条件が重なった時、このエラーが出ます。
a = 3.14
a()
ちなみに、変数に整数や文字列が代入されていれば
エラー文がそれぞれ以下のようになります。
TypeError: 'int' object is not callable
TypeError: 'str' object is not callable
この対処法に進む。
2. 組み込み関数を変数として定義
今回質問してくれた方は、このパターンに近い状態でした。
そしてこのパターンの場合、対処法がとても厄介です。
組み込み関数とは、print関数やlen関数などのPythonがあらかじめ用意してある関数のことです。
これらの関数の名前を使って変数を宣言すると、このエラー文が出ます。
print = 3.14
print('a')
ちなみに、上と同じく、変数に整数や文字列が代入されていれば
エラー文がそれぞれ以下のようになります。
TypeError: 'int' object is not callable
TypeError: 'str' object is not callable
この対処法に進む。
解決法
1. 変数を関数として呼び出した時の解決法
対処法は、上のコードを例とすると
a = 3.14
a
#もしくはprint(a)
このように、変数の後に()をつけずに呼び出す形に直せばOKです。
たまにやってしまうケアレスミスだよ!
2. 組み込み関数を変数として定義した時の解決法
一度定義してしまうと、変数名を変更しただけではエラーは解除されません。
- ファイルを一度閉じてから、再度ファイルを開いて変数名を変更して宣言する
- 変数を削除する
この二つがあります。
ファイルを閉じて、再度変数名を宣言
このやり方は、ほぼリセットに近いやり方なので
JupyterNoteなどを使っていたら、一からセルを実行する必要があります。
もし、GoogleColaboratoryを使っていたら以下のやり方でリセットできます。
左上の▼を選択して「ランタイムを接続解除して削除」を選択してください。
接続解除後にセルを実行し直すと、解決できます。
※「削除」とありますが、書いたコードは削除されません。
質問してくれた方はこのやり方で解決できたよ
変数を削除
変数を削除する場合はこのコードを実行してください。
# 誤ってinputを変数として使用
input = 3.14
# inputという変数を削除
del input
このようにdelを使って変数を削除して、元の組み込み関数に戻すことができます。
まとめ
以上が「object is not callable」のエラー文が出た時の原因と解決法でした。
エラー文は基本的に英語で書いてあって、慣れるまでは「何が言いたいんだろう?」とエラー分の意味がわからないと言うこともしばしばあります。
ですが、エラーを出せば、また同じエラーに出会った時に「あのエラー文だ!」と
進研ゼミ状態になれるので
遠慮なくガンガンエラー出して学んで行きましょう!w
なにか分からないことがあればTwitterのDMにてご連絡ください。
「こんな簡単な事聞いちゃってもいいのかな」と心配することはありません。
どんなことでもお気軽にご連絡ください!
この記事が少しでも役立ててもらえたらうれしいです。
今回も最後まで読んでいただき、本当にありがとうございました!
コメント