Curso de Python – FUNCIONES

Funciones en Python

Full Stack Developer

Una función es una porción de código con un nombre que realiza una serie de tareas y devuelve un valor. Un fragmento de código al que se le asigna un nombre asociado y no devuelve un valor a menudo se denomina procedimiento. Si el programador no especifica un valor de retorno, la función devuelve Ninguno (nada), por lo que no hay ningún procedimiento en Python. Esto es null en Java.

 

 La función no solo ayuda en la programación y depuración al dividir el programa en partes, sino que también puede reutilizar el código. 

 

 

Curso gratis de Pithon - Funciones

Carrera Full Stack

 En Python, la función se declara de la siguiente manera:

def mi_primera_funcion(parametro_1, parametro_2):

     print parametro_1

     print parametro_2

 

Entonces, la palabra clave def va seguida de los nombres de funciones en parentesis y argumentos entre separados por comas. Luego, en otra línea, indentando acontinuacion de dos puntos tenemos la línea de código que compone el código a ejecutar por la función.

También puede encontrar la cadena de texto como la primera línea del cuerpo de la función. Estas cadenas se denominan Docstrings (cadenas de documentación) y, como su nombre lo indica, se utilizan para documentar funciones.

def mi_primera_funcion(param1, param2):

   “““Esta funcion imprime los dos valores pasados

    como parametros”””

    print param1

    print param2

 

¿Es lo que imprime el operador? Funcion de help lenguaje para obtener orientación sobre cómo usar y útilidad de las funciones, puede incluir docstrings en cualquier objeto, no solo en una función. 

 

Volviendo a la declaración de la función, cuando declaras una función, solo asocias el nombre con el código que compone la función, por lo que es importante poder referirte a ella más adelante por su nombre para que puedas ejecutar ese código. Es decir, la función no se está ejecutando en el momento de escribir estas líneas. Para llamar a una función (ejecutar su código), escriba:

mi_primera_funcion(“hola Enyoier”, 2)

 

Es decir, el nombre de la función que desea llamar va seguido del valor que desea pasar como parámetro entre paréntesis. La asignació de valores y parámetro que se pasa a la función suele ser de izquierda a derecha. Dado que especifica el valor “hola” para param1  y param2 es igual a 2, mi_funcion imprime hola en una línea, luego 2. 

Sin embargo, puede cambiar el orden de los parámetros especificando el nombre del parámetro al que desea asignar el valor cuando llama a la función.

mi_primera_funcion(parametro2 = 2, parametro1 = “hola” Enyoier)

 

El número de valores pasados como parámetros cuando se llama a la función debe coincidir con el número de parámetros que acepta la función según la declaración de la función. De lo contrario, Python se quejará:

>>> mi_primera_funcion(“hola enyoier”)

Traceback (most recent call last):

File “<stdin>”, line 1, in <module>

TypeError: mi_primera_funcion() takes exactly 2 arguments (1 given)

 

 

Funciones con Python

Curso de programación

Sin embargo, puede definir una función con un número variable de argumentos, o puede asignar un valor predeterminado a un parámetro si el parámetro no se le especificó un valor cuando se llamó a la función.

El valor predeterminado de un parámetro se define colocando un signo igual después del nombre del parámetro y luego el valor predeterminado:

def imprimir(texto_recibido, veces = 1):

print veces * texto_recibido

 

En el ejemplo anterior, si no especifica un valor para el segundo parámetro, la cadena pasada como primer parámetro se imprimirá solo una vez.

>>> imprimir(“hola Enyoier”)

Hola Enyoier

 

Si se especifica un valor diferente, se utilizará este.

>>> imprimir(“hola Enyoier”, 2)

hola Enyoier hola Enyoier

 

 

Para definir una función con un número variable de argumentos, coloque el parámetro final de la función en la cual el nombre debe ir precedido del carácter *.

def varios(parametro1, parametro2, *otro):

   for valor in otro:

      print valor

valores_nuevos(1, 12)

valores_nuevos(1, 12, 31)

valores_nuevos(1, 12, 31, 4)

 

