Funciones Python de LU3
Funciones Python de LU3
Funciones Python de LU3
html
5.2. Funciones
Una función es un bloque de código con un nombre asociado, que recibe cero o más argumentos como entrada, sigue una secuencia de
sentencias, la cuales ejecuta una operación deseada y devuelve un valor y/o realiza una tarea, este bloque puede ser llamados cuando se
necesite.
El uso de funciones es un componente muy importante del paradigma de la programación llamada estructurada, y tiene varias ventajas:
modularización: permite segmentar un programa complejo en una serie de partes o módulos más simples, facilitando así la
programación y el depurado.
reutilización: permite reutilizar una misma función en distintos programas.
Python dispone de una serie de funciones integradas al lenguaje, y también permite crear funciones definidas por el usuario para ser usadas en
su propios programas.
La sentencia def es una definición de función usada para crear objetos funciones definidas por el usuario.
Una definición de función es una sentencia ejecutable. Su ejecución enlaza el nombre de la función en el namespace local actual a un objecto
función (un envoltorio alrededor del código ejecutable para la función). Este objeto función contiene una referencia al namespace local global
como el namespace global para ser usado cuando la función es llamada.
La definición de función no ejecuta el cuerpo de la función; esto es ejecutado solamente cuando la función es llamada.
def NOMBRE(LISTA_DE_PARAMETROS):
"""DOCSTRING_DE_FUNCION"""
SENTENCIAS
RETURN [EXPRESION]
...
>>> hola("Plone")
Hola Plone !
Advertencia
Los bloques de function deben estar indentado como otros bloques estructuras de control.
La palabra reservada def se usa para definir funciones. Debe seguirle el nombre de la función en el ejemplo anterior hola() y la lista de
parámetros formales entre paréntesis. Las sentencias que forman el cuerpo de la función empiezan en la línea siguiente, y deben estar
indentado.
La primer sentencia del cuerpo de la función puede ser opcionalmente una cadenas de caracteres literal; esta es la cadenas de caracteres de
documentación de la función, o docstrings. (Puedes encontrar más acerca de docstrings en la sección Cadenas de texto de documentación).
Hay herramientas que usan las docstrings para producir automáticamente documentación en línea o imprimible, o para permitirle al usuario que
navegue el código en forma interactiva; es una buena práctica incluir docstrings en el código que uno escribe, por lo que se debe hacer un
hábito de esto.
La ejecución de la función hola() muestra la impresión de un mensaje Hola Plone ! que se imprime por consola. Devolver el objeto por los
valores de retorno opcionales.
La ejecución de una función introduce una nueva tabla de símbolos usada para las variables locales de la función. Más precisamente, todas las
asignaciones de variables en la función almacenan el valor en la tabla de símbolos local; así mismo la referencia a variables primero mira la
tabla de símbolos local, luego en la tabla de símbolos local de las funciones externas, luego la tabla de símbolos global, y finalmente la tabla de
nombres predefinidos. Así, no se les puede asignar directamente un valor a las variables globales dentro de una función (a menos se las
nombre en la sentencia global), aunque si pueden ser referenciadas.
Los parámetros reales (argumentos) de una función se introducen en la tabla de símbolos local de la función llamada cuando esta es
ejecutada; así, los argumentos son pasados por valor (dónde el valor es siempre una referencia a un objeto, no el valor del objeto). Cuando
una función llama a otra función, una nueva tabla de símbolos local es creada para esa llamada.
La definición de una función introduce el nombre de la función en la tabla de símbolos actual. El valor del nombre de la función tiene un tipo
que es reconocido por el interprete como una función definida por el usuario. Este valor puede ser asignado a otro nombre que luego puede ser
usado como una función. Esto sirve como un mecanismo general para renombrar.
Al definir una función los valores los cuales se reciben se denominan parámetros, pero durante la llamada los valores que se envían se
denominan argumentos.
Cuando enviá argumentos a una función, estos se reciben por orden en los parámetros definidos. Se dice por tanto que son argumentos por
posición:
... return a - b
...
20
En el ejemplo anterior el argumento 30 es la posición 0 por consiguiente es el parámetro de la función a, seguidamente el argumento 10 es la
posición 1 por consiguiente es el parámetro de la función b.
Sin embargo es posible evadir el orden de los parámetros si indica durante la llamada que valor tiene cada parámetro a partir de su nombre:
... return a - b
...
-20
Al momento de llamar una función la cual tiene definidos unos parámetros, si no pasa los argumentos correctamente provocará una
excepción TypeError:
>>> resta()
Para solucionar la excepción TypeError ejecutada al momento de la llamada a una función sin argumentos, entonces usted puede asignar unos
valores por defecto nulos a los parámetros, de esa forma puede hacer una comprobación antes de ejecutar el código de la función:
... return
... return a - b
...
20
>>> resta()
Como puede ver el el código anterior, se indica el final de la función luego de la sentencia print, usando la sentencia return aunque no devuelva
nada.
En alguna ocasión usted no sabe previamente cuantos elementos necesita enviar a una función. En estos casos puede utilizar los parámetros
indeterminados por posición y por nombre.
Usted debe crear una lista dinámica de argumentos, es decir, un tipo tupla, definiendo el parámetro con un asterisco, para recibir los
parámetros indeterminados por posición:
...
Hola Plone
[1, 2, 3, 4, 5]
Para recibir un número indeterminado de parámetros por nombre (clave-valor o en inglés keyword args), usted debe crear un diccionario
dinámico de argumentos definiendo el parámetro con dos asteriscos:
...
Al recibirse como un diccionario, puede iterarlo y mostrar la clave y valor de cada argumento:
...
l => [1, 2, 3, 4, 5]
n => 5
Si requiere aceptar ambos tipos de parámetros simultáneamente en una función, entonces debe crear ambas colecciones dinámicas. Primero
los argumentos indeterminados por valor y luego los cuales son por clave y valor:
... total = 0
...
edad => 38
Los nombres args y kwargs no son obligatorios, pero se suelen utilizar por convención.
Muchos frameworks y librerías los utilizan por lo que es una buena practica llamarlos así.
Es una operación nula — cuando es ejecutada, nada sucede. Eso es útil como un contenedor cuando una sentencia es requerida
sintácticamente, pero no necesita código que ser ejecutado, por ejemplo:
...
>>> type(consultar_nombre_genero)
<type 'function'>
>>> consultar_nombre_genero("M")
>>>
>>> # una clase sin ningún método (aun)
...
>>> type(macagua)
<type 'classobj'>
Las funciones pueden comunicarse con el exterior de las mismas, al proceso principal del programa usando la sentencia return. El proceso de
comunicación con el exterior se hace devolviendo valores. A continuación, un ejemplo de función usando return:
def suma(numero1,numero2):
print "\n"
>>> suma(23,74)
97
Nota
Una característica interesante, es la posibilidad de devolver valores múltiples separados por comas:
...
>>> prueba()
En el código anterior los valores múltiples se tratan en conjunto como una tupla inmutable y se pueden reasignar a distintas variables:
...
>>> prueba()
20 <type 'int'>
>>> print lista, type(lista)
En el código anterior puede observa como se asignar a distintas variables en base a los valores de la tupla inmutable.
Definición de funciones
def iva():
iva = 12
Invocar funciones
>>> iva()
36
def suma(numero1,numero2):
print "\n"
>>> suma(23,74)
97
Importante
Usted puede descargar el código usado en esta sección haciendo clic aquí.
Truco
Para ejecutar el código funciones.py, abra una consola de comando, acceda al directorio donde se encuentra el mismo, y ejecute el siguiente
comando:
python funciones.py
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
5.2. Funciones
Una función es un bloque de código con un nombre asociado, que recibe cero o más argumentos como entrada, sigue una secuencia de
sentencias, la cuales ejecuta una operación deseada y devuelve un valor y/o realiza una tarea, este bloque puede ser llamados cuando se
necesite.
El uso de funciones es un componente muy importante del paradigma de la programación llamada estructurada, y tiene varias ventajas:
modularización: permite segmentar un programa complejo en una serie de partes o módulos más simples, facilitando así la
programación y el depurado.
reutilización: permite reutilizar una misma función en distintos programas.
Python dispone de una serie de funciones integradas al lenguaje, y también permite crear funciones definidas por el usuario para ser usadas en
su propios programas.
La sentencia def es una definición de función usada para crear objetos funciones definidas por el usuario.
Una definición de función es una sentencia ejecutable. Su ejecución enlaza el nombre de la función en el namespace local actual a un objecto
función (un envoltorio alrededor del código ejecutable para la función). Este objeto función contiene una referencia al namespace local global
como el namespace global para ser usado cuando la función es llamada.
La definición de función no ejecuta el cuerpo de la función; esto es ejecutado solamente cuando la función es llamada.
def NOMBRE(LISTA_DE_PARAMETROS):
"""DOCSTRING_DE_FUNCION"""
SENTENCIAS
RETURN [EXPRESION]
...
>>> hola("Plone")
Hola Plone !
Advertencia
Los bloques de function deben estar indentado como otros bloques estructuras de control.
La palabra reservada def se usa para definir funciones. Debe seguirle el nombre de la función en el ejemplo anterior hola() y la lista de
parámetros formales entre paréntesis. Las sentencias que forman el cuerpo de la función empiezan en la línea siguiente, y deben estar
indentado.
La primer sentencia del cuerpo de la función puede ser opcionalmente una cadenas de caracteres literal; esta es la cadenas de caracteres de
documentación de la función, o docstrings. (Puedes encontrar más acerca de docstrings en la sección Cadenas de texto de documentación).
Hay herramientas que usan las docstrings para producir automáticamente documentación en línea o imprimible, o para permitirle al usuario que
navegue el código en forma interactiva; es una buena práctica incluir docstrings en el código que uno escribe, por lo que se debe hacer un
hábito de esto.
La ejecución de la función hola() muestra la impresión de un mensaje Hola Plone ! que se imprime por consola. Devolver el objeto por los
valores de retorno opcionales.
La ejecución de una función introduce una nueva tabla de símbolos usada para las variables locales de la función. Más precisamente, todas las
asignaciones de variables en la función almacenan el valor en la tabla de símbolos local; así mismo la referencia a variables primero mira la
tabla de símbolos local, luego en la tabla de símbolos local de las funciones externas, luego la tabla de símbolos global, y finalmente la tabla de
nombres predefinidos. Así, no se les puede asignar directamente un valor a las variables globales dentro de una función (a menos se las
nombre en la sentencia global), aunque si pueden ser referenciadas.
Los parámetros reales (argumentos) de una función se introducen en la tabla de símbolos local de la función llamada cuando esta es
ejecutada; así, los argumentos son pasados por valor (dónde el valor es siempre una referencia a un objeto, no el valor del objeto). Cuando
una función llama a otra función, una nueva tabla de símbolos local es creada para esa llamada.
La definición de una función introduce el nombre de la función en la tabla de símbolos actual. El valor del nombre de la función tiene un tipo
que es reconocido por el interprete como una función definida por el usuario. Este valor puede ser asignado a otro nombre que luego puede ser
usado como una función. Esto sirve como un mecanismo general para renombrar.
Al definir una función los valores los cuales se reciben se denominan parámetros, pero durante la llamada los valores que se envían se
denominan argumentos.
Cuando enviá argumentos a una función, estos se reciben por orden en los parámetros definidos. Se dice por tanto que son argumentos por
posición:
... return a - b
...
20
En el ejemplo anterior el argumento 30 es la posición 0 por consiguiente es el parámetro de la función a, seguidamente el argumento 10 es la
posición 1 por consiguiente es el parámetro de la función b.
Sin embargo es posible evadir el orden de los parámetros si indica durante la llamada que valor tiene cada parámetro a partir de su nombre:
... return a - b
...
-20
Al momento de llamar una función la cual tiene definidos unos parámetros, si no pasa los argumentos correctamente provocará una
excepción TypeError:
>>> resta()
... return
... return a - b
...
20
>>> resta()
Como puede ver el el código anterior, se indica el final de la función luego de la sentencia print, usando la sentencia return aunque no devuelva
nada.
En alguna ocasión usted no sabe previamente cuantos elementos necesita enviar a una función. En estos casos puede utilizar los parámetros
indeterminados por posición y por nombre.
Usted debe crear una lista dinámica de argumentos, es decir, un tipo tupla, definiendo el parámetro con un asterisco, para recibir los
parámetros indeterminados por posición:
...
Hola Plone
[1, 2, 3, 4, 5]
Para recibir un número indeterminado de parámetros por nombre (clave-valor o en inglés keyword args), usted debe crear un diccionario
dinámico de argumentos definiendo el parámetro con dos asteriscos:
...
Al recibirse como un diccionario, puede iterarlo y mostrar la clave y valor de cada argumento:
...
l => [1, 2, 3, 4, 5]
n => 5
Si requiere aceptar ambos tipos de parámetros simultáneamente en una función, entonces debe crear ambas colecciones dinámicas. Primero
los argumentos indeterminados por valor y luego los cuales son por clave y valor:
... total = 0
...
edad => 38
Los nombres args y kwargs no son obligatorios, pero se suelen utilizar por convención.
Muchos frameworks y librerías los utilizan por lo que es una buena practica llamarlos así.
Es una operación nula — cuando es ejecutada, nada sucede. Eso es útil como un contenedor cuando una sentencia es requerida
sintácticamente, pero no necesita código que ser ejecutado, por ejemplo:
...
>>> type(consultar_nombre_genero)
<type 'function'>
>>> consultar_nombre_genero("M")
>>>
...
>>> macagua = Persona
>>> type(macagua)
<type 'classobj'>
Las funciones pueden comunicarse con el exterior de las mismas, al proceso principal del programa usando la sentencia return. El proceso de
comunicación con el exterior se hace devolviendo valores. A continuación, un ejemplo de función usando return:
def suma(numero1,numero2):
print "\n"
>>> suma(23,74)
97
Nota
Una característica interesante, es la posibilidad de devolver valores múltiples separados por comas:
...
>>> prueba()
En el código anterior los valores múltiples se tratan en conjunto como una tupla inmutable y se pueden reasignar a distintas variables:
...
>>> prueba()
20 <type 'int'>
En el código anterior puede observa como se asignar a distintas variables en base a los valores de la tupla inmutable.
5.2.6. Ejemplos de funciones
Definición de funciones
def iva():
iva = 12
Invocar funciones
>>> iva()
36
def suma(numero1,numero2):
print "\n"
>>> suma(23,74)
97
Importante
Usted puede descargar el código usado en esta sección haciendo clic aquí.
Truco
Para ejecutar el código funciones.py, abra una consola de comando, acceda al directorio donde se encuentra el mismo, y ejecute el siguiente
comando:
python funciones.py
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
3.11. Tipo diccionarios
Los diccionarios pueden ser creados colocando una lista separada por coma de pares “key:value” entre {}, por ejemplo:
“{'python': 27, 'plone': 51}” o “{27:'python',51:'plone'}”, o por el constructor “dict()”.
>>> diccionario = {
... "clave1":234,
... "clave2":True,
... "clave4":[1,2,3,4]
... }
Usted puede acceder a los valores del diccionario usando cada su clave, se presenta unos ejemplos a continuación:
>>> diccionario['clave1']
234
>>> diccionario['clave2']
True
>>> diccionario['clave3']
'Valor 1'
>>> diccionario['clave4']
[1, 2, 3, 4]
Un diccionario puede almacenar los diversos tipos de datos integrados en Python usando la función type(), usted puede pasar el
diccionario con la clave que usted desea determinar el tipo de dato, se presenta unos ejemplos a continuación:
>>> type(diccionario['clave1'])
<type 'int'>
>>> type(diccionario['clave2'])
<type 'bool'>
>>> type(diccionario['clave3'])
<type 'str'>
>>> type(diccionario['clave4'])
<type 'list'>
3.11.1. Operaciones
Los objetos de tipo diccionario permite una serie de operaciones usando operadores integrados en el interprete Python para su
tratamiento, a continuación algunos de estos:
Esta operación le permite acceder a un valor especifico del diccionario mediante su clave.
>>> versiones['zope']
2.13
Esta operación le permite asignar el valor especifico del diccionario mediante su clave.
>>> versiones['plone']
>>> versiones
>>> versiones['plone']
5.1
3.11.1.3. Iteración in
Este operador es el mismo operador integrado in en el interprete Python pero aplicada al uso de la secuencia de
tipo diccionario.
True
False
En el ejemplo anterior este operador devuelve True si la clave esta en el diccionario versiones, de lo contrario devuelve False.
3.11.2. Métodos
Los objetos de tipo diccionario integra una serie de métodos integrados a continuación:
3.11.2.1. clear()
>>> versiones.clear()
{}
3.11.2.2. copy()
True
3.11.2.3. fromkeys()
Este método crea un nuevo diccionario con claves a partir de un tipo de dato secuencia. El valor de value por defecto es el
tipo None.
En el ejemplo anterior inicializa los valores de cada clave a None, mas puede inicializar un valorcomún por defecto para
cada clave:
Este método devuelve el valor en base a una coincidencia de búsqueda en un diccionario mediante una clave, de lo contrario
devuelve el objeto None.
>>> versiones.get('plone')
5.1
>>> versiones.get('php')
>>>
3.11.2.5. has_key()
Este método devuelve el valor True si el diccionario tiene presente la clave enviada como argumento.
>>> versiones.has_key('plone')
True
>>> versiones.has_key('django')
False
3.11.2.6. items()
Este método devuelve una lista de pares de diccionarios (clave, valor), como 2 tuplas.
>>> versiones.items()
3.11.2.7. iteritems()
Este método devuelve un iterador sobre los elementos (clave, valor) del diccionario. Lanza una excepción StopIteration si llega al
final de la posición del diccionario.
>>> versiones.iteritems()
zope 2.13
python 2.7
plone 5.1
('zope', 2.13)
('python', 2.7)
('plone', 5.1)
StopIteration
3.11.2.8. iterkeys()
Este método devuelve un iterador sobre las claves del diccionario. Lanza una excepción StopIterationsi llega al final de la
posición del diccionario.
>>> versiones.iterkeys()
...
zope
python
plone
zope
python
plone
StopIteration
3.11.2.9. itervalues()
Este método devuelve un iterador sobre los valores del diccionario. Lanza una excepción StopIteration si llega al final de la
posición del diccionario.
>>> versiones.itervalues()
...
2.13
2.7
5.1
2.13
2.7
StopIteration
3.11.2.10. keys()
>>> versiones.keys()
3.11.2.11. pop()
Este método remueve específicamente una clave de diccionario y devuelve valor correspondiente. Lanza una
excepción KeyError si la clave no es encontrada.
>>> versiones
>>> versiones.pop('zope')
2.13
>>> versiones
>>> versiones.pop('django')
KeyError: 'django'
3.11.2.12. popitem()
Este método remueve y devuelve algún par (clave, valor) del diccionario como una 2 tuplas. Lanza una excepción KeyError si
el diccionario esta vació.
>>> versiones
('zope', 2.13)
>>> versiones
>>> versiones.popitem()
('python', 2.7)
>>> versiones
{'plone': 5.1}
>>> versiones.popitem()
('plone', 5.1)
>>> versiones
{}
>>> versiones.popitem()
3.11.2.13. setdefault()
Este método es similar a get(key, default_value), pero además asigna la clave key al valor por default_value para la clave si esta
no se encuentra en el diccionario.
D.setdefault(key[,default_value])
A continuación un ejemplo de como trabaja el método setdefault() cuando la clave esta en el diccionario:
plone: None
A continuación un ejemplo de como trabaja el método setdefault() la clave no esta en el diccionario pero esta vez
el default_value es proveído:
django = 2.1
A continuación otro ejemplo en donde puedes agrupar N tuplas por el valor el cual se repite más y construir un diccionario que
cuyas claves son los valores mas repetidos y cuyos valores este agrupados en tipo listas:
>>>
>>> paquetes = {}
... if paquetes.has_key(clave):
... paquetes[clave].append(valor)
... else:
En el tipo tupla PKGS los elementos mas repetidos son 'zope' y 'plone' estos se convierten en clave del diccionario paquetes y
los otros elementos se agrepan en listas como sus respectivos valores.
>>> paquetes = {}
...
En el ejemplo anterior puede ver que el aprovechamiento del método setdefault() a comparación de no usar el respectivo
método.
3.11.2.14. update()
Este método actualiza un diccionario agregando los pares clave-valores en un segundo diccionario. Este método no devuelve
nada.
El método update() toma un diccionario o un objeto iterable de pares clave/valor (generalmente tuplas). Si se llama a update() sin
pasar parámetros, el diccionario permanece sin cambios.
{'django': 2.1}
>>> versiones.update(versiones_adicional)
Como puede apreciar este método no devuelve nada, más si muestra de nuevo el diccionarioversiones puede ver que este fue
actualizado con el otro diccionario versiones_adicional.
3.11.2.15. values()
>>> versiones.values()
3.11.2.16. viewitems()
Este método devuelve un objeto como un conjunto mutable proveyendo una vista en los elementos del diccionario:
>>> versiones.viewkeys()
...
zope 2.13
python 2.7
plone 5.1
3.11.2.17. viewkeys()
Este método devuelve un objeto proveyendo una vista de las claves del diccionario.
>>> versiones.viewkeys()
...
zope
python
plone
3.11.2.18. viewvalues()
Este método devuelve un objeto proveyendo una vista de los valores del diccionario.
>>> versiones.viewvalues()
...
2.13
2.7
5.1
3.11.3. Funciones
Los objetos de tipo diccionario tienen disponibles una serie de funciones integradas en el interprete Python para su tratamiento,
a continuación algunas de estas:
3.11.3.1. cmp()
Esta función es la misma función integrada cmp() en el interprete Python pero aplicada al uso de la secuencia de
tipo diccionario.
La función cmp() es usado en Python para comparar valores y claves de dos diccionarios. Si la función devuelve el valor 0 si
ambos diccionarios son igual, devuelve el valor 1 si el primer diccionario es mayor que el segundo diccionario y devuelve el
valor -1 si el primer diccionario es menor que el segundo diccionario.
3.11.3.2. len()
Esta función es la misma función integrada len() en el interprete Python pero aplicada al uso de la secuencia de tipo diccionario.
>>> len(versiones)
3
3.11.4. Sentencias
Los objetos de tipo diccionario tienen disponibles una serie de sentencias integradas en el interprete Python para su
tratamiento, a continuación algunas de estas:
3.11.4.1. del
Esta sentencia es la misma sentencia integrada del en el interprete Python pero aplicada al uso de la secuencia de
tipo diccionario.
En el código fuente anterior se usa la sentencia del para eliminar un elemento del diccionario mediante su respectiva clave.
Para convertir a tipos diccionarios debe usar la función dict() la cual esta integrada en el interprete Python.
Truco
Para más información consulte las funciones integradas para operaciones de secuencias.
3.11.6. Ejemplos
datos_basicos = {
"nombres":"Leonardo Jose",
"apellidos":"Caballero Garcia",
"cedula":"26938401",
"fecha_nacimiento":"03/12/1980",
"nacionalidad":"Venezolana",
"estado_civil":"Soltero"
}
print "===================="
print "---------------------"
datos_basicos['apellidos']
locale.setlocale(locale.LC_ALL, os.environ['LANG'])
datetime.datetime.strptime(
datos_basicos['fecha_nacimiento'], '%d/%m/%Y'
), "%d de %B de %Y"
Usted puede consultar toda la documentación disponible sobre los diccionarios desde la consola interactiva de la siguiente
forma:
>>> help(dict)
Importante
Usted puede descargar el código usado en esta sección haciendo clic aquí.
Truco
Para ejecutar el código tipo_diccionarios.py, abra una consola de comando, acceda al directorio donde se encuentra el mismo, y
ejecute el siguiente comando:
python tipo_diccionarios.py
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
Un conjunto, es una colección no ordenada y sin elementos repetidos. Los usos básicos de éstos incluyen verificación de
pertenencia y eliminación de entradas duplicadas.
3.12.1. Métodos
Los objetos de tipo conjunto mutable y conjunto inmutable integra una serie de métodos integrados a continuación:
3.12.1.1. add()
Este método agrega un elemento a un conjunto mutable. Esto no tiene efecto si el elemento ya esta presente.
set([1, 2, 3, 4, 5, 7, 11])
>>> set_mutable1.add(22)
3.12.1.2. clear()
Este método remueve todos los elementos desde este conjunto mutable.
set([1, 2, 3, 4, 5, 7, 11])
>>> set_mutable1.clear()
3.12.1.3. copy()
Este método devuelve una copia superficial del tipo conjunto mutable o conjunto inmutable:
True
3.12.1.4. difference()
Este método devuelve la diferencia entre dos conjunto mutable o conjunto inmutable: todos los elementos que están en el
primero, pero no en el argumento.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
set([1, 3, 7])
set([8, 9])
3.12.1.5. difference_update()
Este método actualiza un tipo conjunto mutable llamando al método difference_update()con la diferencia de los conjuntos.
>>> proyecto1
>>> proyecto2
>>> proyecto1.difference_update(proyecto2)
>>> proyecto1
Si proyecto1 y proyecto2 son dos conjuntos. La diferencia del conjunto proyecto1 y conjunto proyecto2 es un conjunto de
elementos que existen solamente en el conjunto proyecto1 pero no en el conjunto proyecto2.
3.12.1.6. discard()
Este método remueve un elemento desde un conjunto mutable si esta presente.
>>> paquetes
>>> paquetes.discard('django')
>>> paquetes
El conjunto mutable permanece sin cambio si el elemento pasado como argumento al método discard() no existe.
>>> paquetes.discard('php')
>>> paquetes
3.12.1.7. intersection()
Este método devuelve la intersección entre los conjuntos mutables o conjuntos inmutables: todos los elementos que están en
ambos.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
3.12.1.8. intersection_update()
Este método actualiza un conjunto mutable con la intersección de ese mismo y otro conjunto mutable.
>>> proyecto1
>>> proyecto2
>>> proyecto3
set(['python'])
La intersección de dos o mas conjuntos es el conjunto de elemento el cual es común a todos los conjuntos.
3.12.1.9. isdisjoint()
Este método devuelve el valor True si no hay elementos comunes entre los conjuntos mutables o conjuntos inmutables.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
3.12.1.10. issubset()
Este método devuelve el valor True si el conjunto mutable es un subconjunto del conjunto mutable o del conjunto
inmutable argumento.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
False
True
3.12.1.11. issuperset()
Este método devuelve el valor True si el conjunto mutable o el conjunto inmutable es un supersetdel conjunto
mutable argumento.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
False
True
3.12.1.12. pop()
Este método remueve arbitrariamente y devuelve un elemento de conjunto mutable. El método pop() no toma ningún
argumento. Si el conjunto mutable esta vacío se lanza una excepción KeyError.
>>> paquetes
>>> paquetes
>>> paquetes
set(['plone', 'django'])
>>> paquetes
set(['django'])
Tenga en cuenta que usted podría obtener diferente salida devueltas usando el método pop() por que remueve aleatoriamente
un elemento.
3.12.1.13. remove()
Este método busca y remueve un elemento de un conjunto mutable, si debe ser un miembro.
>>> paquetes
>>> paquetes.remove('django')
>>> paquetes
Si el elemento no es existe en el conjunto mutable, lanza una excepción KeyError. Usted puede usar el método discard() si
usted no quiere este error. El conjunto mutable permanece sin cambio si el elemento pasado al método discard() no existe.
Un conjunto es una colección desordenada de elementos. Si usted quiere remover arbitrariamente elemento un conjunto, usted
puede usar el método pop().
3.12.1.14. symmetric_difference()
Este método devuelve todos los elementos que están en un conjunto mutable e conjunto inmutable u otro, pero no en ambos.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
set([1, 3, 7, 8, 9])
3.12.1.15. symmetric_difference_update()
Este método actualiza un conjunto mutable llamando al métodosymmetric_difference_update() con los conjuntos de diferencia
simétrica.
La diferencia simétrica de dos conjuntos es el conjunto de elementos que están en cualquiera de los conjuntos pero no en
ambos.
>>> proyecto1
>>> proyecto2
>>> proyecto1
3.12.1.16. union()
Este método devuelve un conjunto mutable y conjunto inmutable con todos los elementos que están en alguno de
los conjuntos mutables y conjuntos inmutables.
set([1, 2, 3, 4, 5, 7, 11])
set([2, 4, 5, 8, 9, 11])
set([1, 2, 3, 4, 5, 7, 8, 9, 11])
3.12.1.17. update()
Este método agrega elementos desde un conjunto mutable (pasando como un argumento) un tipo tupla, un tipo lista, un
tipo diccionario o un tipo conjunto mutable llamado con el métodoupdate().
A continuación un ejemplo de agregar nuevos elementos un tipo conjunto mutable usando otro tipo conjunto mutable:
>>> version_plone_dev
set([5.1, 6])
>>> versiones_plone
>>> versiones_plone.update(version_plone_dev)
>>> versiones_plone
A continuación un ejemplo de agregar nuevos elementos un tipo conjunto mutable usando otro tipo cadena de caracteres:
>>> cadena
'abc'
>>> conjunto.update(cadena)
>>> conjunto
set(['a', 1, 2, 'b', 'c'])
A continuación un ejemplo de agregar nuevos elementos un tipo conjunto mutable usando otro tipo diccionario:
>>> diccionario.viewitems()
>>> conjunto.update(diccionario)
>>> conjunto
Para convertir a tipos conjuntos debe usar las funciones set() y frozenset(), las cuales están integradas en el interprete Python.
Truco
Para más información consulte las funciones integradas para operaciones de secuencias.
3.12.3. Ejemplos
para_comer = set([
print "===================="
else:
Los elementos de un set son únicos (sin repeticiones dentro del set), y deben ser objetos inmutables: números, cadenas de
caracteres, tuplas y sets inmutables, pero no listas ni sets mutables.
Usted puede consultar toda la documentación disponible sobre los conjuntos set desde la consola interactiva de la siguiente
forma:
>>> help(set)
Usted puede consultar toda la documentación disponible sobre los conjuntos frozenset desde la consola interactiva de la
siguiente forma:
>>> help(frozenset)
Importante
Usted puede descargar el código usado en esta sección haciendo clic aquí.
Truco
Para ejecutar el código tipo_conjuntos.py, abra una consola de comando, acceda al directorio donde se encuentra el mismo, y
ejecute el siguiente comando:
python tipo_conjuntos.py
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
Las funciones de predicado no es más que una función la cual dice si algo es True o False, es decir, es una función que
devuelve un tipo de datos booleano.
Por hacer
TODO terminar de escribir la sección Funciones de predicado.
Una función anónima, como su nombre indica es una función sin nombre. Es decir, es posible ejecutar una función sin
referenciar un nombre, en Python puede ejecutar una función sin definirla con def.
De hecho son similares pero con una diferencia fundamental, el contenido de una función anónima debe ser una única
expresión en lugar de un bloque de acciones.
Las funciones anónimas se implementan en Python con las funciones o expresiones lambda, esta es unas de las funcionalidades
más potentes de Python, pero a la vez es la más confusas para los principiantes.
Más allá del sentido de función que usted tiene hasta el momento, con su nombre y sus acciones internas, una función en su
sentido más trivial significa realizar algo sobre algo. Por tanto se podría decir que, mientras las funciones
anónimas lambda sirven para realizar funciones simples, las funciones definidas con def sirven para manejar tareas más
extensas.
Si deconstruye una función sencilla, puede llegar a una función lambda. Por ejemplo la siguiente función es para doblar un valor
de un número:
>>> doblar(2)
>>> type(doblar)
<type 'function'>
>>> doblar(2)
>>> type(doblar)
<type 'function'>
Usted puede todavía simplificar más, escribirlo todo en una sola línea, de la siguiente forma:
>>> doblar(2)
>>> type(doblar)
<type 'function'>
Esta notación simple es la que una función lambda intenta replicar, observe, a continuación se va a convertir la función en una
función anónima:
En este ejemplo tiene una función anónima con una entrada que recibe numero, y una salida que devuelve numero * 2.
Lo único que necesita hacer para utilizarla es guardarla en una variable y utilizarla tal como haría con una función normal:
>>> doblar(2)
>>> type(doblar)
<type 'function'>
Con la flexibilidad de Python usted puede implementar infinitas funciones simples. Usted puede encontrar más ejemplos de
funciones anónimas usando lambda en la sección ejemplos de funciones avanzadas.
Usted puede explotar al máximo la función lambda utilizándola en conjunto con otras funciones como filter() y map().
>>> impar(5)
True
A continuación, se presenta un ejemplo para darle la vuelta a una cadena rebanándola en sentido inverso:
>>> revertir("Plone")
'enolP'
>>> revertir("enolP")
'Plone'
>>> sumar(5,2)
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
Las funciones recursivas son funciones que se llaman a sí mismas durante su propia ejecución. Ellas funcionan de forma similar
a las iteraciones, pero debe encargarse de planificar el momento en que dejan de llamarse a sí mismas o tendrá una función
recursiva infinita.
Estas funciones se estilan utilizar para dividir una tarea en sub-tareas más simples de forma que sea más fácil abordar el
problema y solucionarlo.
Un ejemplo de una función recursiva sin retorno, es el ejemplo de cuenta regresiva hasta cero a partir de un número:
... numero -= 1
... cuenta_regresiva(numero)
... else:
...
>>> cuenta_regresiva(5)
Boooooooom!
Fin de la función 0
Fin de la función 1
Fin de la función 2
Fin de la función 3
Fin de la función 4
...
120
Por hacer
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
5.5. Funciones de orden superior
Las funciones de Python pueden tomar funciones como parámetros y devolver funciones como resultado. Una función que hace
ambas cosas o alguna de ellas se llama función de orden superior.
5.5.1. filter()
La función filter() es una función la cual toma un predicado y una lista y devuelve una lista con los elementos que satisfacen el
predicado. Tal como su nombre indica filter() significa filtrar, ya que a partir de una lista o iterador y una función condicional, es
capaz de devolver una nueva colección con los elementos filtrados que cumplan la condición.
Todo esto podría haberse logrado también usando listas por comprensión que usaran predicados. No hay ninguna regla que diga
cuando usar la función map() o la función filter() en lugar de laslistas por comprensión, simplemente debe decidir que es más
legible dependiendo del contexto.
Por ejemplo, suponga que tiene una lista varios números y requiere filtrarla, quedando únicamente con los números múltiples de
5, eso seria así:
>>> # Primero declaramos una función condicional
def multiple(numero):
if numero % 5 == 0:
return True
Si ejecuta el filtro obtiene una lista los números múltiples de 5. Por tanto cuando utiliza la función filter() tiene que enviar una
función condicional, para esto, puede utilizar una función anónima lambda, como se muestra a continuación:
Así, en una sola línea ha definido y ejecutado el filtro utilizando una función condicional anónima y devolviendo una lista de
números.
Sin embargo, más allá de filtrar listas con valores simples, el verdadero potencial de la función filter() sale a relucir cuando usted
necesita filtrar varios objetos de una lista.
Por ejemplo, dada una lista con varias personas, a usted le gustaría filtrar únicamente las cuales son menores de edad:
...
...
...
>>> personas = [
... Persona("Enrique", 3)
... ]
>>> menores = filter(lambda persona: persona.edad < 18, personas)
print menor
Sabrina de 12 años
Enrique de 3 años
Este es un ejemplo sencillo, con el cual usted puede realizar filtrados con objetos, de forma amigable.
5.5.2. map()
La función map() toma una función y una lista y aplica esa función a cada elemento de esa lista, produciendo una nueva lista. Va
a ver su definición de tipo y como se define.
Esta función trabaja de una forma muy similar a filter(), con la diferencia que en lugar de aplicar una condición a un elemento de
una lista o secuencia, aplica una función sobre todos los elementos y como resultado se devuelve un lista de números doblado
su valor:
return numero*2
Usted puede simplificar el código anterior usando una función lambda para substituir la llamada de una función definida, como se
muestra a continuación:
La función map() se utiliza mucho junto a expresiones lambda ya que permite evitar escribir bucles for.
Además se puede utilizar sobre más de un objeto iterable con la condición que tengan la misma longitud. Por ejemplo, si
requiere multiplicar los números de dos listas:
>>> a = [1, 2, 3, 4, 5]
>>> a = [1, 2, 3, 4, 5]
...
...
...
>>> personas = [
... Persona("Enrique", 3)
... ]
... p.edad += 1
... return p
...
...
Leonardo de 39 años
Ana de 34 años
Sabrina de 13 años
Enrique de 4 años
Claro que en este caso tiene que utilizar una función definida porque no necesitamos actuar sobre la instancia, a no ser que
usted se tome la molestia de rehacer todo el objeto:
...
...
... def __str__(self):
...
>>> personas = [
... Persona("Enrique", 3)
... ]
... p.edad += 1
... return p
...
...
Leonardo de 39 años
Ana de 34 años
Sabrina de 13 años
Enrique de 4 años
5.5.3. lambda
La expresión lambda, es una función anónima que suelen ser usadas cuando necesita una función una sola vez. Normalmente
usted crea funciones lambda con el único propósito de pasarlas a funciones de orden superior.
En muchos lenguajes, el uso de lambdas sobre funciones definidas causa problemas de rendimiento. No es el caso en Python.
>>> import os
['os.pyc', 'os.py']
En el ejemplo anterior se usa el método os.__file__ para obtener la ruta donde esta instalada el módulo os en su sistema,
ejecutando la siguiente sentencia:
>>> os.__file__
'/usr/lib/python2.7/os.pyc'
Si con el método os.__file__ obtiene la ruta del módulo os con el métodoreplace("/os.pyc", "/") busca la cadena de carácter
“/os.pyc” y la remplaza por la cadena de carácter “/”
Luego se define la variable archivos generando una lista de archivos usando la función os.listdir(), pasando el parámetro
obtenido de la ruta donde se instalo el módulo osejecutando en el comando previo, con la siguiente sentencia:
De esta forma se define en la variable archivos un tipo lista con un tamaño de 433, como se puede comprobar a continuación:
>>> type(archivos)
<type 'list'>
>>> len(archivos)
443
Opcionalmente puede comprobar si la cadena de caracteres os.pyc se encuentras una de las posiciones de la lista archivos,
ejecutando la siguiente sentencia:
True
Ya al comprobar que existe la cadena de caracteres “os.pyc” se usa una función lambda como parámetro de la
función filter() para filtrar todos los archivos del directorio “/usr/lib/python2.7/” por medio del función os.listdir() que inicien con la
cadena de caracteres “os.” usando la función startswith().
['os.pyc', 'os.py']
Así de esta forma se comprueba que existe el archivo compilado “os.pyc” de Python junto con el mismo módulo Python “os.py”.
Truco
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
5.6. Funciones integradas
El interprete Python tiene un número de funciones integradas (built-in) dentro del módulo __builtins__, las cuales están siempre
disponibles. Estas funciones están listadas en orden alfabéticos a continuación:
5.6.1.1. apply()
La función apply() devuelve el resultado de una función o objeto clase llamado con argumentos soportados.
...
(1, 2, 3)
5.6.1.2. callable()
>>> callable([1,2,3])
False
>>> callable(callable)
True
>>> callable(False)
False
>>> callable(list)
True
Una función se puede llamar, una lista no se puede llamar. Incluso la función integradacallable() se puede llamar.
5.6.1.3. compile()
La función compile() devuelve un código objeto Python. Usted usa la función integrada Python para convertir de la cadena de
caracteres de código al código objeto.
>>>
12
Aquí, exec es el modo. El parámetro anterior que eso es el nombre del archivo para la forma del archivo el cual el código es
leído. Finalmente, es ejecutado usando la función exec().
5.6.1.4. credits()
>>> credits()
5.6.1.5. copyright()
>>> copyright()
5.6.1.6. dir()
>>> dir()
De lo contrario, devuelve una lista alfabética de nombres que comprende (alguno(s) de) los atributos de un objeto dato, y de los
atributos legibles desde este.
>>> dir(__builtins__)
Si el objeto soporta un método llamado __dir__, ese será usado; de lo contrario se usa la lógica dir() predeterminada y devuelve:
>>> import os
>>> type(os)
<type 'module'>
>>> dir(os)
...
...
... ]
This exports:
- all functions from posix, nt, os2, or ce, e.g. unlink, stat, etc.
- os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
...
...
...
para un objeto clase: sus atributos, y recursivamente los atributos de sus clases bases.
... )
...
>>> type(Persona)
<type 'type'>
>>> vars()
'__doc__': None}
>>> dir(Persona)
'__weakref__', 'hablar']
>>> Persona.__dict__
dict_proxy({'__module__': '__main__',
>>> Persona.__doc__
>>> Persona.__init__.__doc__
>>> Persona.hablar.__doc__
para cualquier otro objecto: sus atributos, sus atributos de clases, y recursivamente los atributos de esas clases bases de
las clases.
>>> type(int)
<type 'type'>
>>> dir(int)
'real']
5.6.1.7. eval()
>>> numero = 10
95
5.6.1.8. execfile()
La función execfile() lee y ejecuta un script Python desde un archivo. Los globals y locals son diccionarios, por defecto a los
actuales globals y locals. Si solamente globalses dado, locals es por defecto a la misma.
>>> execfile('./holamundo.py')
Hola Mundo
5.6.1.9. globals()
La función globals() devuelve un diccionario conteniendo ámbito actual global de las variables.
>>> globals()
La función globals() puede ser usada para devolver los nombres en el namespaces global dependiendo en la locación desde
donde ella es llamada.
Si la función globals() es llamada desde una función, eso devolverá todos los nombres que pueden ser accesibles globalmente
desde esa función.
El tipo de dato devuelto por función es un tipo diccionario. Por lo tanto, los nombres pueden ser extraídos usando la función
integrada keys().
5.6.1.10. help()
>>> help()
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/2.7/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
of what it does; to list the modules whose summaries contain a given word
help>
5.6.1.11. id()
La función id() devuelve la identidad de un objecto. Esto garantiza ser el único entre objetos simultáneamente existentes.
(Sugerencia: es la dirección de memoria del objeto).
>>> lista
[0, 1, 2, 3, 4]
>>> id(lista)
139703096777904
5.6.1.12. len()
18
5.6.1.13. license()
>>> license
>>> license()
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
software.
In May 2000, Guido and the Python core development team moved to
the PSF.
5.6.1.14. locals()
La función locals() devuelve un diccionario conteniendo ámbito actual local de las variables.
>>> locals()
La función locals() puede ser usadas para devolver los nombres en el namespaces local dependiendo en la locación desde
donde ella es llamada.
Si la función locals() es llamada desde una función, eso devolverá todos los nombres que pueden ser accesibles localmente
desde esa función.
El tipo de dato devuelto por la función es un tipo diccionario. Por lo tanto, los nombres pueden ser extraídos usando la función
integrada keys().
5.6.1.15. open()
La función open() es definida dentro del modulo integrado io, esta le permite abrir un archivousando el tipo objeto file, devuelve
un objeto del tipo file (ej. archivo), y se llama habitualmente con de dos a tres argumentos:
nombre, es una cadena de caracteres que indica el nombre de archivo (incluso ruta relativa o absoluta).
modo, es una cadena de unos pocos caracteres describiendo la forma en la que se usará el archivo, como se indica a
continuación:
Modo Notas
r el archivo se abre en modo de solo lectura, no se puede escribir (argumento por defecto).
w modo de solo escritura (si existe un archivo con el mismo nombre, se borra).
a modo de agregado (append), los datos escritos se agregan al final del archivo.
b el archivo se abre en modo binario, para almacenar cualquier cosa que no sea texto.
el archivo se abre con soporte a nueva linea universal, cualquier fin de linea ingresada sera como un \n en
U
Python.
buffering, si este argumento es dado, 0 significa sin búfer, 1 significa búfer de línea y los números más grandes especifican
el tamaño del búfer.
>>> type(archivo)
<type 'file'>
El archivo será creado si no existe cuando es abierto para escribir o agregar data. Es archivo sera truncado cuando es abierto
para escritura.
Agregue una ‘U’ a modo para abrir el archivo para la entrada con soporte de nueva línea universal. Cualquier línea que termine
en el archivo de entrada se verá como ‘n’ en Python. Además, un archivo así abierto gana el atributo newlines; el valor para este
atributo es uno de Ninguno (aún no se ha leído una nueva línea), \r, \n, \r\n o una tupla que contiene todos los tipos de nueva
línea que se han visto.
Truco
>>> file.__doc__
5.6.1.16. range()
La función range() devuelve una lista conteniendo una progresión aritmética de enteros.
nge(3,9)
, 6, 7, 8]
range(i, j) devuelve [i, i+1, i+2, ..., j-1]; inicia (!) por defecto en 0.
Cuando el paso es definido como un tercer argumento, ese especifica el incremento (o decremento).
nge(3,9,2)
En el ejemplo anterior, la función range(3,9,2) devuelve [3, 5, 7], es decir, el rango inicia en 3y termina en 9 incrementando
cada 2 números.
range(detener) -> lista de enteros
nge(4)
, 3]
En el ejemplo anterior, la función range(4) devuelve [0, 1, 2, 3]. ¡El punto final es omitido! Hay exactamente los indices validos
para una lista de 4 elementos.
5.6.1.17. reload()
Cuando el modulo es importado dentro de un script, el código en la porción del nivel superior de un modulo es ejecutado
solamente una vez.
Por lo tanto, si usted quiere volver a ejecutar la porción del nivel superior el código de un modulo, usted puede usar la
función reload(). Esta función importa otra vez un modulo previamente importado. La sintaxis de la función reload() es la
siguiente:
>>> reload(module_name)
Aquí, module_name es el nombre del modulo que usted quiere volver a cargar y no la cadena de caracteres contendiente el
nombre del modulo. Por ejemplo, para recargar el modulo clases.py, debe hacer lo siguiente:
>>> reload(clases)
5.6.1.18. xrange()
El tipo xrange es un tipo secuencia inmutable utilizada normalmente en bucles. La ventaja de la función xrange() sobre la
función range(), es que devuelve un objeto xrange el cual ocupa siempre la misma cantidad de memoria, independientemente
del rango el cual represente.
...
...
>>>
Como la función xrange(), devuelve un objeto el cual genera los números en el rango a demanda. Para bucles, esto es un poco
mas rápido que la función range() y más eficiente en la memoria.
xrange(5)
>>> type(xrange(5))
<type 'xrange'>
>>> dir(xrange(5))
'__str__', '__subclasshook__']
La ventaja de la función xrange() es excepto en hardware impedido en cuestión de memoria (por ejemplo, MS-DOS) o cuando
nunca se utilizan todos los elementos del rango (por ejemplo, porque se suele interrumpir la ejecución del bucle con la
sentencia break).
5.6.1.19. type()
La función type() devuelve el tipo del objeto que recibe como argumento.
>>> type(2)
<type 'int'>
>>> type(2.5)
<type 'float'>
>>> type(True)
<type 'bool'>
<type 'str'>
>>> type(int)
<type 'type'>
>>> type(str)
<type 'type'>
>>> type(None)
<type 'NoneType'>
>>> type(object)
<type 'type'>
>>> import os
>>> type(os)
<type 'module'>
>>> type(format)
<type 'builtin_function_or_method'>
Truco
La función type() devuelve el tipo del objeto, en base al modulo integrado types, el cual define los nombres para todos los
símbolos tipo conocidos en el interprete estándar.
>>> help(types)
NAME
types - Define names for all type symbols known in the standard interpreter.
FILE
/usr/lib/python2.7/types.py
MODULE DOCS
https://docs.python.org/library/types
DESCRIPTION
Types that are part of optional modules (e.g. array) are not listed.
CLASSES
__builtin__.basestring(__builtin__.object)
__builtin__.str
__builtin__.unicode
>>>
5.6.1.20. vars()
>>> vars()
La función vars() sin argumentos, equivale a la función locals(). Si se llama con un argumento equivale a la
sentencia object.__dict__.
5.6.2. Funciones de entrada y salida
5.6.2.1. input()
<type 'int'>
23.4
<type 'float'>
23L
<type 'long'>
En el caso que quiera ingresar una cadena de caracteres desde la entrada estándar usando la función input(), debe colocar la
cadena de caracteres entre comillas simples o dobles, como el siguiente ejemplo:
'leonardo'
<type 'str'>
leonardo caballero
'leonardo caballero'
<type 'str'>
5.6.2.2. raw_input()
Lee una cadena de caracteres desde la entrada estándar. La nueva línea final es despojada. Si el usuario indica un EOF
(Unix: Ctl-D, Windows: Ctl-Z+Return), lanza una excepción EOFError. En sistemas Unix, la librería GNU readline es usada si es
habilitada. El prompt de la cadena de caracteres, si es dado, es impreso sin una nueva línea final antes de leer.
'2'
<type 'str'>
'2.3'
<type 'str'>
'23L'
<type 'str'>
'leonardo'
<type 'str'>
'"leonardo"'
<type 'str'>
'leonardo caballero'
<type 'str'>
'"leonardo caballero"'
<type 'str'>
5.6.3. Funciones numéricas
5.6.3.1. abs()
>>> abs(3)
>>> abs(-3)
>>> abs(-2.5)
2.5
5.6.3.2. bin()
Devuelve una representación binaria de un número entero o entero long, es decir, lo convierte de entero a binario.
>>> bin(10)
'0b1010'
5.6.3.3. cmp()
La función cmp() devuelve un valor negativo si x<y, un valor cero si x==y, un valor positivo si x>y:
>>> cmp(1,2)
-1
>>> cmp(2,2)
>>> cmp(2,1)
5.6.3.4. complex()
La función complex() devuelve un número complejo complex. Es un constructor, que crea un entero complex a partir de
un entero, entero long, entero float (cadenas de caracteres formadas por números y hasta un punto), o una cadena de
caracteres que sean coherentes con un número entero.
>>> complex(23)
(23+0j)
>>> complex(23L)
(23+0j)
>>> complex(23.4)
(23.4+0j)
>>> complex("23")
(23+0j)
>>> complex("23.6")
(23.6+0j)
La función complex() sólo procesa correctamente cadenas que contengan exclusivamente números.Si la cadena contiene
cualquier otro carácter, la función devuelve una excepción ValueError.
>>> complex("qwerty")
5.6.3.5. divmod()
Debe recibir dos argumentos numéricos, y devuelve dos valores: resultado de la división entera, y el resto.
>>> divmod(22, 4)
(5, 2)
5.6.3.6. float()
La función float() devuelve un número coma flotante float. Es un constructor, que crea un coma flotante a partir de
un entero, entero long, entero float (cadenas de caracteres formadas por números y hasta un punto) o una cadena de
caracteres que sean coherentes con un número entero.
>>> float(2)
2.0
>>> float(23L)
23.0
>>> float(2.5)
2.5
>>> float("2")
2.0
>>> float("2.5")
2.5
5.6.3.7. hex()
Devuelve una representación hexadecimal de un número entero o entero long, es decir, lo convierte de entero a hexadecimal.
>>> hex(10)
'0xa'
5.6.3.8. int()
La función int() devuelve un número entero. Es un constructor, que crea un entero a partir de un entero float, entero complex o
una cadena de caracteres que sean coherentes con un número entero.
>>> int(2.5)
>>> int("23")
23
La función int() sólo procesa correctamente cadenas que contengan exclusivamente números. Si la cadena contiene cualquier
otro carácter, la función devuelve una excepción ValueError.
>>> int("2.5")
>>>
>>> int("doscientos")
5.6.3.9. long()
La función long() devuelve un número entero long. Es un constructor, que crea un entero long a partir de un entero, entero float o
una cadena de caracteres que sean coherentes con un número entero.
>>> long(23)
23L
>>> long(23.4)
23L
>>> long("23")
23
La función long() sólo procesa correctamente cadenas que contengan exclusivamente números. Si la cadena contiene cualquier
otro carácter, la función devuelve una excepción ValueError.
>>> long("23.4")
>>>
>>> long("23,4")
5.6.3.10. max()
145
<type 'int'>
'a'
<type 'str'>
Si recibe un solo argumento, devuelve el mayor de sus elementos. Debe ser un objeto iterable; puede ser una cadena de
caracteres, o alguno de los otros tipos de secuencia o colección.
'o'
<type 'str'>
5.6.3.11. min()
12
<type 'int'>
''
<type 'str'>
5.6.3.12. pow()
La función pow() si recibe dos (02) argumentos, eleva el primero argumento a la potencia del segundo argumento.
>>> pow(2, 3)
>>> pow(10, 2)
100
>>> pow(2, 3, 3)
5.6.3.13. reduce()
La función reduce() aplica una función de dos argumentos de forma acumulativa a los elementos de un tipo de secuencia, de
izquierda a derecha, para reducir la secuencia a un solo valor. La sintaxis seria la siguiente:
A continuación un ejemplo:
15
>>> ((((1+2)+3)+4)+5)
15
Si el argumento inicial está presente, se coloca antes de los elementos de la secuencia en el cálculo y sirve como valor
predeterminado cuando la secuencia está vacía.
40
En el ejemplo anterior, la función, usada es lambda x, y: x + y, la secuencia es la lista [1,2, 3, 4, 5] y el argumento inicial es 5 * 5
25
En el ejemplo anterior, la función, usada es lambda x, y: x + y, la secuencia es la lista [0,0, 0, 0, 0] y el argumento inicial es 5 * 5
5.6.3.14. round()
La función round() redondea un número flotante a una precisión dada en dígitos decimal (por defecto 0 dígitos). Esto siempre
devuelve un número flotante. La precisión tal vez sea negativa.
>>> round(5.5)
6.0
>>> round(5.4)
5.0
5.6.3.15. sum()
La función sum() devuelve una lista ordenada de los elementos de la secuencia que recibe como argumento (lista o cadena). La
secuencia original no es modificada.
>>> lista = [1, 2, 3, 4]
>>> sum(lista)
10
5.6.3.16. oct()
La función oct() convierte un número entero en una cadena en base octal, antecedida del prefijo ‘0’.
>>> oct(8)
'010'
>>> oct(123)
'0173'
5.6.4.1. bool()
La función bool(), es un constructor, el cual crea un tipo de datos booleanos, devuelve un tipo booleano True cuando el
argumento dado es True, de lo contrario False.
>>> bool()
False
>>> bool(True)
True
>>> bool(0)
False
>>> bool(1)
True
Convertir desde un tipo entero float de forma recursiva usando la función int() a tipo booleano:
>>> bool(int(0.1))
False
>>> bool(int(1.0))
True
Convertir desde un tipo cadena de caracteres de forma recursiva usando la función str() y la función int() a tipo booleano:
>>> bool(int(str('0')))
False
>>> bool(int(str('1')))
True
5.6.5. Funciones de cadenas de caracteres
5.6.5.1. capitalize()
La función capitalize() devuelve una cadenas de caracteres con MAYÚSCULA la primera palabra.
'Leonardo caballero'
5.6.5.2. chr()
La función chr() recibe como argumento un entero, y devuelve una cadena con el carácter cuyo código Unicode corresponde a
ese valor. El rango válido para el argumento es de 0 a 256.
>>> chr(64)
'@'
>>> chr(36)
'$'
>>> chr(94)
'^'
>>> chr(126)
'~'
5.6.5.3. endswith()
La función endswith() devuelve un valor booleano True o False si coincide que la cadena termine con el criterio enviado por
parámetros en la función.
False
True
5.6.5.4. expandtabs()
La función expandtabs() devuelve una copia de la cadena de caracteres donde todos los caracteres tab (tabulación) son
remplazados por uno o más espacios, depende en la actual columna y el tamaño del tab dado.
5.6.5.5. find()
La función find() devuelve un valor numérico 0 si encuentra el criterio de búsqueda o -1 si no coincide el criterio de búsqueda
enviado por parámetros en la función.
-1
5.6.5.6. format()
La función integrada format() devuelve una representación formateada de un valor dato controlado por el especificador de
formato.
La función integrada format() es similar al método format() disponible en el tipo de cadena de caracteres. Internamente, ambos
llaman al método __format__() de un objecto.
Mientras, la función integrada format() es una implementación de bajo nivel para formatear un objeto
usando __format__() internamente, el método format() del tipo de cadena de caracteres es una implementación de alto nivel
disponible para ejecutar operaciones de formateo complejas en múltiples objeto de cadena de caracteres.
format(value[, format_spec])
123
123.456789
1010
A continuación, un ejemplo de un valor número entero con formato especifico, seria de la siguiente forma:
*+1,234
En el ejemplo anterior cuando se formatea el número entero 1234, usted especifico el especificador de formato *<+7,d.
Seguidamente, se describe cada opción a continuación:
* Es la opción del carácter de relleno, el cual rellena los espacio vacío después del formato.
> Es la opción de alineación a la derecha, el cual alinea la cadena de caracteres de salida a la derecha.
+ Es la opción de signo, el cual obliga al número a ser firmado (con un signo a su izquierda).
7 Es la opción ancho, el cual obliga el número que tome un mínimo de ancho de 7, otros espacios serán rellenado por el
carácter de relleno.
, Ese es el operador miles, el cual coloca un carácter coma entre todos los números miles.
d Es la opción tipo que especifica que el número es un número entero.
A continuación, un ejemplo de un valor número float con formato especifico, seria de la siguiente forma:
0123.4570
En el ejemplo anterior cuando se formatea el número float 123.4567, usted especifico el especificador de formato ^-09.3f.
Seguidamente, se describe cada opción a continuación:
^ Es la opción de alineación centrar, el cual alinea la cadena de caracteres de salida al centro del espacio restante.
- Es la opción de signo el cual obliga solo a los números negativos a mostrar el signo.
0 Ese es el carácter, el cual es colocado en lugar de los espacios vacíos.
9 Es la opción de ancho, el cual establece el ancho mínimo del número en 9 (incluido el punto decimal, la coma y el signo
de miles).
.3 Ese es el operador de precisión que define la precisión del número flotante dado a 3 lugares.
f Es la opción tipo que especifica que el número es un número float.
A continuación, un ejemplo de usar la función format() sobre escribiendo el método especial __format__() de una clase, seria de
la siguiente forma:
...
23
En el ejemplo anterior cuando se sobre escribe el método especial __format__() de la clase Persona. Ese ahora acepta el
argumento del método llamado edad el cual devuelve 23.
El método format() internamente ejecuta Persona().__format__("edad"), el cual devuelve el mensaje 23. Si no hay formato
especificado, el mensaje devuelto es Formato nulo.
5.6.5.7. index()
La función index() es como la función find() pero arroja una excepción ValueError cuando la sub-cadena no es encontrada.
8
5.6.5.8. intern()
La función intern() introduce la cadena en la tabla de cadenas internadas (si no está ya allí). Esto ingresa la cadena en la tabla
(global) de cadenas internas cuyo propósito es acelerar las búsquedas en el tipo diccionario.
Al utilizar la función intern(), se asegura de que nunca cree dos objetos de cadena de caracteres que tengan el mismo valor:
cuando solicita la creación de un segundo objeto de cadena de caracteres con el mismo valor que un objeto de cadena existente,
recibe una referencia al objeto de cadena preexistente. De esta manera, estás ahorrando memoria. Además, la comparación de
objetos de cadena de caracteres ahora es muy eficiente porque se lleva a cabo comparando las direcciones de memoria de los
dos objetos de cadena de caracteres en lugar de su contenido.
Esencialmente, la función intern() busca (o almacena si no está presente) la cadena de caracteres en una colección de cadenas
de caracteres internadas, por lo que todas las instancias internadas compartirán la misma identidad. Cambia el costo único de
buscar esta cadena de caracteres para realizar comparaciones más rápidas (la comparación puede devolver True después de
solo verificar la identidad, en lugar de tener que comparar cada carácter), y reducir el uso de la memoria.
Sin embargo, Python internará automáticamente cadenas de caracteres que sean pequeñas o que parezcan identificadores, por
lo que es posible que no obtengas ninguna mejora porque tus cadenas de caracteres ya están internadas entre bastidores.
True
True
False
>>>
False
True
5.6.5.9. isalnum()
La función isalnum() devuelve un valor booleano True o False si coincide que la cadena contenga caracteres alfanuméricos.
>>> '23456987'.isalnum()
True
>>> 'V-23456987'.isalnum()
False
5.6.5.10. isalpha()
La función isalpha() devuelve un valor booleano True o False si coincide que la cadena contenga caracteres alfabéticos.
>>> 'leonardo'.isalpha()
True
False
5.6.5.11. isdigit()
La función isdigit() devuelve un valor booleano True o False si coincide que la cadena contenga caracteres dígitos.
False
>>> '23456987'.isdigit()
True
5.6.5.12. islower()
La función islower() devuelve un valor booleano True o False si coincide que la cadena contenga caracteres en MINÚSCULAS.
True
False
5.6.5.13. istitle()
La función istitle() devuelve un valor booleano True o False si coincide que la cadena de caracteres sean capitales en cada
palabra.
'Leonardo Caballero'
False
5.6.5.14. isspace()
La función isspace() devuelve un valor booleano True o False si no es vacía, y todos sus caracteres son espacios en blanco.
True
True
False
>>> " A ".isspace()
False
5.6.5.15. isupper()
La función isupper() devuelve un valor booleano True o False si coincide que la cadena de caracteres estén en MAYÚSCULAS
en cada palabra.
True
False
5.6.5.16. lstrip()
La función lstrip() devuelve una copia de la cadena de caracteres con el espacio en blanco inicial eliminado. Si se dan la cadena
de caracteres y no es None, elimina los caracteres en la cadena de caracteres en su lugar. Si la cadena de caracteres
son unicode, serán convertidas a unicode antes de eliminar.
5.6.5.17. lower()
La función lower() devuelve una cadenas de caracteres con MINÚSCULAS en cada palabra.
'leonardo caballero'
5.6.5.18. ord()
La función ord() es el inverso de chr() dada una cadena representando un carácter Unicode, devuelve el entero del código
correspondiente.
>>> ord('@')
64
>>> ord('$')
36
>>> ord('^')
94
>>> ord('~')
126
5.6.5.19. replace()
La función replace() si encuentra el criterio de la búsqueda de la sub-cadena o la remplaza con la nueva sub-cadena enviado por
parámetros en la función.
'leonardo Caballero'
5.6.5.20. split()
La función split() devuelve una lista con la cadena de caracteres separada por cada indice de la lista.
['leonardo', 'caballero']
5.6.5.21. splitlines()
La función splitlines() devuelve una lista con la cadena de caracteres separada por cada salto de linea en cada indice de la lista.
5.6.5.22. startswith()
La función startswith() devuelve un valor booleano True o False si coincide que la cadena inicie con el criterio enviado por
parámetros en la función.
False
True
5.6.5.23. str()
La función str() es el constructor del tipo de cadenas de caracteres, se usa crear una carácter o cadenas de caracteres mediante
la misma función str().
>>> str(2)
'2'
>>> str(2.5)
'2.5'
>>> str(-2.5)
'-2.5'
>>> str(2.3+0j)
'(2.3+0j)'
>>> str(True)
'True'
>>> str(False)
'False'
5.6.5.24. swapcase()
La función swapcase() devuelve una cadenas de caracteres convertida al opuesto sea MAYÚSCULAS o MINÚSCULAS.
'LEONARDO CABALLERO'
'leonardo caballero'
5.6.5.25. title()
La función title() devuelve una cadenas de caracteres con capitales en cada palabra.
'Leonardo Caballero'
5.6.5.26. unichr()
La función unichr() devuelve una cadena de caracteres Unicode de un carácter con un numero entero.
>>> unichr(64)
u'@'
>>> unichr(36)
u'$'
>>> unichr(94)
u'^'
>>> unichr(126)
u'~'
5.6.5.27. upper()
La función upper() devuelve una cadenas de caracteres con MAYÚSCULAS en cada palabra.
'LEONARDO CABALLERO'
5.6.6.1. all()
La función all() toma un contenedor como un argumento. Esta devuelve las funciones integradas True si todo los valores en el
objeto iterable python tienen un valor de tipo booleanoigual a True. Un valor vacío tiene un tipo booleano igual a False.
True
>>> all({'*','',''})
False
5.6.6.2. any()
La función any() ese toma un argumento y devuelve True incluso si, un valor en el objeto iterable tiene un valor de
tipo booleano igual a True.
>>> any((1,0,0))
True
>>> any((0,0,0))
False
>>> any(range(5))
True
>>> any(range(0))
False
5.6.6.3. coerce()
La función coerce() devuelve una tupla que consta de los dos argumentos numéricos convertidos en un tipo común, utilizando las
mismas reglas que las operaciones aritméticas. Si la coerción no es posible, levante una excepción TypeError.
>>> coerce(3, 4)
(3, 4)
(3.0, 4.2)
5.6.6.4. dict()
La función dict() es el constructor del tipo de diccionario, esta función se usa crear un diccionario:
También puede crear un diccionario indicando a las claves usando comillas simples:
Convertir desde un grupo de dos listas de forma recursiva usando la función zip() a tipo diccionario:
La función frozenset() es el constructor del tipo de conjuntos, se usa crear un conjunto inmutable mediante la misma
función frozenset() de un objeto iterable lista:
5.6.6.6. iter()
La función iter() obtiene un iterador de un objeto. En la primera forma, el argumento debe proporcionar su propio iterador, o ser
una secuencia.
>>> elemento
>>> elemento.next()
'P'
>>> elemento.next()
'l'
>>> elemento.next()
'o'
>>> elemento.next()
'n'
>>> elemento.next()
'e'
>>> elemento.next()
StopIteration
En el ejemplo anterior, cuando se itera en la secuencia de tipo cadena de caracteres, al llegar al final mediante el iterador
llamado elemento se llama a la excepción StopIteration y se causa el detener la iteración.
5.6.6.7. list()
La función list() es el constructor del tipo de lista, se usa crear una lista mediante la misma función list() de un iterable. Por
ejemplo, una lista podría crearse mediante la función range(10):
5.6.6.8. next()
>>> next(elemento)
>>> next(elemento)
>>> next(elemento)
>>> next(elemento)
>>> next(elemento)
>>> next(elemento)
StopIteration
En el ejemplo anterior, cuando se itera en la secuencia de tipo lista, al llegar al final mediante el iterador llamado elemento se
llama a la excepción StopIteration y se causa el detener la iteración.
5.6.6.9. tuple()
La función tuple() es el constructor del tipo de tuplas, se usa crear una tupla mediante la misma función tuple() de un iterable. Por
ejemplo, una tupla podría crearse mediante la función range(10):
(4, 5, 6, 7, 8)
5.6.6.10. set()
La función set() es el constructor del tipo de conjuntos, se usa crear un conjunto mutablemediante la misma función set() de un
objeto iterable lista:
La función sorted() devuelve una lista ordenada de los elementos del tipo secuencia que recibe como argumento (lista o cadena
de caracteres). La secuencia original no es modificada.
>>> sorted(lista)
La función sorted() siempre devuelve una lista, aunque reciba como argumento una cadena de caracteres.
>>> sorted(cadena)
5.6.6.12. zip()
La función zip() devuelve una lista de tuplas, donde cada tupla contiene el elemento i-th desde cada una de los tipos de
secuencias de argumento. La lista devuelta es truncada en longitud a la longitud de la secuencia de argumentos más corta.
5.6.7.1. delattr()
La función delattr() elimina un atributo con nombre en un objeto; delattr(x, 'y') es equivalente a del x.y.
...
>>> macagua.sexo
'M'
>>> delattr(Persona,'sexo')
>>> macagua.sexo
5.6.7.2. getattr()
La función getattr() obtiene un atributo nombrado desde un objeto; de la siguiente forma getattr(instancia, 'atributo') el cual es
equivalente a instancia.atributo. Cuando un argumento predeterminado es dato, es es devuelto cuando el atributo no existe; sin
eso, una excepción es lanzada en ese caso.
...
>>> getattr(macagua,'sexo')
'M'
>>> macagua.sexo
'M'
5.6.7.3. hasattr()
La función hasattr() devuelve un tipo booleano cuando el objeto tiene un atributo con el nombre dado. (Esta hecho llamando a la
función getattr(instancia, atributo) y capturar excepciones.)
...
True
True
True
True
>>> hasattr(macagua, 'email')
False
5.6.7.4. hash()
...
>>> type(macagua)
<type 'classobj'>
>>> type(Persona)
<type 'classobj'>
>>> type(macagua)
<type 'classobj'>
>>> hash(macagua)
8742669316448
>>> hash(Persona)
8742669316448
5.6.7.5. isinstance()
isinstance(objeto, tipo)
Esta función devuelve True si el objeto especificado es del tipo especificado, de lo contrario False.
Si el tipo de parámetro es una tupla, esta función devuelve True si le objeto es uno de los tipos en la tupla.
True
Las clases dan la posibilidad de crear estructuras de datos más complejas. En el ejemplo, una clase Persona que realizará un
seguimiento del cedula, nombre, apellido y sexo (que pasará como atributos).
5.6.7.6. issubclass()
issubclass(subclase, clase)
Esta función devuelve True si la clase especificada es una subclase de la clase base, de lo contrario False.
Un ejemplo de uso con la subclase Supervisor que deriva de la clase Persona seria como lo siguiente:
True
Si el tipo de parámetro es una tupla, esta función devuelve True si le objeto es uno de los tipos en la tupla.
True
Aquí puede decir que sV1 es una subclase derivada de la clase Persona.
Las clases dan la posibilidad de crear estructuras de datos más complejas. En el ejemplo, una clase Persona que realizará un
seguimiento del cedula, nombre, apellido y sexo (que pasará como atributos).
5.6.7.7. setattr()
La función setattr() establecer un atributo con nombre en un objeto; setattr(x, 'y',v) es equivalente a x.y = v.
...
>>> getattr(macagua,'email')
'leonardoc@plone.org'
Importante
La lista de todas las funciones disponibles en el lenguaje Python con la descripción correspondiente se puede encontrar en la
siguiente dirección URL:
https://docs.python.org/2/library/functions.html