Python 3 1 Functions
Python 3 1 Functions
Python 3 1 Functions
Functions
Functions
Conceptos
Una función es un grupo de sentencias, que realizan una tarea
específica.
Sintáxis:
def function_name(arg1, arg2, arg3 ... argN): Header
<indented statement 1>
<non-indented statement 2>
... Body
<indented statement n>
<return statement>
Functions
Conceptos
La primera línea del body puede ser un comentario simple (#) o
un comentario de documentación, docstring (“”” asi “”””)
Es buena práctica usar los docstring, para documentar el
código
La última sentencia (return) es opcional y es usada en el caso
que la función retorne algún valor.
Si la función no tiene una sentencia return entonces la palabra
clave None es retornada automáticamente
None es un tipo intrínseco de Python que indica la ausencia de
valor o un valor nulo.
Functions
Conceptos
Una función por sí sola no hace nada, debe ser llamada para
que realice su cometido.
Sintaxis de la llamada:
function_name(arg1, arg2, …, argN)
Functions
Variables locales, Globales y el alcance (scope)
El alcance (scope) de una variable se refiere a la parte del
programa donde se tiene acceso a la variable.
La variables creadas dentro de una función se les llama
variables locales. Debido a que sólo se le puede llegar dentro
del body de la función
Las variables locales están sujetas a la recolección de basura
(garbage collector) del interpretador tan pronto como la
función finaliza
Variables Globales son aquellas definidas fuera de cualquier
función
SI dos variables tienen el mismo nombre, pero una es global y la
otra local, la precedenciala tiene la local
Functions
El pase de argumentos
Un argumento no es más que un datos que es pasado a
una función, cuando esta es llamada
Una función puede tomar cualquier número de
argumentos o ninguno.
SI desea pasar argumentos a una función, se debe definir
primero los parámetros en la declaración.
Un parámetro es simplemente una variable en el
encabezado de la función la cual recibe un argumento
cuando es llamada
El alcance de los parámetros está restringido al cuerpo de
la función
Functions
El pase de argumentos
En Python todo es un objeto, por lo que la variable lo que
guarda es una referencia al objeto.
La variable como tal no contiene al objeto, sino la
dirección donde este se encuentra
Por simplicidad se dice que el valor del argumento es
pasado a la variable parámetro, a esto se le llama Pase
por Valor
Functions
El pase de argumentos
El Pase por Valor, tiene dos consecuencias:
1. Si el argumento pasado a la función es inmutable, los cambios
hechos a la variable parámetro no afectan el argumento
2. Ahora, si el argumento pasado a la función es mutable, los
cambios hechos a la variable parámetro afectarán al
argumento
arg1
100
140715950137472
para1
Functions
Argumentos de posición y de palabra clave
En el pase de argumentos de posición se considera el
orden de su respetivo parámetro del encabezado de la
función
Al pasarlos por palabra clave, se le asigna al nombre del
parámetro el valor del argumento, de la manera
siguiente: nombre_parámetro = val
El pase de argumentos por palabra clave flexibiliza el uso
de las funciones, pero debemos conocer el nombre de los
parámetros.
Además se puede mezclar ambas forma de pase de
argumentos, siempre y cuando el de posición esté antes
que el de palabra clave
Functions
Argumentos indeterminados
Por posición, se debe crear un lista dinámica de
argumentos:
def indeterminados_posicion(*args):
for arg in args:
print(arg)
indeterminados_posición(5, “Hola”, [1, 2, 3, 4, 5])
Por nombre, se crea un diccionario dinámico de
argumentos:
def indeterminados_nombre(**kwargs):
print(kwarg)
indeterminados_posición(n=5, c=“Hola”, l=[1, 2, 3, 4, 5])
Functions
Retorno de valores
Para retornar un valor se usa la palabra return
return [expresión], si se omite la expresión a None es retornado
Si una función retorna un valor este puede ser usado
como operando de cualquier expresión
Las funciones que no tienen la palabra return se dicen que
son funciones void
Las funciones void siempre retornan None
En Python se puede retornar más de un valor:
return val1, val2, …, valN
Functions
Retorno de valores
En Python se puede se puede asignar valores predeterminados
a los parámetros
Simplemente se usa el operador de asignación al parámetro
con un valor predeterminado:
par1 = valor
Functions
Fin parte 1
Functions
Programación funcional (introducción)
Functional programming es el proceso de construcción de
software mediante la composición de funciones, evitando el
estado compartido, los datos mutables y los efectos
secundarios.
La programación funcional es declarativa más que imperativa,
el estado de la aplicación fluye a través de sólo funciones.
La programación funcional contrasta con la programación
orientada a objeto donde el estado de la aplicación es
usualmente compartida y colocada con los métodos en objetos
La programación funcional es un paradigma, significando que
es una forma de pensar acerca de la construcción del software
basado en algún fundamento y la definición de principios
(indicados antes)
Referencia: https://www.realpython.com/Python-lambda
Functions
Programación funcional (introducción)
En Python se cuenta con tres funciones que facilitan un
acercamiento a la programación funcional:
Map
Filter
Reduce
Functions
Programación funcional (introducción)
En Python se cuenta con tres funciones que facilitan un
acercamiento a la programación funcional:
Map
Filter
Reduce
ver ejemplos
Functions
Programación funcional (introducción)
Map: es utilizado para aplicar una operación a cada elemento
de una lista y obtener el resultado.
Esto se puede hacer con un loop, en programación imperativa
Se utilizan más expresiones
La sintaxis de map es:
map(función_a_aplicar, secuencia)
Map, Lo que hace es pasar como argumento una función que
es aplicada a cada elemento del objeto iterable y retorna una
lista con el resultado de la función llamada.
Functions
Programación funcional (introducción)
filter: como su nombre lo sugiere, filter crea una lista de
elementos para los que la función que se ejecuta retorna True
Sintaxis:
filter(función, secuencia)
Es equivalente al comprehensión:
item for item in iterable if function(item)
También se puede realizar la operación con un loop for, pero al
usar filter la operación se ejecuta más rápido
Ver ejemplos
Functions
Programación funcional (introducción)
reduce: esta función muy útil para realizar cálculos de una lista y
retornar un simple resultado.
Aplica un cálculo rotativo a los pares secuenciales de valores
de una lista
No está incluida en la funciones predeterminadas de Python,
por lo que hay que importarla desde el módulo functools:
from functools import reduce
Sintaxis:
reduce(función, secuencia)
Ver ejemplos
Functions
Fin parte 2
Generators
Conceptos
Las funciones generadoras se incluyen en todos los aspectos,
como las funciones normales, con una diferencia: en lugar de
recoger los resultados y devolverlos de una vez, pueden iniciar
el cálculo, producir un valor, suspender su estado guardando
todo lo que necesitan para poder reanudar y, si se les llama de
nuevo, reanudar y realizar otro paso. Las funciones generadoras
se convierten automáticamente en sus propios iteradores por
Python, de modo que usted puede llamar next en ellos.
Generators
Diferencias con funciones normales:
Las funciones generadoras no almacenan los resultados
anteriores, ni los futuros, sólo recuerdan el último valor
Una función normal retorna None al finalizar su ejecución,
una función generadora emite una exception llamada
StopIteration
Para devolver el valor, en vez de usar return, usan yield
Ver ejemplo
Generadores
Son muy poderosos, ya que una vez creados, pueden ser
usados en cualquier mecanismo de iteración que se desee
Al devolver sólo el último valor calculado, no consumen
memoria y tiempo, como lo harían las listas con todos los
valores.
Es posible usar return, también en una función generadora,
Generadores
Usando la expresion yield from:
Esta forma de uso permite producir valores desde un sub-
iterator. (ver ejemplo)
Generators
Generadores y lambdas
Se pueden hacer generadores usando lambdas y
compresiones de listas o tuplas, por ejemplo: