| You are here: Inicio > Inmersión en Python > Tipos de dato nativos > Declaración de variables | << >> | ||||
Inmersión en PythonPython de novato a experto |
|||||
Ahora que ya sabe algo sobre diccionarios, tuplas y listas (¡oh dios mío!), volvamos al programa de ejemplo del Capítulo 2, odbchelper.py.
Python tiene variables locales y globales como casi todo el resto de lenguajes, pero no tiene declaración explícita de variables. Las variables cobran existencia al asignársele un valor, y se destruyen automáticamente al salir de su ámbito.
if __name__ == "__main__": myParams = {"server":"mpilgrim", \ "database":"master", \ "uid":"sa", \ "pwd":"secret" \ }
Advierta el sangrado. Una sentencia if es un bloque de código que necesita ser sangrado igual que una función.
Observe también que la asignación de la variable es una orden en varias líneas, donde la barra inversa (“\”) sirve como marcador de continuación de línea.
| Cuando una orden se divide en varias líneas con la marca de continuación de línea (“\”), las siguientes líneas se pueden sangrar de cualquier manera; el habitual sangrado astringente de Python no se aplica aquí. Si su IDE de Python autosangra la línea a continuación, probablemente debería aceptar este comportamiento a menos que tenga una imperiosa razón para no hacerlo. | |
Estrictamente hablando, las expresiones entre paréntesis, corchetes y llaves (como la definición de un diccionario) también pueden ocupar varias líneas con o sin el carácter de continuación (“\”). Me gustaría incluir la barra inversa aunque no haga falta debido a que pienso que hace el código más sencillo de leer, pero esto es cuestión de estilo.
Tercero, nunca llegamos a declarar la variable myParams, simplemente le asignamos un valor. Esto es como en VBScript sin la opción option explicit. Por suerte, al contrario que VBScript, Python no le permite hacer referencia a una variable a la que nunca se asignó un valor; intentar esto lanzará una excepción.
>>> x Traceback (innermost last): File "<interactive input>", line 1, in ? NameError: There is no variable named 'x' >>> x = 1 >>> x 1
Le agradecerá esto a Python algún día.
Uno de los atajos más vistosos de Python es el uso de secuencias para asignar múltiples valores a la vez.
>>> v = ('a', 'b', 'e') >>> (x, y, z) = v>>> x 'a' >>> y 'b' >>> z 'e'
Esto tiene todo tipo de usos. A menudo quiero asignar nombres a un rango de valores. En C usaríamos enum y listaríamos de forma manual cada constante y sus valores asociados, lo que parece especialmente tedioso cuando los valores son consecutivos. En Python podemos usar la función incorporada range con la asignación a múltiples variables para asignar valores consecutivos rápidamente.
>>> range(7)[0, 1, 2, 3, 4, 5, 6] >>> (LUNES, MARTES, MIERCOLES, JUEVES, VIENRES, SABADO, DOMINGO) = range(7)
>>> LUNES
0 >>> MARTES 1 >>> DOMINGO 6
También puede usar la asignación multivariable para construir funciones que devuelvan varios valores, simplemente retornando una tupla con todos los valores. Quien llama puede tratar el valor devuelto como una tupla, o asignar los valores a variables individuales. Muchas bibliotecas estándar de Python hacen esto, incluido el módulo os, que comentaremos en el Capítulo 6.
<< Presentación de las tuplas |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
Formato de cadenas >> |