Estructura del lenguaje Python

En un programa el analizador es el encargado de leer el código Python. La entrada del analizador es un flujo de tokens generados por el analizador léxico. Esta sección describe cómo dividir archivos Python en etiquetas con el analizador de vocabulario

Estructura de Python en línea

El código Python se divide en dos tipos de líneas, líneas lógicas y líneas físicas.

Líneas lógicas y físicas

  • La línea lógica termina con el signo NEWLINE, y las declaraciones sólo pueden cruzar la línea lógica si su sintaxis lo permite. Una línea lógica consta de una o más líneas físicas, según las reglas de fusión de líneas implícitas y explícitas (ver más abajo).
  • Una línea física es una cadena de caracteres que termina en una secuencia de final de línea. Las secuencias de terminación de línea estándar de cualquiera de las plataformas populares se pueden usar dentro de los archivos de código fuente de Python. Puede utilizar una secuencia de LF salto de línea Unix en codificación ASCII, una secuencia de Windows que sea salto de línea y retorno de carro CR LF en codificación ASCII, o una secuencia de Macintosh se puede utilizar como retorno de carro CR.

Fusión explícita de líneas

Se pueden combinar dos o más líneas físicas en líneas lógicas usando el carácter de barra invertida ( \), de la siguiente manera: Si la línea física termina con una barra invertida que no es parte de la cadena de texto o del comentario, se combina con la siguiente línea para formar una línea lógica, y la barra invertida y el carácter final de la línea se eliminan.

Ejemplo: 

if 1900 < year < 2100 and 1 <= month <= 12 \
   and 1 <= day <= 31 and 0 <= hour < 24 \
   and 0 <= minute < 60 and 0 <= second < 60:
        return 1

La línea que termina en la barra invertida no puede contener un comentario, y la barra invertida no funciona con comentarios, lo que significa que los comentarios no pueden extenderse más de una línea y la barra invertida no se puede usar en ningún otro caso que no sea el anterior.

Fusión implícita de líneas

Las expresiones entre paréntesis, cuadrados o llaves se pueden dividir en más de una línea física sin necesidad de utilizar la barra invertida. Por ejemplo:

month_names = ['Januari', 'Februari', 'Maart',      # Estos son 
               'April',   'Mei',      'Juni',       # Nombres de los meses 
               'Juli',    'Augustus', 'September',  # Año gregoriano 
               'Oktober', 'November', 'December']   # en alemán

Las líneas fusionadas implícitamente pueden contener comentarios, el desplazamiento de las líneas divididas no tiene que ser igual entre ellas, se pueden agregar líneas en blanco entre las líneas divididas, las líneas fusionadas implícitamente se pueden usar en cadenas de texto entre comillas triples, en cuyo caso estas líneas no pueden incluir comentarios.

Estructura de sangría del lenguaje python

Los espacios en blanco (espacios o tabulaciones) al principio de una línea lógica se utilizan para calcular el nivel de sangría de esa línea, que a su vez se utiliza para determinar qué conjunto de declaraciones pertenecen a un solo bloque.

Reemplace las etiquetas de la tabla (de izquierda a derecha) con uno a ocho espacios en blanco para que el número de caracteres sea un múltiplo de 8 (esta regla es similar a la de Unix). La suma de los espacios en blanco que preceden al primer carácter no en blanco determina el desplazamiento de línea. 

El desplazamiento no se puede dividir entre varias líneas físicas mediante la barra invertida, y los espacios en blanco antes de la primera barra inclinada determinan la cantidad de desplazamiento. El idioma no permite la combinación de tabulaciones y espacios, y cuando ocurre tal situación, el idioma lanza una excepción TabError.

Python se basa en la sangría para agrupar declaraciones, y se pueden usar espacios en blanco o tabulaciones para sangrar líneas. Todas las declaraciones en un bloque de código deben tener la misma sangría o, de lo contrario, podría generar la excepción IndentationError cuando se ejecuta el código:

>>> x = 4
>>>  print(x)
  File "<stdin>", line 1
    print(x)
    ^
IndentationError: unexpected indent
>>> if (x < 3):
... print("Less than 3")
  File "<stdin>", line 2
    print("Less than 3")
        ^
IndentationError: expected an indented block

Según PEP8 la guía de formato de Python, se recomienda utilizar 4 espacios de 4 para la sangría y evitar el uso de pestañas. Vale la pena señalar que la mayoría de los editores de texto actuales admiten la sangría automática, lo que facilita mucho la escritura de código Python. El siguiente ejemplo incluye código Python con compensaciones enteras:

def perm(l):
        # l Calcular todas las combinaciones de
    if len(l) <= 1:
                  return [l]
    r = []
    for i in range(len(l)):
             s = l[:i] + l[i+1:]
             p = perm(s)
             for x in p:
              r.append(l[i:i+1] + x)
    return r

