1

私はPythonで非常に長いコードを持っているので、ここにすべてを書くことはできません. とにかく、問題は、semilogxコマンドを使用してコード内の関数をプロットしていて、すべてが正常に機能することです。ただし、plotコマンドに切り替えると、次のエラーが発生しました。

TypeError: 'bool' オブジェクトは呼び出し可能ではありません

問題の原因は何だと思いますか?

コード内で plot コマンドを使用すると、どこでも同じエラーが発生するようです。コードで使用する最初の変数をプロットしてみました。

 f=loadtxt(folder_out+"stars/stars"+str(output)+".txt",skiprows=2)
 ids=f[:,0]
 mass_star=f[:,1] # mass in Msun
 x=f[:,2]
 y=f[:,3]
 z=f[:,4]
 age=f[:,5] # age in Myr

 plot(x,y,'.')

そして、最後の行でエラーが表示されます。ファイルから変数を読み取ったと確信しています。それらは同じ次元を持っています。

4

1 に答える 1

9

エラーは、plotそれがあなたが思っているように関数ではなく、bool(つまりTrueFalseブール式の結果)であることを示しています。これにはいくつかの理由が考えられます。

  • boolをという名前の変数に明示的に割り当てますplot(おそらくループ内です。Pythonのループとifステートメントは新しいスコープを作成しないことに注意してください)
  • たくさんのfrom whatever import *ステートメントがあり、そのうちの1つは、その名前を覆い隠している名前plotをインポートしますpylabfrom whatever import plot気づいていない場合もあります)。

単純なテキスト検索で絞り込んで、plot明示的に行っているかどうかを確認できます。また、インポートを削除して、期待どおりに機能するまでスクリプトを削除し、問題のある行を特定することもできます。

于 2012-05-07T09:37:41.187 に答える