ある時点ですべての中級レベルの Python プログラマーの心にあったと確信している質問があります。つまり、これらの非常に永続的で同じようにイライラするものを修正/防止/回避/回避する方法NameErrors
です。私は実際のエラー (タイプミスなど) について話しているわけではありませんが、実際にはさらに下に定義されているのに、基本的にグローバル名が定義されていないと言う奇妙な問題です。なんらかの理由で、Python はこの分野で非常に困窮しているようです: すべての単一の変数は、それを参照するものよりも上に定義する必要があり、それを参照するものの上にのみ定義する必要があります (またはそう思われます)。
例えば:
condition = True
if condition == True:
doStuff()
def doStuff():
it_worked = True
Python から次のように表示されます。
Traceback (most recent call last):
File "C:\Users\Owner\Desktop\Python projects\test7.py", line 4, in <module>
doStuff()
NameError: name 'doStuff' is not defined
ただし、名前は定義されていましたが、Python が明らかに望んでいた場所ではありませんでした。doStuff()
したがって、大したことではないような安っぽい小さな関数の場合。特定の順序に対するシステムの要件を満たす領域に関数をカット アンド ペーストするだけです。しかし、実際にそれを使って何かを設計しようとすると、コードの整理が事実上不可能になります (このバグに対応するために、大量のコードを「整理」しなければなりませんでした)。私が書いた他の言語でこの問題に遭遇したことはないので、Pythonに固有のようです...しかし、とにかくドキュメントでこれを調査しましたが、解決策は見つかりませんでした(または潜在的な考えられる解決策につながる)ので、ヒント、トリック、回避策、またはその他の提案をいただければ幸いです。
特定の組織構造を学習するのと同じくらい簡単かもしれません (バグを回避するためのある種の "Pythonic" および非常に戦略的なアプローチのような)、または単に多くのimport
ステートメントを使用して、特定の組織構造でそれらを整理するのが簡単になるかもしれません。システムが動作しないようにするための命令...