If Sin Else en una Línea de Python

Rate this post

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 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.

Join the free webinar now!