0% encontró este documento útil (0 votos)
4 vistas15 páginas

Definición de funciones en Python

Este documento discute las funciones en Python. Explica que una función es un fragmento de código que realiza una tarea específica. Las funciones tienen ventajas como reducir el código duplicado, descomponer problemas, mejorar la claridad y reutilizar código. Hay funciones incorporadas y funciones definidas por el usuario. Las funciones definidas por el usuario se crean con la palabra clave def. Las funciones pueden devolver valores utilizando la palabra clave return. Las funciones son objetos en Python y se pueden pasar como argumentos o almacenar en colecciones.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas15 páginas

Definición de funciones en Python

Este documento discute las funciones en Python. Explica que una función es un fragmento de código que realiza una tarea específica. Las funciones tienen ventajas como reducir el código duplicado, descomponer problemas, mejorar la claridad y reutilizar código. Hay funciones incorporadas y funciones definidas por el usuario. Las funciones definidas por el usuario se crean con la palabra clave def. Las funciones pueden devolver valores utilizando la palabra clave return. Las funciones son objetos en Python y se pueden pasar como argumentos o almacenar en colecciones.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Funciones en Python

En esta parte del tutorial de programación en Python, hablaremos sobre las funciones.

Una función es un fragmento de código en un programa. La función realiza una tarea específica. Las ventajas
de usar funciones son:

Reducir la duplicación de código

Descomponer problemas complejos en piezas más simples

Mejorando la claridad del código

Reutilización de código

Ocultamiento de información

Las funciones en Python son ciudadanos de primera clase. Esto significa que las funciones tienen un estatus igual al de otros
objetos en Python. Las funciones se pueden asignar a variables, almacenar en colecciones o pasar como
los argumentos. Esto aporta flexibilidad adicional al lenguaje.

Hay dos tipos básicos de funciones. Funciones incorporadas y funciones definidas por el usuario. Las funciones incorporadas
las funciones son parte del lenguaje Python. Ejemplos son:dir(), len()oabs(). El usuario
las funciones definidas son funciones creadas con eldefpalabra clave.

Definiendo funciones
Se crea una función con eldefpalabra clave. Las declaraciones en el bloque de la función deben ser
con sangría.

def funcion():
pasar

Eldefla palabra clave es seguida por el nombre de la función con paréntesis y dos puntos. El
las declaraciones identificadas forman el cuerpo de la función.

La función se ejecuta más tarde cuando es necesaria. Decimos que llamamos a la función. Si llamamos a una
función, las instrucciones dentro del cuerpo de la función se ejecutan. No se ejecutan hasta que el
se llama a la función.

miFunc()

Para llamar a una función, especificamos el nombre de la función con paréntesis.


#!/usr/bin/python

"""
El script [Link] muestra cómo trabajar con
funciones en Python.
Jan Bodnar
ZetCode, 2011
"""

def mostrarNombreDelModulo():
imprimir __doc__

def obtenerArchivoModulo():
return __file__

a = mostrarNombreDelModulo()
b = obtenerArchivoDelMódulo()

imprimir a, b

La cadena en la parte superior del script se llama cadena de documentación. Documenta el actual
script. El archivo en el que ponemos código Python se llama amodule. Definimos dos funciones. La
la primera función imprimirá la cadena de documentación del módulo. La segundadevolverel camino de nuestro módulo.
La función puede o no devolver un valor. Si explícitamente no devuelven un valor, lo hacen implícitamente
volverNinguno. El__documento__y__archivo__son atributos especiales del estado. Tenga en cuenta que hay dos
guiones bajos a ambos lados del atributo.

$ ./[Link]

El script [Link] muestra cómo trabajar con


funciones en Python.
Jan Bodnar
ZetCode, 2011

Ninguno ./[Link]

Las definiciones de funciones deben preceder su uso. De lo contrario, el intérprete se quejará con un
NameError.

#!/usr/bin/python

def f1():
print "f1()"

f1()
#f2()

def f2():
print "f2()"

En el ejemplo anterior tenemos dos definiciones de funciones. Una línea está comentada. Llamada a la función
no puede estar por delante de su definición.
#f2()

