Crear hermosas sentencias de una línea en Python es tanto un arte como una ciencia. En este tutorial, aprenderás a comprimir una sentencia if sin una cláusula else en una sola línea de código de Python.
Problema: ¿Cuál es el equivalente de una sola línea de la sentencia if simple sin una cláusula else?
Aquí hay un ejemplo:
condition = True if condition: print('hi') # hi
Es posible que desees (i) imprimir algo, (ii) asignar un valor a una variable, o (iii) añadir un elemento a una lista si la condición se cumple.
En este artículo, te mostraré cuatro métodos para lograr este objetivo. Los cuatro métodos son generalmente aplicables, y puedes personalizarlos fácilmente para tu aplicación específica.
Veamos rápidamente los cuatro métodos en nuestra consola de código interactivo:
Ejercicio: Ejecuta el código para ambas condiciones True y False. ¿Son todos los métodos semánticamente equivalentes?
Método 1: Declaración if de línea única
El primero es también el método más sencillo: si quieres una sentencia única sin una cláusula else, ¡escribe la sentencia if en una sola línea! Hay muchos trucos (como usar el punto y coma) que te ayudan a crear declaraciones de una sola línea. Pero para un bloque if con una sola sentencia, es tan sencillo como evitar el salto de línea.
condition = True # Method 1: One-Liner If if condition: print('hi') # hi
Este método es perfectamente válido y podrías verlo en la práctica. Sin embargo, debo mencionar que “viola” el estándar PEP8 (varias declaraciones en una sola línea). Por lo tanto, no deberías considerar esto como código pitónico (aunque hay cosas peores bajo el sol).
Método 2: Operador ternario con clásula else desechable.
Claro, también puedes usar el operador ternario:

Si necesitas un rápido repaso del operador ternario, consulta mi artículo más detallado en el blog. El operador ternario se usa comúnmente para asignar valores condicionalmente. Pero también puedes desechar el valor devuelto no asignando el resultado a ninguna variable. En este caso, no importa que utilices None o cualquier otro valor de retorno “ficticio” como resultado de la cláusula else:
condition = True # Method 2: Ternary with Dummy print('hi') if condition else None
Es legible, corto y conciso, y esto me gusta (bueno, puede que sea un poco parcial como autor del libro Python One-Liners -¡esto lo dice Chris, no yo!-). Seguro, la gente preguntará por qué no lo escribiste en varias líneas. Pero, ¿dónde está la diversión?
Método 3: Operador ternario con un valor predeterminado para asignar
Si necesitas asignar un valor condicionalmente a una variable, pero quieres hacerlo sin una cláusula else, puedes hacer lo siguiente:
condition = True # Method 3: Ternary with Dummy for Assignment x = 42 if condition else None
Si la condición no se cumple, se asigna a la variable el valor “ficticio” None.
Método 4: Cortocircuito
Este método es el que más me gusta. Utiliza una optimización de Python llamada “cortocircuito” para los operadores booleanos: el operador lógico and
sencillamente devuelve el segundo operando si el primero es True
. No hay conversión booleana del segundo operando, sencillamente se devuelve tal cual.
Si el primer operando es False
, el segundo operando ni siquiera se evalúa.
Puedes utilizarlo para ejecutar condicionalmente la cláusula if print('hi')
o cualquier otro código funcional.
condition = True # Method 4: Short circuiting condition and print('hi')
Hay dos opciones:
condition == True
: Como el primer operando esTrue
, se devuelve el segundo operando. Así, la sentenciaprint('hi')
se ejecuta y la cadena hi aparece en la pantalla.condition == False
: Como el primer operando esFalse
, el segundo operando ni siquiera se evalúa porque el resultado de la operación lógica and es False de todos modos. Así, la sentenciaprint('hi')
nunca se ejecuta.
Source: This article originally appeared in the English version on the Finxter blog here.
A dónde ir desde aquí
Suficiente teoría. ¡Vamos a practicar un poco!
Los programadores cobran seis cifras y más porque pueden resolver problemas de forma más eficaz utilizando la inteligencia de las máquinas y la automatización. Para tener más éxito como programador, resuelve más problemas reales para personas reales. Así es como se pulen las habilidades que realmente necesitas en la práctica. After all, what’s the use of learning theory that nobody ever needs?
¡Desarrollarás destrezas de programación de alto valor al trabajar en proyectos prácticos de programación!
¿Quieres dejar de aprender con proyectos de juguete y centrarte en proyectos prácticos de código que te hagan ganar dinero y resuelvan problemas reales para la gente?
Si tu respuesta es SÍ, considera la posibilidad de convertirte en un desarrollador freelance de Python. It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.