Pythonで関数を前方宣言することは可能ですか? cmp
宣言する前に 、独自の関数を使用してリストを並べ替えたい。
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
cmp_configs
呼び出しの後にメソッドの定義を配置するようにコードを編成しました。次のエラーで失敗します。
NameError: name 'cmp_configs' is not defined
cmp_configs
メソッドを使用する前に「宣言」する方法はありますか? それは私のコードをきれいに見せますか?
この問題が発生しないように、コードを再編成する必要があると言う誘惑に駆られる人もいると思います。ただし、これがおそらく避けられない場合もあります。たとえば、何らかの形式の再帰を実装する場合などです。この例が気に入らない場合は、関数を前方宣言することが本当に必要なケースがあると仮定してください。
Python で関数の前方宣言が必要になる次のケースを考えてみましょう。
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
whereend_condition
とend_result
は以前に定義されています。
コードを再編成し、常に呼び出しの前に定義を配置する唯一の解決策はありますか?