Valores predeterminados de Python y configuración del valor basado en otras variables. A si más o no.

A veces tengo una variable que quiero usar de forma predeterminada para algo y, si se configura otra cosa, cámbiela a otra cosa.

La pregunta es. ¿Qué se prefiere? ¿Establecer el valor predeterminado y luego cambiarlo si se cumple la condición o establecer la condición solo una vez, dependiendo de la verificación inicial con una adición adicional?

Ejemplo en código.

if x: y = '%s-other' % x else: y = 'some_default' 

La otra opción sería.

 y = 'some_default' if x: y = '%s-other' % x 

Esto no siempre es un argumento que se pasa a una función, por lo que Kwargs no es algo en lo que quiera confiar aquí.

    Personalmente, el segundo parece ser mucho más claro para mí, pero lo que todavía tengo que encontrar algún tipo de opinión de nadie sobre esto.

    Qué tal esto:

     y = '%s-other' % x if x else 'some_default' 

    Como Rob señaló,

     y = '%s-other' % x if x else 'some_default' 

    Es una construcción muy común en varios idiomas.

    Python proporciona algunas alternativas más y la elección depende del Usuario

     y = ['some_default','%s-other'][x!=None] 

    Si se trata de diccionario, ya tiene dos opciones.

    1. Use setdefault como x.setdefault(some_key,some_default)=other
    2. Utilice collections.defaultdict

    Los otros que publicaste también son válidos, pero no muy pythonicos, pero aún así encontrarás un montón de código con tu estilo de cita.

    Para mí, siempre y cuando un progtwig sea legible y eficiente, no deberíamos estar demasiado atascados para hacer algún tipo de construcción pythonica que a menudo desvíe el enfoque.

    Más azúcar para otras respuestas:

     y = x and '%s-other' % x or 'some_default' 

    Pero este puede asustar a la gente, así que recomiendo usar el de Rob 🙂