- 締切済み
most recent call last の意味
python のエラーメッセージに含まれる most recent call last とはどういう意味ですか? 「こういうときに出るエラーメッセージだ」みたいな説明ではなくて、英文和訳のように単語ごとの意味が知りたいです。ふつうの文章として意味がわかりそうでわからないので気持ち悪くてしょうがないです…
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- m-take0220
- ベストアンサー率60% (477/782)
Tracebackだと、通常はエラーが発生した命令の位置から呼び出し履歴を遡っていくものですが、そうするとエラーが発生した位置の表示がスクロールしないと見えなくなる可能性が高くなります。なので、表示として直前の呼び出し履歴が最後の方に表示される順序だということを注釈しているにすぎません。 普通の文章としてみるとおかしく思えるかもしれませんが、「Lady first」などと同じです。これが間違った英語だというと、某大統領が連呼した「America first」も間違いになります。
- cametan_42
- ベストアンサー率62% (162/261)
英語的には「間違って」いますね。 と言うより、簡易表示用の省略表現になっています。 What does “most recent call last” mean?: https://ell.stackexchange.com/questions/37672/what-does-most-recent-call-last-mean つまり、 The most recent call is last. (直近の「(関数)呼び出し」は最後にありますよ) の意です。 例えば、こうしますよね。 >>> def foo(): # エラーをわざと起こす関数 return 1/0 >>> def bar(): print(foo()) >>> それでbarを呼び出してみると当然エラーを吐くんですが。 >>> bar() Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> bar() File "<pyshell#12>", line 2, in bar print(foo()) File "<pyshell#10>", line 2, in foo return 1/0 ZeroDivisionError: division by zero >>> 当然プログラムを書いた側も barを呼び出す->fooを呼び出す->1/0を計算する(からエラーになる) って事が分かっているわけですが、トレースバックも「最後」に表示された直近の呼び出しであるreturn 1/0が「おかしい」と言っていますね。そこがmost recent callで、エラー表示の位置がlastになってるよ、ってわけです。