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()
どこでend_condition
そしてend_result
以前に定義されました。
コードを再編成して常に呼び出しの前に定義を置く唯一の解決策はありますか?