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. - Dom...

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...

SISTEMAS OPERATIVOS EN RED

SISTEMAS OPERATIVOS EN RED -Arquitectura cliente/servidor Procesa la información de un modo distribuido.De esta forma, los usuarios finales pueden estar dispersos en un área geográfica mas o menos extensa (un edificio,una localidad,un país,...) y acceder a un conjunto común de recursos compartidos. Caracteristicas: Además, el acceso debe ser transparente (el cliente puede desconocer la ubicación física del recurso que pretende utilizar) y, preferiblemente, multiplataforma, es decir, independiente del sistema operativo, del software de aplicación e incluso del hardware. - protocolos asimétricos , donde el servidor se limita a escuchar, en espera de que un cliente inicie una solicitud. -El servidor ofrecera recursos . -El servidor ofrecerá también una serie de servicios, que serán usados por los clientes. Estos servicios estarán encapsulados, para ocultar a los clientes los detalles de su implementación (por ejemplo, aceptar el requerimiento de un cliente sobre una...