エラープログラミング

【最新版】’float’ object is not callable 【原因と解決法】

スポンサーリンク

 

白黒つけようぜ!くまねこ(@kumanecoblog)です。
今日もPython捗っていますか?

以前、入門コースをチャレンジしてくれている方から
このような質問を受けました。

「’float’ object is not callable」というエラーが出ました。
原因がさっぱりわかりません。
どうしたらいいでしょうか?

質問ありがとうございます!

プログラミング学習を始めてすぐは、たくさんエラーを出すものです!
僕もよくエラーを出しまくっていました。

もしかすると、このエラーはよくあるかもしれないと思ったので、
今回は「’float’ object is not callable」の原因とその対処方法を解説します! 

なにか分からないことがあればTwitterのDMにてご連絡ください。
「こんな簡単な事聞いちゃってもいいのかな」と心配することはありません。
どんなことでもお気軽にご連絡ください!

くまねこ君
くまねこ君

ちなみにこの方のエラーは無事解消されたよ!

この記事は
  • 「’float’ object is not callable」のエラーを解消したい
  • エラーの原因が知りたい
  • Pythonの初心者で、まだエラーの解消になれていない

という方に役に立つ記事です。

スポンサーリンク

エラー文の解説

表示されたエラー文を見てみましょう。

TypeError: 'float' object is not callable

なんとかてあるかと言うと、

Pythonさん
Pythonさん

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にてご連絡ください。
「こんな簡単な事聞いちゃってもいいのかな」と心配することはありません。
どんなことでもお気軽にご連絡ください!

この記事が少しでも役立ててもらえたらうれしいです。
今回も最後まで読んでいただき、本当にありがとうございました!

コメント

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