Funciones de declaración directa para evitar excepciones de 'Error de nombre'
Python requiere que se definan funciones antes de usarlas. Esto puede generar excepciones de 'NameError' cuando las funciones se definen más adelante en el código, como cuando se ordena una lista usando una función 'cmp' personalizada.
Para evitar este problema, es posible "declarar hacia adelante" "una función antes de que se defina. Esto implica envolver la invocación de la función en una función separada:
def sort_list():
sorted_list = sorted(mylist, cmp=cmp_configs)
print("\n".join([str(bla) for bla in sorted_list]))
def cmp_configs(...) -> int:
...
Al definir sort_list antes de cmp_configs, Python puede "ver" la declaración directa y evitar la excepción 'NameError'.
Funciones recursivas y declaración directa
En el caso de funciones recursivas, donde la definición de una función depende de otra, se puede realizar una declaración directa dentro de la misma función. útil:
def spam():
def eggs():
if end_condition():
return end_result()
else:
return spam()
if end_condition():
return end_result()
else:
return eggs()
spam()
Al declarar huevos dentro del spam, Python puede reconocer el nombre de la función y ejecutar de forma segura la llamada recursiva.
Conclusión
Adelante -Declarar funciones envolviendo sus invocaciones en funciones separadas o usando funciones internas dentro de funciones recursivas proporciona una solución alternativa para evitar excepciones de 'NameError' cuando las funciones se definen más adelante en el código. Sin embargo, es importante tener en cuenta que la organización del código y evitar bucles de dependencia entre funciones siempre es una buena práctica.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3