def f2():
print "f2()"

Podemos llamar alf2()solo después de su definición. Al descomentar la línea obtendremos unError de nombre.

Dónde definir funciones


Las funciones se pueden definir dentro de un módulo, una clase o otra función. La función definida dentro de un
la clase se llama unmétodo.

#!/usr/bin/python

clase Algunos:

@estático
def f():
imprimir "método f()"

def f():
print "función f()"

def g():
def f():
print "f() función interna"
f()

Algunos.f()
f()
g()

En este ejemplo, definimos una función f() en todos los lugares posibles.

clase Alguno:

@estático
def f():
print "método f()"

Un método estático se define con un decorador en una clase Some.

def f():
print "función f()"

La función está definida en un módulo.

def g():
def f():
print "f() función interna"
f()
Aquí elf()la función está definida dentro de otrag()función. Es una función interna.

Algun.f()
f()
g()

El método estático se llama especificando el nombre de la clase, el operador punto y el nombre de la función
con corchetes cuadrados. Otras funciones se llaman usando sus nombres y corchetes cuadrados.

$ ./[Link]
método f()
función f()
función interna f()

Esta es la salida.

Las funciones son objetos


Las funciones en Python son objetos. Pueden ser manipuladas como otros objetos en Python. Por lo tanto
las funciones se llaman ciudadanos de primera clase. Esto no es cierto en otros lenguajes de POO como Java o C#.

#!/usr/bin/python

def f():
Esta función imprime un mensaje
Hoy es un día nublado

print isinstance(f, object)


imprimir id(f)

imprimir f.func_doc
imprimir f.func_name

En este script mostramos que nuestra función también es un objeto.

def f():
Esta función imprime un mensaje
Hoy es un día nublado

Definimos unf()función. Imprime un mensaje en la consola. Tiene una cadena de documentación.

print isinstance(f, objeto)

Elisinstance()la función verifica si elf()la función es una instancia de laobjeto. Todo


los objetos en Python heredan de esta entidad base.

imprimir id(f)

Cada objeto en Python tiene un identificador ú[Link]()la función devuelve el id del objeto.
imprimir f.func_doc
imprimir f.func_name

Los objetos pueden tener atributos. Aquí imprimimos dos atributos de la función.

$ ./[Link]
Verdadero
3077407212
Esta función imprime un mensaje
f

Salida del programa.

Los objetos pueden almacenarse en colecciones y pasarse a funciones.

#!/usr/bin/python

def f():
pausar

def g():
pasar

def h(f):
print id(f)

a = (f, g, h)

para i en a:
imprimir i

h(f)
h(g)

Definimos tres funciones. Las colocamos en una tupla y las pasamos a una función.

a = (f, g, h)

por i en a:
imprimir i

Colocamos tres objetos de función en una tupla y la recorremos con un bucle for.

h(f)
h(g)

Pasamos elf()yg()funciones a losh() función.

$ ./[Link]
<función f en 0xb7664fb4>
<función g en 0xb766c1b4>
<función h en 0xb766c3ac>
3076935604
3076964788

Salida de [Link].

Tres tipos de funciones


Mirando desde un punto de vista particular, podemos discernir tres tipos de funciones. Funciones que
siempre están disponibles para su uso, funciones que están contenidas dentro de módulos externos, que deben
ser importados y funciones definidas por un programador con eldefpalabra clave.

#!/usr/bin/python

de las matemáticas importan raíz cuadrada

def cubo(x):
return x * x * x

imprimir abs(-1)
imprimir cubo(9)
imprimir sqrt(81)

Tres tipos de funciones están presentes en el código anterior.

de matemáticas importación raíz

Elraíz cuadrada()la función se importa del módulo matemático.

def cubo(x):
return x * x * x

La función cube() es una función definida por el usuario.

imprimir abs(-1)

Elabs()la función es una función integrada fácilmente accesible. Es parte del núcleo del lenguaje.

La palabra clave return


