{"id":373,"date":"2024-11-17T18:54:24","date_gmt":"2024-11-17T18:54:24","guid":{"rendered":"https:\/\/equipomedios.com\/blog\/?p=373"},"modified":"2024-10-18T18:55:53","modified_gmt":"2024-10-18T18:55:53","slug":"funciones-avanzadas-python","status":"publish","type":"post","link":"https:\/\/equipomedios.com\/blog\/funciones-avanzadas-python\/","title":{"rendered":"Funciones avanzadas | Python"},"content":{"rendered":"<h1>Funciones avanzadas<\/h1>\n<p>En Python hay varias funciones avanzadas que se describen a continuaci\u00f3n:<\/p>\n<div id=\"funciones-de-predicado\" class=\"section\"><span id=\"python-fun-predicado\"><\/span><\/p>\n<h2>Funciones de predicado<\/h2>\n<p>Las funciones de predicado no es m\u00e1s que una funci\u00f3n la cual dice si algo es\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">True<\/span><\/code>\u00a0o\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">False<\/span><\/code>, es decir, es una funci\u00f3n que devuelve un tipo de datos\u00a0<span class=\"std std-ref\">booleano<\/span>.<\/p>\n<div id=\"index-0\" class=\"admonition-todo admonition\"><\/div>\n<\/div>\n<div id=\"objetos-de-funcion\" class=\"section\">\n<div id=\"index-1\" class=\"admonition-todo admonition\">\n<p class=\"last\"><span style=\"color: #666666; font-size: 1.25rem;\">Funciones an\u00f3nimas<\/span><\/p>\n<\/div>\n<\/div>\n<div id=\"funciones-anonimas\" class=\"section\">\n<p>Una funci\u00f3n an\u00f3nima, como su nombre indica es una funci\u00f3n sin nombre. Es decir, es posible ejecutar una funci\u00f3n sin referenciar un nombre, en Python puede ejecutar una funci\u00f3n sin definirla con\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">def<\/span><\/code>.<\/p>\n<p>De hecho son similares pero con una diferencia fundamental,\u00a0<strong>el contenido de una funci\u00f3n an\u00f3nima debe ser una \u00fanica expresi\u00f3n en lugar de un bloque de acciones<\/strong>.<\/p>\n<p>Las funciones an\u00f3nimas se implementan en Python con las funciones o expresiones\u00a0<span class=\"std std-ref\">lambda<\/span>, esta es unas de las funcionalidades m\u00e1s potentes de Python, pero a la vez es la m\u00e1s confusas para los principiantes.<\/p>\n<p>M\u00e1s all\u00e1 del sentido de funci\u00f3n que usted tiene hasta el momento, con su nombre y sus acciones internas, una funci\u00f3n en su sentido m\u00e1s trivial significa realizar algo sobre algo. Por tanto se podr\u00eda decir que, mientras las funciones an\u00f3nimas\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">lambda<\/span><\/code>\u00a0sirven para realizar funciones simples, las funciones definidas con\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">def<\/span><\/code>\u00a0sirven para manejar tareas m\u00e1s extensas.<\/p>\n<\/div>\n<div id=\"expresion-lambda\" class=\"section\"><span id=\"python-expresion-lambda\"><\/span><\/p>\n<h2>Expresi\u00f3n lambda<\/h2>\n<p>Si deconstruye una funci\u00f3n sencilla, puede llegar a una funci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">lambda<\/span><\/code>. Por ejemplo la siguiente funci\u00f3n es para doblar un valor de un n\u00famero:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">doblar<\/span><span class=\"p\">(<\/span><span class=\"n\">numero<\/span><span class=\"p\">):<\/span>\r\n<span class=\"gp\">... <\/span>    <span class=\"n\">resultado<\/span> <span class=\"o\">=<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n<span class=\"gp\">... <\/span>    <span class=\"k\">return<\/span> <span class=\"n\">resultado<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">doblar<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">4<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">doblar<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">&lt;type 'function'&gt;<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Si el c\u00f3digo fuente anterior se simplifica se ver\u00e1, de la siguiente forma:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">doblar<\/span><span class=\"p\">(<\/span><span class=\"n\">numero<\/span><span class=\"p\">):<\/span>\r\n<span class=\"gp\">... <\/span>    <span class=\"k\">return<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">doblar<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">4<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">doblar<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">&lt;type 'function'&gt;<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Usted puede todav\u00eda simplificar m\u00e1s, escribirlo todo en una sola l\u00ednea, de la siguiente forma:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">def<\/span> <span class=\"nf\">doblar<\/span><span class=\"p\">(<\/span><span class=\"n\">numero<\/span><span class=\"p\">):<\/span> <span class=\"k\">return<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">lambda<\/span> <span class=\"n\">numero<\/span><span class=\"p\">:<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n<span class=\"go\">&lt;function &lt;lambda&gt; at 0x7f1023944e60&gt;<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">doblar<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">4<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">doblar<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">&lt;type 'function'&gt;<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Esta notaci\u00f3n simple es la que una funci\u00f3n\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">lambda<\/span><\/code>\u00a0intenta replicar, observe, a continuaci\u00f3n se va a convertir la funci\u00f3n en una funci\u00f3n an\u00f3nima:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"k\">lambda<\/span> <span class=\"n\">numero<\/span><span class=\"p\">:<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n<span class=\"go\">&lt;function &lt;lambda&gt; at 0x7f1023944e60&gt;<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>En este ejemplo tiene una funci\u00f3n an\u00f3nima con una entrada que recibe\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">numero<\/span><\/code>, y una salida que devuelve\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">numero<\/span>\u00a0<span class=\"pre\">*<\/span>\u00a0<span class=\"pre\">2<\/span><\/code>.<\/p>\n<p>Lo \u00fanico que necesita hacer para utilizarla es guardarla en una variable y utilizarla tal como har\u00eda con una funci\u00f3n normal:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">doblar<\/span> <span class=\"o\">=<\/span> <span class=\"k\">lambda<\/span> <span class=\"n\">numero<\/span><span class=\"p\">:<\/span> <span class=\"n\">numero<\/span><span class=\"o\">*<\/span><span class=\"mi\">2<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">doblar<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">4<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"nb\">type<\/span><span class=\"p\">(<\/span><span class=\"n\">doblar<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">&lt;type 'function'&gt;<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Con la flexibilidad de Python usted puede implementar infinitas funciones simples. Usted puede encontrar m\u00e1s ejemplos de funciones an\u00f3nimas usando\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">lambda<\/span><\/code>\u00a0en la secci\u00f3n\u00a0<span class=\"std std-ref\">ejemplos de funciones avanzadas<\/span>.<\/p>\n<p>Usted puede explotar al m\u00e1ximo la funci\u00f3n lambda utiliz\u00e1ndola en conjunto con otras funciones como\u00a0<span class=\"std std-ref\">filter()<\/span>\u00a0y\u00a0<span class=\"std std-ref\">map()<\/span>.<\/p>\n<\/div>\n<div id=\"ejemplos-de-funciones-avanzadas\" class=\"section\"><span id=\"python-fun-avanzadas-ejs\"><\/span><\/p>\n<h2>Ejemplos de funciones avanzadas<\/h2>\n<p>A continuaci\u00f3n, se presentan algunos ejemplos de su uso:<\/p>\n<p><strong>Funci\u00f3n lambda &#8211; operaciones aritm\u00e9ticas<\/strong><\/p>\n<p>A continuaci\u00f3n, se presenta un ejemplo para comprobar si un n\u00famero es impar:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">impar<\/span> <span class=\"o\">=<\/span> <span class=\"k\">lambda<\/span> <span class=\"n\">numero<\/span><span class=\"p\">:<\/span> <span class=\"n\">numero<\/span><span class=\"o\">%<\/span><span class=\"mi\">2<\/span> <span class=\"o\">!=<\/span> <span class=\"mi\">0<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">impar<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">True<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p><strong>Funci\u00f3n lambda &#8211; operaciones de cadena<\/strong><\/p>\n<p>A continuaci\u00f3n, se presenta un ejemplo para darle la vuelta a una cadena reban\u00e1ndola en sentido inverso:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">revertir<\/span> <span class=\"o\">=<\/span> <span class=\"k\">lambda<\/span> <span class=\"n\">cadena<\/span><span class=\"p\">:<\/span> <span class=\"n\">cadena<\/span><span class=\"p\">[::<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">revertir<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Plone\"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">'enolP'<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">revertir<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"enolP\"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">'Plone'<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p><strong>Funci\u00f3n lambda &#8211; varios par\u00e1metros<\/strong><\/p>\n<p>A continuaci\u00f3n, se presenta un ejemplo para varios par\u00e1metros, por ejemplo para sumar dos n\u00fameros:<\/p>\n<div class=\"highlight-default notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">sumar<\/span> <span class=\"o\">=<\/span> <span class=\"k\">lambda<\/span> <span class=\"n\">x<\/span><span class=\"p\">,<\/span><span class=\"n\">y<\/span><span class=\"p\">:<\/span> <span class=\"n\">x<\/span><span class=\"o\">+<\/span><span class=\"n\">y<\/span>\r\n<span class=\"gp\">&gt;&gt;&gt; <\/span><span class=\"n\">sumar<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\r\n<span class=\"go\">7<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Funciones avanzadas En Python hay varias funciones avanzadas que se describen a continuaci\u00f3n: Funciones de predicado Las funciones de predicado no es m\u00e1s que una funci\u00f3n la cual dice si algo es\u00a0True\u00a0o\u00a0False, es decir, es una funci\u00f3n que devuelve un tipo de datos\u00a0booleano. Funciones an\u00f3nimas Una funci\u00f3n an\u00f3nima, como su nombre indica es una funci\u00f3n [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[39,40],"tags":[],"class_list":["post-373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-python"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/equipomedios.com\/blog\/wp-content\/uploads\/2024\/08\/python-logo-master-v3-TM.png?fit=601%2C203&ssl=1","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/comments?post=373"}],"version-history":[{"count":1,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/373\/revisions"}],"predecessor-version":[{"id":374,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/posts\/373\/revisions\/374"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media\/331"}],"wp:attachment":[{"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/media?parent=373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/categories?post=373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/equipomedios.com\/blog\/wp-json\/wp\/v2\/tags?post=373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}