es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Pasas una variable str para el flag en una función de Python?

En python quiero hacer algo como esto:

def func(*args, flag):
    hacer algo
    if condición A:
        flag = "alguna A" 
    else:
        flag = "alguna B"

Luego encontré que el flag pasado siempre permanece sin cambios.

Si cambio el flag para que sea una lista, entonces sí funciona pero es feo.
¿Cuál es la forma correcta de lograr lo anterior?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En Python, los argumentos se pasan por referencia. Cuando se pasa una variable a una función, se pasa como una referencia al objeto original. Por lo tanto, si asignas un nuevo valor a la variable dentro de la función, la variable original fuera de la función no cambiará.

    Para lograr el resultado deseado, puedes retornar el valor de la bandera desde la función y asignarlo a una variable fuera de la función. Aquí tienes un ejemplo:

    def func(*args):
        flag = ''
        # hacer algo
        if condición A:
            flag = "algún A"
        else:
            flag = "algún B"
        return flag
    
    # llamar a la función y capturar el valor de la bandera
    mi_bandera = func(mis_argumentos)
    
    # usar la variable de bandera fuera de la función
    print(mi_bandera)
    

    De esta manera, podemos lograr el resultado deseado sin la necesidad de utilizar una lista u otra estructura de datos para almacenar el valor de la bandera.

Comments are closed.