Ir al contenido principal

Descubriendo Python

Para empezar a familiziarnos con este lenguaje empezamos por el muy común Hola Mundo
Python ocupa el 3 en el ranking de lenguajes mas usados actualmente https://www.tiobe.com/tiobe-index/

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en la legibilidad de su codigo. Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.

Guido van Rossum es un programador holandés graduado en Matemáticas y Ciencias de la Computación por la Universidad de Amsterdam en 1.982.


Es famoso por haber creado el lenguaje de programación Python. En el ambiente de los desarrolladores del lenguaje Python también se le conoce por el título BDFL (“Benevolent Dictator for Life’“), teniendo asignada la tarea de fijar las directrices sobre la evolución de Python, así como la de tomar decisiones finales sobre el lenguaje que todos los desarrolladores acatan. Van Rossum tiene fama de ser bastante conservador, realizando pocos cambios al lenguaje entre versiones sucesivas, intentando mantener siempre la compatibilidad con versiones anteriores.

-Guias de estilo Basica para python https://www.python.org/dev/peps/

Formateo del código
Indentación
Usa 4 espacios por cada nivel de indentación.

Para código realmente antiguo que no quieras estropear, puedes continuar usando tabuladores de 8 espacios.

¿Tabuladores o espacios?
Nunca mezcles tabuladores y espacios.

La forma más popular de indentar en Python es utilizar sólo espacios. La segunda forma más popular es usar sólo tabuladores. El código indentado con una mezcla de tabuladores y espacios debería reformatearse y usar espacios exclusivamente. Cuando se invoca el intérprete de línea de comandos de Python con la opción -t, este muestra avisos sobre código que mezcla tabuladores y espacios. Cuando se utiliza -tt estos avisos se convierten en errores. ¡Estas opciones son altamente recomendables!

Para nuevos proyectos, se recomienda firmemente el uso de espacios en lugar de tabuladores. La mayoría de los editores tienen características que hacen esto bastante sencillo.

Tamaño máximo de línea
Limita todas las líneas a un máximo de 79 caracteres.

Todavía existen muchos dispositivos por ahí que están limitados a 80 caracteres por línea; además limitando el ancho de las ventanas a 80 caracteres posibilitas el tener varias ventanas una al lado de otra. El ajuste de línea por defecto en este tipo de dispositivos no da buenos resultados. Por lo tanto, por favor limita todas las líneas a un máximo de 79 caracteres. Para cadenas de texto largas (cadenas de documentación o comentarios), es aconsejable limitar el ancho a 72 caracteres.

La forma preferida de dividir líneas largas es utilizar la característica de Python de continuar las líneas de forma implícita dentro de paréntesis, corchetes y llaves. Si es necesario, puedes añadir un par de paréntesis extra alrededor de una expresión, pero algunas veces queda mejor usar una barra invertida. Asegurate de indentar la línea siguiente de forma apropiada. Algunos ejemplos:

class Rectangle(Blob):

    def __init__(self, width, height,
                 color='black', emphasis=None, highlight=0):
        if width == 0 and height == 0 and \
           color == 'red' and emphasis == 'strong' or \
           highlight > 100:
            raise ValueError("sorry, you lose")
        if width == 0 and height == 0 and (color == 'red' or
                                           emphasis is None):
            raise ValueError("I don't think so")
        Blob.__init__(self, width, height,
                      color, emphasis, highlight)
Líneas en blanco
Separa las funciones no anidadas y las definiciones de clases con dos líneas en blanco.

Las definiciones de métodos dentro de una misma clase se separan con una línea en blanco.

Se pueden usar líneas en blanco extra (de forma reservada) para separar grupos de funciones relacionadas. Las líneas en blanco se pueden omitir entre un grupo de funciones con una sola línea (por ejemplo, con un conjunto de funciones sin implementación).

Usa líneas en blanco en las funciones, de forma limitada, para indicar secciones lógicas.

Python acepta el caracter control-L (o lo que es lo mismo ^L) como un espacio en blanco; muchas herramientas utilizan este caracter como separador de páginas, por lo que puedes usarlos para separar páginas de secciones relacionadas en tu archivo.



Espacios en blanco en expresiones y sentencias
Evita espacios en blanco extra en las siguientes situaciones:

Inmediatamente después de entrar en un paréntesis o antes de salir de un paréntesis, corchete o llave.

Sí:
    spam(ham[1], {eggs: 2})
No:
    spam( ham[ 1 ], { eggs: 2 } )
Inmediatamente antes de una coma, punto y coma, o dos puntos:

Sí:
    if x == 4: print x, y; x, y = y, x
No:
    if x == 4 : print x , y ; x , y = y , x
Inmediatamente antes de abrir un paréntesis para una lista de argumentos de una llamada a una función:

Sí:
    spam(1)
No:
    spam (1)
Inmediatamente antes de abrir un paréntesis usado como índice o para particionar (slicing):

Sí:
    dict['key'] = list[index]
No:
    dict ['key'] = list [index]
