Funciones en Python, uso básico, Scope, uso básico, parámetros, retornos

Las funciones son también otra pieza clave en los lenguajes de programación que permiten reutilizar fácilmente cualquier código en la aplicación, a lo largo de este capítulo, hemos empleado varias funciones que forman parte de Python como len(), type(), entre otras; si queremos llamar varias veces las siguientes operaciones:

a=5
b=6
print("Sum numbers")
c = a+b
print("res "+str(c))

Con las funciones, las podemos agrupar fácilmente, para eso, colocamos la palabra reservada def seguido del nombre de la función y unos paréntesis:

def sum():
  a=5
  b=6
  print("Sum numbers")
  c = a+b
  print("res "+str(c))

Como en el caso de los condicionales y ciclos, permiten crear bloques de código, pero, en esta oportunidad lo podemos invocar fácilmente; el bloque de código anterior queda como:

def sum():
  a=5
  b=6
  print("Sum numbers")
  c = a+b
  print("res "+str(c))

Y para invocarlo, empleamos el nombre de la función, en este ejemplo, sum():

sum()

La ventaja que tenemos, es que al estar todo encapsulado (en un scope diferente al global), podemos reutilizar fácilmente la función anterior tantas veces como queramos invocando a dicha función, por ejemplo, si queremos invocar el cuerpo de la función 3 veces, lo invocamos 3 veces:

sum()
sum()
sum()

Parámetros

Con los parámetros, podemos hacer bloques de código realmente reutilizables, por ejemplo, podemos crear una función que reciba un argumento para imprimir por ejemplo, un nombre:

def yourName(name):
    print(name)
    
yourName('andres')

Puedes especificar el tipo:

def yourName(name:str):
  ***

Qué es lo recomendado para evitar trabajar con datos incorrectos, o también que reciba varios parámetros, por ejemplo, para sumarlos:

def sum(a:int, b:int, c:int):
  print("res "+str(a+b+c))
  
sum(1,2,3)

O realizar operaciones matemáticas:

def operations(a:int, b:int, op:str):
  if op == '+':
    print("res "+str(a+b))
  elif op == '-':
    print("res "+str(a-b))
  elif op == '*':
    print("res "+str(a*b))
  elif op == '/':
    print("res "+str(a/b))
operations(1,2,'+')

También, podemos definir valores por defecto:

def operations(a:int, b:int, op:str='*'):
  ***

Y podemos indicar el nombre de los parámetros al momento de invocar la función:

operations(b=2,a=5)

Con la ventaja de que, podemos colocarlos en cualquier orden:

operations(a=5,b=2)

Estas funciones, también pueden retornar un valor, para que luego lo podamos emplear en donde queramos, para ello, podemos emplear la palabra reservada de return:

def operations(a:int, b:int, op:str='*'):
  if op == '+':
    return a+b
  elif op == '-':
    return a-b
  elif op == '*':
    return a*b
  else:
    return a/b
    
n = operations(b=5,a=2)
print("res "+str(n))

También el tipo de retorno, en este ejemplo, sería un flotante (por la división):

def operations(a:int, b:int, op:str='*') -> float:
  if op == '+':
    return a+b
  elif op == '-':
    return a-b
  elif op == '*':
    return a*b
  else:
    return a/b

Por lo tanto, puedes ver una función como una pieza de código diseñada para realizar una tarea y en caso de que sea necesario, retorne un valor producto de la operación realizada.

Más adelante, cuando queramos devolver una página HTML al usuario se emplean funciones que retornan dichas páginas HTML, pero, esto lo veremos más adelante en el libro.

- Andrés Cruz

In english
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.