pythonを勉強中です。3.9.1をmacのbig surで動かしてます、
pythonで故意にエラーを発生させようとして、正しい出力の後にエラーを吐かせたいのに、コマンドラインでエラーが先に出力されることがあります。
たとえば以下のコードを実行したときに
python
1from string import Template 2 3t = Template('$village folk send $$10 to $cause') 4print(t.substitute(village='Nottingham', cause='the ditch fund')) 5 6#プレースホルダにあるのにsubstituteにない場合はkeyerrorになる。 7print(t.substitute(village='Nottingham')) 8 9
私の環境では、
Nottingham folk send $10 to the ditch fund Traceback (most recent call last): File "/Users/.../tekitou.py", line 7, in <module> print(t.substitute(village='Nottingham')) File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 121, in substitute return self.pattern.sub(convert, self.template) File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 114, in convert return str(mapping[named]) KeyError: 'cause'
と正しく(?)出力されるときと、
Traceback (most recent call last): File "/Users/.../tekitou.py", line 7, in <module> print(t.substitute(village='Nottingham')) File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 121, in substitute return self.pattern.sub(convert, self.template) File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/string.py", line 114, in convert return str(mapping[named]) KeyError: 'cause' Nottingham folk send $10 to the ditch fund
と逆に表示されることがあります。
これはPythonの仕様でしょうか?だとするとデバッグのとき不便だなーと思うのですが、なにか対処法やベストプラウティスはありますでしょうか?
よろしくおねがいします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。