El siguiente ejemplo contiene varios errores de compensación:

  def perm(l): # Error: desplazamiento de la primera línea 
  for i in range(len(l)):  # Error: sin desplazamiento
    s = l[:i] + l[i+1:]
        p = perm(l[:i] + l[i+1:])# Error: compensación inesperada </em>
        for x in p:
                r.append(l[i:i+1] + x)
            return r                # Error: desplazamiento inconsistente</em>

Comentarios

Como cualquier otro lenguaje de programación, Python admite el uso de comentarios, y los comentarios en Python son todo lo que viene después de la etiqueta ('#'). Los comentarios son útiles para agregar notas y aclaraciones al código.

>>> # Número de lunares en el modelo
... no_of_moles = 1.2

Los comentarios se pueden escribir en una línea separada, como se muestra en el ejemplo anterior, y se pueden agregar al final de la línea de la siguiente manera:

percentage = (minute * 100) / 60      #% de la hora</em>

Línea shebang

Estas líneas se utilizan en sistemas Unix y BSD para hacer que el código Python sea directamente ejecutable como el código de shell, agregando una línea como:

#!/usr/bin/env python3.5

(Suponiendo que el intérprete de Python está en la variable de sistema PATH del usuario) al principio del archivo de código que también debería ser ejecutable. Deben ser símbolos los ‎#!primeros dos caracteres en el archivo y , en algunas plataformas, debe ser el final de la línea en el patrón de Unix (‘ ‎\n‘) y el patrón no es Windows ( '\r\n'). El archivo de código se puede hacer ejecutable usando el comando chmoden el shell:

$ chmod +x myscript.py

El concepto de modo ejecutable no existe en los sistemas Windows, ya que el instalador de Python ‎.py asocia automáticamente archivos con python.exe. Entonces, al hacer doble clic en los archivos de Python, se ejecutará el código directamente. El sufijo se puede utilizar para ‎.pyw evitar que aparezca la ventana de la línea de comandos al ejecutar el código.

Nota: Para Python, Programa, Script y Software significan una cosa.

Declarar codificación

Si el comentario en la primera o segunda línea del código Python coincide con una expresión regular  coding[=:]\s*([-\w.]+), entonces esta línea representa la declaración de la codificación de ese archivo, y el primer grupo dentro de esa expresión es el nombre de la codificación que se utilizará.

La declaración de marcado debe estar en una sola línea, y si esta declaración de declaración está en la segunda línea, la primera línea debe ser solo un comentario. Se recomienda utilizar la siguiente sintaxis para expresar la notación:

# -*- coding: <encoding-name> -*-

Lo cual es reconocido por el editor de código GNU Emacs . También se recomienda utilizar el siguiente formato al utilizar el editor de texto VIM :

# vim:fileencoding=<encoding-name>

Si no se declara ninguna codificación dentro del archivo de código, se aprobará la codificación predeterminada UTF-8

Identificadores y palabras clave

Los identificadores (también conocidos como nombres) deben comenzar con un alfabeto (mayúsculas o minúsculas) o un guión bajo ('_'), el resto del nombre puede consistir en alfabetos (mayúsculas o minúsculas), números (0-9)o guiones bajos ('_'), no deben contener comas y no deben La variable nombre es una de las palabras reservadas en Python.

Los ID en Python distinguen entre mayúsculas y minúsculas, lo que significa que se definen varVarson dos cosas diferentes. El siguiente ejemplo muestra algunos identificadores válidos:

>>> x = 5
>>> name = "Jon"
>>> NH3_Concentrations = [1.3, 1.2, 1.15, 1.03, 0.98]
>>> _time = 0

Si el identificador viola las reglas de nomenclatura, el idioma arroja un error de sintaxis SyntaxError :

>>> 2x = 4
  File "<stdin>", line 1
    2x = 4
     ^
SyntaxError: invalid syntax
>>> my name = "Mark"
  File "<stdin>", line 1
    my name = "Mark"
          ^
>>> more@ = 1000000
  File "<stdin>", line 1
    more@ = 1000000
          ^
SyntaxError: invalid syntax
>>> class = 'Advanced Python'
  File "<stdin>", line 1
    class = 'Advanced Python'
          ^
SyntaxError: invalid syntax

Palabras Reservadas

Los siguientes identificadores se utilizan como palabras reservadas o lo que se conocen como palabras clave keywords y estas palabras no se pueden utilizar como nombres para identificadores regulares. 

False      class      finally    is         return
None       continue   for        lambda     try
True       def        from       nonlocal   while
and        del        global     not        with
as         elif       if         or         yield
assert     else       import     pass
break      except     in         raise

Deja un comentario