funciones de alto orden de Python

Funciones y métodos de Python

Como desarrollador, es probable que haya utilizado funciones habituales de JavaScript. Funciones denominadas de primer orden, & nbsp; no toman una función como parámetro ni devuelven una función.

Este artículo habla sobre funciones de orden superior (HOF). Estas son funciones que ayudan a los desarrolladores a reducir el código para hacerlo más legible pasando una función como argumento o devolviendo una función. Repasaremos algunos ejemplos básicos para presentarle HOF y la programación funcional y hablaremos sobre dos métodos de matriz avanzados populares que hacen uso de la construcción de funciones de orden superior para funcionar.




Ejemplos de funciones básicas de orden superior

Hay varias formas diferentes de usar funciones de orden superior en JavaScript.

Calculadora

Comencemos con un HOF básico que toma una función de devolución de llamada como argumento y devuelve esa devolución de llamada con algunos argumentos: & nbsp;

 // función de orden superior función función de orden superior (num1 , num2, cb) {return cb (num1, num2); // esto invoca nuestra función cb y pasa nuestros argumentos a la devolución de llamada. } // función de devolución de llamada add (num1, num2) {return num1 + num2; } función multiplicar (num1, num2) {return num1 * num2; } función dividir (num1, num2) {return num1 / num2; } función restar (num1, num2) {return num1 - num2; } function modulo (num1, num2) {return num1% num2; } console.log (upperOrderFunction (43, 13, add)); 

Aquí tenemos dos tipos de funciones: una función de orden superior que devuelve una devolución de llamada y una función de primer orden establecida que realiza una operación en dos números. Al final del fragmento, hacemos una llamada de función a upperOrderFunction () . Esta función devuelve el resultado de una invocación del cb que se pasó con los parámetros dados. Si ha escrito una función de devolución de llamada para todos los posibles operadores aritméticos, puede usar la función de orden superior para llamar a la operación que necesite.


Event Listener

Otro ejemplo de una función de orden superior es lo que ocurre cuando agrega un event listener a un elemento en el DOM (modelo de objeto de documento). Tome este ejemplo: & nbsp;

 & lt;! DOCTYPE html & gt; & lt; html & gt; & lt; head & gt; & lt; meta charset = "utf-8" & gt; & lt; meta http-equiv = "X-UA-Compatible" content = "IE = edge" & gt; & lt; title & gt; & lt; / title & gt; & lt; meta name = "description" content = "" & gt; & lt; meta name = "viewport" content = "width = device-width, initial-scale = 1" & gt; & lt; link rel = "stylesheet" href = "" & gt; & lt; / head & gt; & lt ; body & gt; & lt;! - [if lt IE 7] & gt; & lt; p class = "browsehappy" & gt; Estás usando un navegador & lt; strong & gt; obsoleto & lt; / strong & gt ;. Por favor, & lt; a href = "#" & gt; actualiza tu navegador & lt; / a & gt; para mejorar tu experiencia. & lt; / p & gt; & lt;! [endif] - & gt; & lt; button & gt; ¡Haz clic en mí! & lt; / button & gt; & lt; script async diferir & gt; const button = document.querySelector ("botón"); button.addEventListener ("click", (e) = & gt; {alert ("¡Se ha hecho clic en el botón!");}) & lt; / script & gt; & lt; / body & gt; & lt; / html & gt; 

En este ejemplo, creé un botón en HTML, lo seleccioné usando JavaScript y le agregué un detector de eventos. La estructura del detector de eventos es la de una función simple de orden superior & ndash; que se necesita en una función anónima como segundo argumento.
 Área resaltada que muestra dónde está la función de orden superior en un detector de eventos.

La sección resaltada es su función de orden superior.

El 81% de los participantes declaró que se sintieron más seguros de sus perspectivas laborales después de asistir a un campamento de entrenamiento. Asigne a un bootcamp hoy.

El graduado promedio de bootcamp pasó menos de seis meses en la transición de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Métodos de matriz incorporados de JavaScript son esas funciones especiales de orden superior nuevas en ES6 que podemos usar para iterar sobre una matriz y manipularla o devolver una matriz completamente nueva cuyos valores han sido manipulados. & nbsp;

