Modismos y antimodismos en Python

Modismos y Anti-Modismos en Python


Por Moshe Zadka
Traducción al castellano de "Idioms and Anti-Idioms in Python"

por Raúl González Duque el día 9 de Abril de 2008


Resumen
Este documento puede considerarse un compañero del tutorial de Python. Muestra cómo utilizar Python, y, casi incluso más importante, cómo no usar Python.


Construcciones del lenguaje que no deberías usar

Aunque Python tiene relativamente pocas trampas o gotchas comparado con otros lenguajes, sigue teniendo algunas construcciones que sólo son de utilidad en situaciones muy específicas, o que son sencillamente peligrosas.

Algoritmos de búsqueda

Un algoritmo de búsqueda sirve para localizar un elemento concreto dentro de una estructura de datos. Consiste en averiguar si el elemento en cuestión pertenece o no a dicho conjunto, además de su localización dentro de éste.

Este problema puede reducirse a devolver la existencia de un número en un vector.
Básicamente existen 2 algoritmos para resolver el problema.

Crear y leer de base de datos BERKELEY.

#!/usr/bin/env python
'''Creamos una base de datos de pruebas y la usamos para una consulta simple.'''
__shell_usage__ = ''' Este es un programa de ejemplo. Solo le debes de pasar como argumento
el nombre del fichero de la base de datos que quieres crear.'''
__version__ = 'Ejemplo de uso del modulo bsddb (Base de datos de Berkeley)'
__author__='Arturo Suelves (arturosa@lycos.es)'
import bsddb #Modulo de base de datos berkeley
import sys,os
def crear_base_datos(fichero):
    db = bsddb.btopen(fichero, 'c')
    for i in range(1000):
        db[str(i)]='Elemento_'+str(i)
    print 'Imprimimos el primer elemento de la base: ',db.first()
    print 'Imprimimos el siguiente elemento de la base: ',db.next()
    db.sync() #Importante: Para sincronizar la base en el disco,osea para grabarla
    db.close
    
def leer_de_la_base_datos(fichero):
    db = bsddb.btopen(fichero, 'r')
    elemento=raw_input('Numero del elemento a buscar: ')
    print db.set_location(elemento)
    db.close
    
if __name__ == '__main__':
    if sys.argv[1] == '--help':
        print __shell_usage__
    else:
        fichero_base_datos=sys.argv[1]
        crear_base_datos(fichero_base_datos)
        leer_de_la_base_datos(fichero_base_datos)
        print 'Programa finalizado.\n'
    sys.exit()