Se crea una función para realizar una tarea específica. A menudo hay un resultado de tal tarea. Eldevolver
la palabra clave se utiliza para devolver valores de una función. Una función puede devolver un valor o no. Si un
la función no tiene una palabra clave de retorno, enviará unNingunovalor.

#!/usr/bin/python

def mostrarMensaje(msg):
imprimir mensaje

def cubo(x):
return x * x * x

x = cubo(3)
imprimir x

Cálculo finalizado.
imprimir mostrarMensaje("Listo.")

Tenemos dos funciones definidas. Una utiliza eldevolverpalabra clave, uno no lo hace.

def mostrarMensaje(msg):
imprimir mensaje

ElmostrarMensaje()la función no devuelve explícitamente un valor. Muestra un mensaje en el


consola.

def cubo(x):
return x * x * x

La función cube() calcula una expresión y devuelve su resultado con elretornarpalabra clave.

x = cubo(3)

En esta línea llamamos a elcubo()función. El resultado de la computación delcubo()función es


devuelto y asignado a laxvariable. Ahora contiene el valor del resultado.

Computation finished.

Llamamos almostrarMensaje()función con un mensaje como parámetro. El mensaje se imprime en


la consola. No esperamos un valor de esta función.

imprimir mostrarMensaje("Listo.")

Este código produce dos líneas. Una es un mensaje impreso por elmostrarMensaje()función. El
el otro es elNingunovalor, que se envía implícitamente por funciones sin elvolverdeclaración.

$ ./[Link]
27
Cálculo terminado.
Listo.
Ninguno

Ejemplo de salida.

Podemos enviar más de un valor desde una función. Los objetos después deldevolverlas palabras clave son
separados por comas.

#!/usr/bin/python

n = [1, 2, 3, 4, 5]
def estadisticas(x):
mx = máximo(x)
mn = min(x)
ln = len(x)
sm = suma(x)

devuelve mx, mn, ln, sm

mx, mn, ln, sm = stats(n)


imprimir estadísticas(n)

imprimir mx, mn, ln, sm

Hay una definición de unestadísticas()función. Esta función devuelve cuatro valores.

devuelve mx, mn, ln, sm

Elvolverla palabra clave devuelve cuatro números. Los números están separados por una coma
carácter. De hecho, hemos enviado una tupla que contiene estos cuatro valores. También podríamos devolver una lista.
en lugar de una tupla.

mx

Los valores devueltos se asignan a variables locales.

$ ./[Link]
(5, 1, 5, 15)
5 1 5 15

Salida.

Redefinición de función
Python es dinámico por naturaleza. Es posible redefinir una función que ya ha sido definida.

#!/usr/bin/python

de tiempo importar gmtime, strftime

def mostrarMensaje(msg):
print msg

mostrarMensaje("Listo.")

def mostrarMensaje(msg):
print strftime("%H:%M:%S", gmtime()),
imprimir mensaje

mostrarMensaje("Procesando.")
Definimos unmostrarMensaje()función. Más tarde proporcionamos una nueva definición de la misma función.

de tiempo import gmtime, strftime

Del módulo de tiempo importamos dos funciones que se utilizan para calcular la hora actual.

def mostrarMensaje(msg):
imprimir msg

Esta es la primera definición de una función. Solo imprime un mensaje en la consola.

def mostrarMensaje(msg):
imprimir strftime("%H:%M:%S", gmtime()),
imprimir mensaje

Más adelante en el código fuente, configuramos una nueva definición de lamostrarMensaje()función. La


el mensaje está precedido por una marca de tiempo.

$ ./[Link]
Listo.
23:49:33 Procesando.

Salida del script.

Argumentos de función
La mayoría de las funciones aceptan argumentos. Los argumentos son valores que se envían a la función. El
las funciones procesan los valores y opcionalmente devuelven algún valor.

#!/usr/bin/python

def C2F(c):
return c * 9/5 + 32

imprimir C2F(100)
imprimir C2F(0)
imprimir C2F(30)

En nuestro ejemplo, convertimos la temperatura Celsius a Fahrenheit. ElC2F()la función acepta uno
argumento c, que es la temperatura en Celsius.

$ ./[Link]
212
32
86