Esta sintaxis funciona creando una tupla (llamada otros en el ejm) que almacena los valores de los parámetros adicionales pasados como argumentos. La primera llamada, múltiple (1, 12), no pasaba más de dos parámetros por defecto, por lo que la tupla “otros” estaba vacía y no se imprimía nada. La segunda llamada tiene un valor diferente (31,) y una tercera llamada (31, 4). 

 También puede prefijar el nombre del último parámetro con **. En ese caso, se utilizan diccionarios en lugar de tuplas.

La clave de este diccionario es el nombre del parámetro especificado al llamar a la funcióny el valor del diccionario, los valores que estan asociados a estos parametros. 

acontinuacion se utiliza la función items de los diccionarios, que regresa una lista con sus elementos, para imprimir los parámetros contenidos en el diccionario.

def varios(param1, param2, **otros):

    for i in otros.items():

       print i

varios(1, 2, tercero = 3)

Cuando se pasa por referencia, se pasa como argumento una referencia o puntero a la variable, es decir, la dirección de memoria donde se encuentra el contenido de la variable, y no el contenido en sí. En el paso por valor, de modo opuesto, lo que se pasa como argumento es el valor que contenía la variable.

La diferencia entre los dos radica en que en el paso por valor los cambios realizados sobre el parámetro no son visibles fuera de la función, esto se debe a que los argumentos de la función son variables locales a la función que contienen los valores especificados por las variables pasadas como argumento. Es decir, en realidad se pasa una copia del valor a la función, no a la variable en sí.

 

Python curso gratuito

Dev Full Stack

Si desea cambiar el valor de uno de los argumentos y que esos cambios se reflejen fuera de la función, debe pasarlo. Parámetros por referencia.

En C, los argumentos de función se pasan por valor, pero el paso por referencia se puede simular usando punteros.  Java también usa el paso por valor, pero para las variables que son objetos, la referencia al objeto se pasa por valor de referencia a este objeto, por lo que en realidad parece pasar por referencia.

Python, al igual que Java, utiliza el paso de referencias a objetos por valor, pero a diferencia de Java, todo es un objeto

 

Curso gratuito de programación

Bootcamp

Sin embargo, no todos los cambios realizados en los parámetros dentro dentro de una función de Python se veran reflejados fuera de la función de Python. Esto se debe a que debe considerar que Python tiene objetos invariantes como tuplas. Entonces, cuando intenta modificar una tupla pasada como parámetro, lo que realmente sucede es que el cambio no es visible fuera de la función porque crea una nueva instancia.

Echemos un vistazo a un pequeño programa para demostrarlo. Este ejemplo usa el método Append de la lista. Un método es simplemente una función que pertenece a un objeto (en este caso, una lista). Y append se usa especialmente para agregar elementos a la lista.

def cualquier_nombre_de_funcion(z, y):

      z = z + 5

      y.append(33)

      print z, y

z = 22

y = [22]

cualquier_nombre_de_funcion(z, y)

print z, y

 

Entonces el resultado de la ejecución sería el siguiente:

25 [22, 25]

22 [22, 33]

 

Como puede ver, en Python el número entero es inmutable, por lo que la variable X no retiene el cambio cuando sale de la función. Sin embargo, la lista es mutable, por lo que la variable Y la mantiene. 

Por consiguiente, valores mutables actuan como pasar por referencia, y los valores inmutables actúan como pasar por valor. 

 Esto concluye todo lo relacionado con los parámetros de la función. Finalmente, veamos cómo devolver un valor usando la palabra clave return:

def sumar_con_python(x, y):

    return x + y

print sumar_con_python(1o123, 2123)

 

Como puede ver, esta función simple solo agrega el valor pasado como parámetro y devuelve el resultado como un valor de retorno. 

 También puede pasar distintos valores para retornar a return.

def funcion_con_nombre_cualquiera(x, y):

     return x * 2, y * 2

a, b = funcion_con_nombre_cualquiera(1, 2)

 

Sin embargo, esto no significa que las funciones de Python puedan devolver múltiples valores. Lo que realmente sucede es que Python crea una tupla sobre la marcha, sus elementos son los valores retirbados y se devuelve su única variable.

Deja un comentario

Tu dirección de correo electrónico no será publicada.