Чи можливо переадресувати оголошення в 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
раніше було визначено.
Є єдиним рішенням реорганізувати код і завжди поставити визначення перед викликами?