Los argumentos en las funciones de Python pueden tener valores implícitos. Se utiliza un valor implícito si no hay
se proporciona valor.

#!/usr/bin/python
def potencia(x, y=2):
r = 1
para i en rango(y):
r = r * x
returnar r

imprimir potencia(3)
imprimir potencia(3, 3)
imprimir potencia(5, 5)

Aquí creamos una función de potencia. La función tiene un argumento con un valor implícito. Podemos
llama a la función con uno o dos argumentos.

$ ./[Link]
9
27
3125

Las funciones de Python pueden especificar sus argumentos con una palabra clave. Esto significa que al llamar a un
función, especificamos tanto una palabra clave como un valor. Cuando tenemos múltiples argumentos y estos son
Usado sin palabras clave, el orden en el que pasamos esos argumentos es crucial. Si esperamos un
nombre, edad o sexo en una función sin palabras clave, no podemos cambiar su orden. Si usamos
palabras clave, podemos.

#!/usr/bin/python

def mostrar(nombre, edad, sexo):


print "Nombre: ", nombre
Edad: , edad
Sexo: , sexo

display("Lary", 43, "M")


Joan

En este ejemplo, el orden en el que especificamos los argumentos es importante. De lo contrario, obtenemos
resultados incorrectos.

$ ./[Link]
Lary
Age: 43
M
Joan
Age: 24
F
#!/usr/bin/python

# [Link]

def mostrar(nombre, edad, sexo):


print "Nombre: ", nombre
Edad:
print "Sexo: ", sexo

display(age=43, name="Lary", sex="M")


Joan

Ahora llamamos a las funciones con sus palabras clave. El orden puede cambiarse, aunque no es
se recomienda hacerlo. Tenga en cuenta que no podemos usar un argumento no clave después de un argumento clave
esto terminaría en un error de sintaxis.

display("Joan", sex="F", age=24)

Este es un concepto legal. Un argumento que no es palabra clave puede ser seguido por argumentos de palabra clave.

Invalid input format

Esto terminará en un error de sintaxis. Un argumento no clave no puede seguir a los argumentos clave.

Las funciones en Python pueden aceptar incluso un número arbitrario de argumentos.

#!/usr/bin/python

def suma(*args):
La función devuelve la suma
de todos los valores
r = 0
para i en args:
r += i
devuelve r

imprimir suma.__doc__
imprimir suma(1, 2, 3)
imprimir suma(1, 2, 3, 4, 5)

Usamos el* operador para indicar que la función aceptará un número arbitrario de argumentos.
Elsumar()la función devolverá la suma de todos los argumentos. La primera cadena en el cuerpo de la función es
se llama a la cadena de documentación de la función. Se utiliza para documentar la función. La cadena debe ser
en comillas triples.

$ ./[Link]
La función devuelve la suma
de todos los valores
6
15

También podemos usar el** construir en nuestras funciones. En tal caso, la función aceptará un
diccionario. El diccionario tiene longitud arbitraria. Podemos entonces analizar normalmente el diccionario, como
habitual.

#!/usr/bin/python
def mostrar(**detalles):

para i en detalles:
print "%s: %s" % (i, detalles[i])

Lary

Este ejemplo demuestra tal caso. Podemos proporcionar un número arbitrario de pares clave-valor.
argumentos. La función los manejará todos.

$ ./[Link]
age: 43
Lary
M

Pasar por referencia


Los parámetros a las funciones se pasan por referencia. Algunos lenguajes pasan copias de los objetos a
Funciones. Pasar objetos por referencia tiene dos conclusiones importantes. El proceso es más rápido que
si se pasaron copias de objetos. Los objetos mutables que se modifican en las funciones son permanentemente
cambiado.

#!/usr/bin/python

n = [1, 2, 3, 4, 5]

imprimir "Lista original:", n

def f(x):
[Link]()
[Link]()
[Link](0, 0)
print "Dentro de f():", x

f(n)

imprimir "Después de la llamada a la función:", n

En nuestro ejemplo, pasamos una lista de enteros a una función. El objeto se modifica dentro del cuerpo de
la función. Después de llamar a la función, el objeto original, la lista de enteros se modifica.

