Czy można zadeklarować dalej funkcję w Pythonie? Chcę posortować listę za pomocą własnej cmp
funkcji, zanim zostanie zadeklarowana.
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
Zorganizowałem swój kod, aby wstawić definicję cmp_configs
metody po wywołaniu. Błąd tego błędu:
NameError: name 'cmp_configs' is not defined
Czy jest jakiś sposób na „zadeklarowanie” cmp_configs
metody przed jej użyciem? Czy dzięki temu mój kod będzie wyglądał na czystszy?
Zakładam, że niektórzy ludzie będą mieli ochotę powiedzieć mi, że powinienem po prostu zreorganizować swój kod, aby nie miałem tego problemu. Są jednak przypadki, w których jest to prawdopodobnie nieuniknione, na przykład przy wdrażaniu niektórych form rekurencji. Jeśli nie podoba ci się ten przykład, załóż, że mam przypadek, w którym naprawdę konieczne jest przekazanie dalej zadeklarowanej funkcji.
Rozważ ten przypadek, w którym w Pythonie konieczne byłoby przekazywanie funkcji do przodu:
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
Gdzie end_condition
i end_result
zostały wcześniej zdefiniowane.
Czy jedynym rozwiązaniem jest reorganizacja kodu i zawsze umieszczanie definicji przed wywołaniami?