1.10. Definición de variables

Ahora que piensa que ya lo sabe todo sobre diccionarios, tuplas y listas (¡oh, no!), volvamos a nuestro programa de ejemplo, odbchelper.py.

Python tiene variables locales y globales como la mayoría de los lenguajes, pero no tiene declaraciones explícitas de variables. Las variables aparecen al asignarles un valor, y son automáticamente destruidas cuando salimos de su ámbito.

Ejemplo 1.24. Definición de la variable myParams


if __name__ == "__main__":
    myParams = {"server":"mpilgrim", \
                "database":"master", \
                "uid":"sa", \
                "pwd":"secret" \
                }

Aquí hay varios puntos de interés. En primer lugar, fíjese en el sangrado. Una sentencia if es un bloque de código y necesita estar sangrado, como una función.

En segundo lugar, la asignación de la variable es una orden partida en varias líneas, con una contrabarra (“\”) como marca de continuación de la línea.

Nota
Cuando una orden se extiende a lo largo de varias líneas con la marca de continuación de línea (“\”), las líneas que siguen pueden sangrarse de cualquier modo; las severas normas de sangradeo de Python no se aplican. Si entorno de programación Python sangra automáticamente las líneas que continúan, debe usted aceptar probablemente el valor por omisión a no ser que tenga una buena razón.
Nota
Para ser exactos, las expresiones entre paréntesis, corchetes o llaves (como la definición de un diccionario) pueden extenderse a varias líneas con la marca de continuación (“\”) o sin ella. Yo prefiero incluir la contrabarra incluso cuando no es imprescindible, porque creo que hace el código más legible, pero esto es cuestión de estilo.

En tercer lugar, nunca se ha declarado la variable myParams, simplemente se le ha asignado un valor. Esto es como VBScript sin la opción option explicit. Afortunadamente, a diferencia de VBScript, Python no permite hacer referencia a una variable a la que no se ha asignado un valor; si se intenta, se lanzará una excepción.

Ejemplo 1.25. Referencia a una variable no asignada

>>> x
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'
>>> x = 1
>>> x
1

Algún día agradecerá esto

Lecturas complementarias