def f(x):
[Link]()
[Link]()
[Link](0, 0)
Imprimir "Dentro de f():", x

En el cuerpo de la función trabajamos con el objeto original. No con una copia del objeto. En
En muchos lenguajes de programación recibiríamos una copia de un objeto por defecto.
$ ./[Link]
Original list: [1, 2, 3, 4, 5]
Dentro de f(): [0, 1, 2, 3]
Después de la llamada a la función: [0, 1, 2, 3]

Una vez que la lista fue modificada, fue modificada para siempre.

Variables globales y locales


A continuación hablaremos sobre cómo se utilizan las variables en las funciones de Python.

#!/usr/bin/python

Jack

def f():
Roberto
Imprimir "Dentro de la función", nombre

imprimir "Fuera de la función", nombre


f()

Una variable definida en el cuerpo de una función tiene un alcance local. Es válida solo dentro del cuerpo de la
función.

$ ./[Link]
Función externa Jack
Dentro de la función Robert

Salida.

#!/usr/bin/python

Jack

def f():
Imprimir 'Dentro de la función', nombre

imprimir "Fuera de la función", nombre


f()

Por defecto, podemos obtener el contenido de una variable global dentro del cuerpo de una función. Pero si nosotros
si queremos cambiar una variable global en una función, debemos usar laglobalpalabra clave.

$ ./[Link]
Función externa Jack
Dentro de la función Jack
#!/usr/bin/python

Jack

def f():
nombre global
Roberto
Imprimir 'Dentro de la función', nombre

imprimir "Fuera de la función", nombre


f()
Imprimir "Fuera de la función", nombre

Ahora, cambiaremos el contenido de una variable de nombre global dentro de una función.

nombre global
Roberto

Usando elglobalpalabra clave, hacemos referencia a la variable definida fuera del cuerpo de la función.
Se le da un nuevo valor a la variable.

$ ./[Link]
Función externa Jack
Dentro de la función Robert
Función exterior Robert

Funciones anónimas
Es posible crear funciones anónimas en Python. Las funciones anónimas no tienen un
nombre. Con ellambdapalabra clave, se pueden crear pequeñas funciones anónimas. Anónimas
Las funciones también se llaman funciones lambda por los programadores de Python. Son parte de la
paradigma funcional incorporado en Python.

Las funciones lambda están restringidas a una sola expresión. Pueden usarse donde sea que se usen funciones normales.
se pueden utilizar funciones.

#!/usr/bin/python

y = 6

z = lambda x: x * y
imprimir z(8)

Este es un pequeño ejemplo de la función lambda.

z = lambda x: x * y

EllambdaLa palabra clave crea una función anónima. La x es un parámetro que se pasa a la
función lambda. El parámetro es seguido por un carácter dos puntos. El código al lado de los dos puntos es
la expresión que se ejecuta cuando se llama a la función lambda. La función lambda es
asignado a la variable z.

imprime z(8)
La función lambda se ejecuta. El número 8 se pasa a la función anónima y se
devuelve 48 como resultado. Tenga en cuenta que z no es un nombre para esta función. Solo es una variable a la que
se asignó la función anónima.

$ ./[Link]
48

Salida del ejemplo.

La función lambda se puede utilizar de manera elegante con otras partes funcionales del lenguaje Python.
gustarmapa()ofiltrar()funciones.

#!/usr/bin/python

cs = [-10, 0, 15, 30, 40]

ft = map(lambda t: (9.0/5)*t + 32, cs)


imprimir ft

En el ejemplo tenemos una lista de temperaturas en grados Celsius. Creamos una nueva lista que contiene
temperaturas en fahrenheit.

ft = map(lambda t: (9.0/5)*t + 32, cs)

Elmapa()la función aplica la función anónima a cada elemento de la lista cs. Crea una
nueva lista de ft que contiene las temperaturas en Fahrenheit calculadas.

$ ./[Link]
[14.0, 32.0, 59.0, 86.0, 104.0]

Ejemplo de salida.

Este capítulo trató sobre funciones en Python

También podría gustarte