파이썬에서 함수를 forward-declare 할 수 있습니까? 선언되기 전에 자신의 cmp
함수를 사용하여 목록을 정렬하고 싶습니다.파이썬에서 함수를 forward-declare 할 수 있습니까?
print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)])
호출 후 cmp_configs
메서드를 정의하는 코드를 구성했습니다. 그것은이 오류와 함께 실패합니다
NameError: name 'cmp_configs' is not defined
가 사용되기 전에 cmp_configs
방법을 "선언"어떤 방법이 있나요? 그것은 내 코드를 더 깨끗하게 보일 것입니까?
저는이 문제가 발생하지 않도록 코드를 재구성해야한다고 말하는 사람들이 있습니다. 그러나 어떤 경우에는 재귀를 구현할 때와 같이 피할 수없는 경우가 있습니다. 이 예제가 마음에 들지 않는다면 함수를 선언하기 위해 이 실제로 인 경우가 있다고 가정합니다. end_condition
및 end_result
이전
def spam():
if end_condition():
return end_result()
else:
return eggs()
def eggs():
if end_condition():
return end_result()
else:
return spam()
정의되었습니다
앞으로-선언 함수 것은 파이썬으로 필요하다이 경우를 생각해 보자.
코드를 재구성하고 호출 전에 항상 정의를 넣는 유일한 해결책입니까?
입니다. _if \ _ \ _ name \ _ \ _ == '\ _ \ _ main \ _ \ _': 스크립트의 마지막 줄에 main() _이 있으면 모든 것이 잘됩니다! –
@FilipePina 귀하의 의견을 이해하지 못했습니다. 왜 코드의 마지막 줄을 단순히'main()'으로 넣을 수 없습니까? –
@SanjayManohar :'import your_module'에서 실행을 피하십시오. – jfs