เป็นไปได้ไหมที่จะส่งต่อประกาศฟังก์ชันใน 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
มีการกำหนดไว้ก่อนหน้านี้
เป็นทางออกเดียวที่จะจัดระเบียบรหัสใหม่และมักจะใส่คำจำกัดความก่อนที่จะเรียก?