Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 146 additions & 0 deletions .ipynb_checkpoints/curiosidades_pitonicas-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Funciones lambda, listas por compresión, decoradores y otras curiosidades pitónicas\n",
"Python es un lenguaje precioso, o por lo menos así me lo parece a mí, por tanto procedo a contarte aspectos, funciones y otras cosilla que a mí me llaman la función.\n",
"\n",
"## Funciones lambda \n",
"Las funciones lammbda son funciones anónimas, es decir no se declaran con un nombre, su sintáxis es: `lambda <argumentos> : <expresión>` \n",
"Un ejemplo sencillo podría ser:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cuadrado = lambda a: a*a\n",
"cuadrado(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Por su sencillez se suelen utilizar como argumentso en funciones más simples como `map` o `filter`, antes de ejemplificar, para ver mejor su utilidad introduciré el concepto de listas por comprensión. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Listas por compresión \n",
"La creación de listas por compresión, refleja el concepto matemático de definir un conjunto, en este caso lista, a partir de una defición. Dando lugar a definiciones elegantes y rápidas:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lista por compresión: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n",
"Esta preciosa lista [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] es resultado de la anterior\n",
"Los números impares son: [1, 3, 5, 7, 9]\n"
]
},
{
"data": {
"text/plain": [
"[(0, 3), (0, 5), (1, 3), (1, 5), (2, 3), (2, 5)]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print( \"Lista por compresión: \" ,[ i for i in range(10)] )\n",
"l = list( map(lambda x : x*x ,range(10) ))\n",
"print( f\"Esta preciosa lista { l } es resultado de la anterior\")\n",
"print( f\"Los números impares son: { list( filter( lambda x: x%2 , range(10)) )}\")\n",
"[ (x,y) for x in range(3) for y in range(3,7,2)] #productos cartesianos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Espero que haya estado usted fino y haya notado el uso del \"nuevo\" format en el print de python :D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Decoradores\n",
"Los decoradores son funciones que modifican el comportarmiento de las funciones sobre las que se aplican. Esto se ve mejor con un ejemplo:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Se están sumando 1 y 2\n"
]
}
],
"source": [
"def sumandos(f):\n",
" def nueva_funcion(a,b):\n",
" print(f'Se están sumando {a} y {b}')\n",
" f(a,b)\n",
" return nueva_funcion\n",
"@sumandos\n",
"def suma(a,b):\n",
" return a+b\n",
"suma(1,2)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
146 changes: 146 additions & 0 deletions curiosidades_pitonicas.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Funciones lambda, listas por compresión, decoradores y otras curiosidades pitónicas\n",
"Python es un lenguaje precioso, o por lo menos así me lo parece a mí, por tanto procedo a contarte aspectos, funciones y otras cosilla que a mí me llaman la función.\n",
"\n",
"## Funciones lambda \n",
"Las funciones lammbda son funciones anónimas, es decir no se declaran con un nombre, su sintáxis es: `lambda <argumentos> : <expresión>` \n",
"Un ejemplo sencillo podría ser:\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cuadrado = lambda a: a*a\n",
"cuadrado(2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Por su sencillez se suelen utilizar como argumentso en funciones más simples como `map` o `filter`, antes de ejemplificar, para ver mejor su utilidad introduciré el concepto de listas por comprensión. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Listas por compresión \n",
"La creación de listas por compresión, refleja el concepto matemático de definir un conjunto, en este caso lista, a partir de una defición. Dando lugar a definiciones elegantes y rápidas:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Lista por compresión: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n",
"Esta preciosa lista [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] es resultado de la anterior\n",
"Los números impares son: [1, 3, 5, 7, 9]\n"
]
},
{
"data": {
"text/plain": [
"[(0, 3), (0, 5), (1, 3), (1, 5), (2, 3), (2, 5)]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print( \"Lista por compresión: \" ,[ i for i in range(10)] )\n",
"l = list( map(lambda x : x*x ,range(10) ))\n",
"print( f\"Esta preciosa lista { l } es resultado de la anterior\")\n",
"print( f\"Los números impares son: { list( filter( lambda x: x%2 , range(10)) )}\")\n",
"[ (x,y) for x in range(3) for y in range(3,7,2)] #productos cartesianos"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Espero que haya estado usted fino y haya notado el uso del \"nuevo\" format en el print de python :D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Decoradores\n",
"Los decoradores son funciones que modifican el comportarmiento de las funciones sobre las que se aplican. Esto se ve mejor con un ejemplo:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Se están sumando 1 y 2\n"
]
}
],
"source": [
"def sumandos(f):\n",
" def nueva_funcion(a,b):\n",
" print(f'Se están sumando {a} y {b}')\n",
" f(a,b)\n",
" return nueva_funcion\n",
"@sumandos\n",
"def suma(a,b):\n",
" return a+b\n",
"suma(1,2)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}