Más de un espacio alrededor de un operador de asignación (u otro operador) para alinearlo con otro.

Sí:
    x = 1
    y = 2
    long_variable = 3
No:
    x             = 1
    y             = 2
    long_variable = 3
Otras Recomendaciones
Rodea siempre los siguientes operadores binarios con un espacio en cada lado: asignación (=), asignación aumentada (+=, -= etc.), comparación (==, <, >, !=, <>, <=, >=, in, not in, is, is not), booleanos (and, or, not).

Usa espacios alrededor de los operadores aritméticos:

Sí:
    i = i + 1
    submitted += 1
    x = x * 2 - 1
    hypot2 = x * x + y * y
    c = (a + b) * (a - b)
No:
    i=i+1
    submitted +=1
    x = x*2 - 1
    hypot2 = x*x + y*y
    c = (a+b) * (a-b)
No uses espacios alrededor del signo '=' cuando se use para indicar el nombre de un argumento o el valor de un parámetro por defecto.

Sí:
    def complex(real, imag=0.0):
        return magic(r=real, i=imag)
No:
    def complex(real, imag = 0.0):
        return magic(r = real, i = imag)
Generalmente se desaconsejan las sentencias compuestas (varias sentencias en la misma línea).

Sí:
    if foo == 'blah':
        do_blah_thing()
    do_one()
    do_two()
    do_three()
Preferiblemente no:
    if foo == 'blah': do_blah_thing()
    do_one(); do_two(); do_three()
Aunque a veces es adecuado colocar un if/for/while con un cuerpo pequeño en la misma línea, nunca lo hagas para sentencias multi-clausula.

Preferiblemente no:
    if foo == 'blah': do_blah_thing()
    for x in lst: total += x
    while t < 10: t = delay()
Definitivamente no:
    if foo == 'blah': do_blah_thing()
    else: do_non_blah_thing()

    try: something()
    finally: cleanup()

    do_one(); do_two(); do_three(long, argument,
                                list, like, this)

    if foo == 'blah': one(); two(); three()

Comentarios

Entradas populares de este blog

Dominio en server

-Directorio un Directorio es un repositorio único para la información relativa a los usuarios y recursos de una organización.  Active Directory es un tipo de directorio y contiene información sobre las propiedades y la ubicación de los diferentes tipos de recursos dentro de la red. Usándolo, tanto los usuarios como los administradores pueden encontrarlos con facilidad. Una de las ventajas que ofrece Active Directory es que puede utilizar LDAP (Lightweight Directory Access Protocol, en español, Protocolo Ligero de Acceso a Directorios), un protocolo de acceso estándar que permitirá la consulta de información contenida en el directorio. También puede utilizar ADSI (Active Directory Services Interface, en español, Interfaces de Servicio de Active Directory), un conjunto de herramientas ofrecidas por Microsoft, que tienen una interfaz orientada a objetos y que permiten el acceso a características de Active Directory Domain Services que no están soportadas por LDAP. - Dominio

Estructura fisica y logica de un disco duro

¿La estructura física de un disco duro magnético es la misma que la de un disco duro SSD? En un HDD podemos hacer los borrados y desfragmentaciones que queramos por que no es un borrado en celdas como en un SSD. Para entender el funcionamiento de los discos SSD es importante conocer un par de limitaciones de las memorias NAND. En primer lugar que este tipo de memorias no pueden sobreescribir datos, los datos antiguos tienen que ser eliminados antes de que se puedan escribir en la misma localización los nuevos. En segundo lugar este proceso de vaciado de datos no se puede hacer un número infinito de veces, los discos SSD tienen un número limitado de vaciados en cada localización después de los cuales se deja de considerar fiable. Esto nos lleva a que la velocidad de escritura de los discos SSD varía con el tiempo, pierden velocidad de escritura según se va llenando el disco. Cuando el disco está vacío las operaciones de vaciado para luego escribir los datos no se dan y cuanto más l

MySQL vs MariaDB

VS ¿QUÉ ES MARIADB? Pues básicamente, y dicho sin rodeos, se trata de un reemplazo de MySQL que no solo agrega un mayor rendimiento, sino también nuevas funcionalidades. Es de hecho de un fork de MySQL, es decir, fue creado a partir de él Ante el temor de que ORACLE pueda comenzar a distribuir MySQL bajo una licencia de pago, y también ante el posible deterioro de la herramienta ahora que no estaba en manos de la comunidad, fue que dio inicio la creación de MariaDB. En pocas palabras, MariaDB nace con el propósito de que quienes utilizan MySQL puedan seguir disfrutando de un software distribuido libremente y de calidad. Por supuesto que sí, que no quepan dudas. Las ventajas mencionadas ya hablan por sí solas. Las mejoras de rendimiento que presenta frente a MySQL hacen que la migración esté más que justificada. Y como si eso fuera poco, recordemos que se trata de un proyecto distribuido bajo licencia GPL. ¿A quién no le gusta el software gratuito y de código abierto?