Inicio > Inmersión en Python > Trucos y consejos | << >> | ||||
diveintopython.org Python para programadores con experiencia |
En el entorno de programación Python en Windows, puede ejecutar un módulo con File->Run... (Control-R). La salida se muestra en la ventana interactiva. |
En el entorno de programación Python en Mac OS, puede ejecutar un módulo con Python->Run window... (Cmd-R), pero antes debe seleccionar una opción importante: Abra el módulo en el entorno de programación, muestre el menú de opciones de módulo pulsando el triángulo negro de la esquina superior derecha de la ventana, y asegúrese de que “Run as __main__” está seleccionado. Esta opción se guarda junto con el módulo, de modo que sólo debe hacer esto una vez por cada módulo. |
En los sistemas compatibles con UNIX (incluido Mac OS X), puede ejecutar un módulo desde la línea de órdenes: python odbchelper.py |
En Visual Basic, las funciones (que devuelven un valor) empiezan con function, y las subrutinas (que no devuelven un valor) empiezan con sub. En Python no hay subrutinas. Todo son funciones, todas las funciones devuelven un valor (incluso si este es None), y todas las funciones empiezan con def. |
En Java, C++ y otros lenguajes de tipos estáticos, se debe especificar el tipo de valor de retorno de una función y de cada argumento. En Python, nunca se especifica explícitamente el tipo de nada. Según el valor que se le asigne, Python almacena el tipo de dato internamente. |
Las triples comillas son también una forma fácil de definir una cadena que incluya comillas simples y dobles, como qq/.../ en Perl. |
Muchos entornos de programación de Python utilizan la cadena de documentación para proporcionar ayuda sensible al contexto, de modo que cuando se escribe el nombre de una función, su cadena de documentación se muestra como ayuda. Esto puede ser increíblemente útil, pero sólo es tan bueno como lo sean las cadenas de documentación que se escriban. |
import en Python es como require en Perl. Cuando se ha importado un módulo en Python, se puede acceder a sus funciones con módulo.función; cuando se ha requerido un módulo en Perl, se puede acceder a sus funciones con módulo::función. |
Python usa el retorno de carro para separar sentencias y los dos puntos y el sangrado para separar bloques de código. C++ y Java usan el punto y coma para separar sentencias y las llaves para separar bloques de código. |
Al igual que C, Python usa == para comparar y = para asignar. Pero a diferencia de C, Python no admite la asignación en línea, de modo que no hay posibilidad de asignar accidentalmente el valor con el que se piensa que se está comparando. |
En MacPython, hay que añadir un paso más para que funcione el truco if __name__. Mostrar el menú de opciones del módulo pulsando en el triángulo negro de la esquina superior derecha de la ventana, y asegurarse de que Run as __main__ está seleccionado. |
Un diccionario en Python es como un hash en Perl. En Perl, las variables que almacenan hashes comienzan siempre por el carácter %; en Python, las variables pueden tener cualquier nombre, y Python guarda internamente el tipo de dato. |
Un diccionario en Python es como una instancia de la clase Hashtable en Java. |
Un diccionario en Python es como una instancia del objeto Scripting.Dictionary en Visual Basic. |
Los diccionarios no tienen concepto alguno de orden entre sus elementos. Es incorrecto decir que los elementos están “desordenados”; simplemente no hay orden. Esta distinción es importante, y le estorbará cuando intente acceder a los elementos de un diccionario en un orden específico y repetible (como el orden alfabético de las claves). Hay formas de hacer esto, sólo que no forman parte de los diccionarios. |
Una lista en Python es como un array en Perl. En Perl, las variables que almacenan arrays comienzan siempre con el carácter @; en Python, las variables pueden llamarse de cualquier modo, y Python lleva el registro del tipo de datos internamente. |
Una lista en Python es muy parecida a un array en Java (aunque se puede usar de ese modo si eso es todo lo que se espera en la vida). Se puede comparar mejor con la clase Vector, que puede guardar objetos arbitrarios y expandirse dinámicamente al añadir nuevos elementos. |
No hay un tipo booleano en Python. En un contexto booleano (como una sentencia if), 0 es falso y el resto de los números son verdaderos. Esto se extiende también a otros tipos de datos. Una cadena vacía (""), una lista vacía ([]) y un diccionario vacío ({}) son todos falsos; el resto de cadenas, listas y diccionarios son verdaderos. |
Las tuplas pueden convertirse en listas, y viceversa. La función incorporada tuple toma una lista y devuelve una tupla con los mismos elementos, y la función list toma una tupla y devuelve una lista. En la práctica, tuple congela una lista, y list descongela una tupla. |
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. |
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. |
El formato de cadenas en Python utiliza la misma sintaxis que la función sprintf en C. |
join sólo funciona con listas de cadenas; no hace ninguna conversión de tipos. Si se une una lista que tiene uno o más elementos que no sean cadenas, se lanzará una excepción. |
cadena.split(delimitador, 1) es una técnica útil cuando se quiere buscar una subcadena en una cadena y después trabajar con lo que la precede (que queda en el primer elemento de la lista devuelta) y lo que la sigue (que queda en el segundo elemento). |
Capítulo 2. El poder de la introspección
Lo único que debe hacerse para llamar a una función es especificar un valor (del modo que sea) para cada argumento obligatorio; el modo y el orden en que se haga esto depende de usted. |
Python se acompaña de excelentes manuales de referencia, que debería usted leer detenidamente para aprender todos los módulos que Python ofrece. Pero mientras en la mayoría de lenguajes debe usted volver continuamente sobre los manuales (o las páginas de manual, o, Dios le socorra, MSDN) para recordar cómo se usan estos módulos, Python está ampliamente autodocumentado. |
El truco and-or, bool and a or b, no funcionará como la expresión bool ? a : b en C cuando a sea falsa en contexto booleano. |
Las funciones lambda son una cuestión de estilo. Su uso nunca es necesario. En cualquier lugar en que puedan utilizarse, se puede definir una función normal separada y utilizarla en su lugar. Yo las utilizo en lugares donde deseo encapsulación, código no reutilizable que no ensucie mi propio código con un montón de pequeñas funciones de una sola línea. |
En sql, se utiliza IS NULL en vez de = NULL para comparar un valor nulo. En Python no hay una sintaxis especial; se usa == None como en cualquier otra comparación. |
Repaso en cinco minutos | Lista de ejemplos | |