If Sin Else en una Línea de Python

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:

Python Ternary Operator

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 es True, se devuelve el segundo operando. Así, la sentencia print('hi') se ejecuta y la cadena hi aparece en la pantalla.
  • condition == False: Como el primer operando es False, 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 sentencia print('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 , 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.

Join the free webinar now!