A medida que comenzamos a obtener en la resolución de problemas más complejos en JavaScript, comience a pensar en abstraer parte de la lógica que escribimos cuando iteramos sobre matrices. El uso de estos métodos de matriz de funciones de orden superior lo ayuda a convertirse en un mejor desarrollador de JS.

Digamos, por ejemplo, que tenemos una matriz de profesores:

UVNRam00sqZ2XWlWgK36aj3tP7oHL2i1wM3JLEDbcqwXs IBMxRNlmbknHgjO JFy32VHF7u4glA1btMETcPhCPyoZ0GuToxG0D7MlPWlNMaWsRUNJtkMRNP4kPAYBdORaCwWiRF

forEach

Si queremos iterar sobre la matriz y manipular cada elemento antes de usar ES6, esto es lo que tenemos que hacer:

 función paraCadaES5 (arr) {para (sea i = 0; i & lt; longitud de arr.y ++) {arr [i] =" Profesor "+ arr [i]; } return arr; } console.log (forEachES5 (profesores)); 

La sintaxis de ES6 nos permite reducir el código usando el método forEach:

 función paraCadaES6 (arr) {arr.forEach ((profesor, índice, origArr) = & gt; {origArr [índice] =" Profesor "+ profesor;}); return arr; } 

Este método forEach toma una función de devolución de llamada como su primer parámetro para convertirla en una función de orden superior. Esta función de devolución de llamada es básicamente la "acción" realizado en cada elemento que está en la matriz. Además, el método forEach también toma un índice y una matriz como su segundo y tercer parámetro opcional. & Nbsp;

El orden importa en estos parámetros en el método forEach (así como en los otros parámetros creados -en métodos de matriz). La primera es siempre la función de devolución de llamada, la segunda es siempre el índice del elemento en la matriz y la tercera es siempre una copia de la matriz en sí.

El método forEach es otra forma de presentar un bucle for en JavaScript. No devuelve nada. El método manipula lo que ya está allí y lo guarda en la matriz con la que está trabajando si especifica lo que desea hacer con él.

Map

El método más cercano a forEach El método es el método del mapa. Funciona de la misma manera, excepto que este método devuelve una nueva matriz. Todo lo que manipule en la función de devolución de llamada no afectará a la matriz original.

Echemos un vistazo a qué mapa solía verse antes de ES6:

 función mapES5 (arr) {let newArr = []; for (sea i = 0; i & lt; arr.length; i ++) {newArr.push ("Profesor" + arr [i]); } return newArr; } 

Como puede ver, lo que tuvimos que hacer fue crear una nueva matriz fuera de nuestro bucle for para poder enviarle nuevos valores. ¡Entonces tenemos que devolver nuestra nueva matriz para poder usarla en otro lugar!

Con ES6 y el método de mapa, podemos abstraer algo de esa lógica para que sea más legible:

 función mapWithES6 (arr) {const mapped = arr.map (professor = & gt; {return "Professor" + profesor;}) retorno mapeado; } 

La característica especial sobre el método de mapa, así como otros métodos de matriz como este, la función de reducir y filtrar en particular, es que puede asignarla a una variable y devolverla o simplemente devolver la toda la función en conjunto! No se necesita empujar a una nueva matriz & ndash; ya está hecho por usted con este método de mapa. ¡Recuerde tener un valor de retorno en la lógica dentro de la función de devolución de llamada del método de mapa!





Conclusión:

Las funciones de orden superior son un concepto extremadamente importante en JavaScript para ayudarte a convertirte en un mejor desarrollador. Te ayudará a abstraer un poco de lógica para que tu código sea más legible y, en algunos casos, más eficaz.

En este tutorial, exploramos algunas de las diferentes formas en que podemos escribir funciones de orden superior, desde métodos básicos de calculadora hasta detectores de eventos y funciones avanzadas de matriz. Una vez que haya dominado esto, estará listo para abordar algunas soluciones más complejas a los problemas.





funciones de alto orden de Python: StackOverflow Questions

Tutorials