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.

Llamando a una función que importa su resultado desde otra función en Python.

Tengo un código en Python f1 que crea dos funciones, la segunda función obtiene el resultado de la primera:

a = 3
b = 4

def fS(a,b):
x = a+b
return x

y = fS(a,b)
print(y)

def fM(a,b,y):
z = aby
return z

w = fM(a,b,y)
print(w)

Y otro código f2 que utiliza estas funciones, ambas importadas del primer código:

desde f1 importar *

a = 6
b = 4

c = a+1
d = b+1

p = fS(c,d)
print(p)

q = fM(c,d,p)
print(q)

La función fS da la suma de dos números. La función fM da el producto multiplicado por el resultado anterior de la suma. En f2, ambos números deben sumarse en 1 antes de la primera función. Ejecutando f1, da el resultado correcto para y y w:

7
84

Pero al ejecutar f2, devuelve el resultado de f1 y los resultados de f2:

7
84
12
420

Los resultados son correctos pero mi intención es imprimir solo los resultados de f2 (p = 12 y q = 420) al ejecutarlo y no esos dos primeros resultados (7 y 84):

12
420

Intenté resolverlo insertando la declaración if name == ‘main‘: en f1 antes de establecer los valores de a y b, pero obtuve un mensaje de error: nombre ‘a’ no está definido en y = fS (a, b) porque estos valores no se pueden leeral ejecutar f2. ¿Qué me falta aquí? ¿Hay alguna forma de hacerlo sin crear un nuevo archivo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la declaración if __name__ == '__main__': para verificar si el código se está ejecutando directamente o si se está importando desde otro módulo. En este caso, puede utilizarlo para verificar si el código se está ejecutando directamente o si se está importando desde otro módulo.

    En el código f1, puede agregar el siguiente código antes de establecer los valores de a y b:

    if __name__ == '__main__':
        a = 3
        b = 4
    

    Esto garantizará que los valores de a y b solo se establezcan cuando el código se está ejecutando directamente, y no cuando se está importando desde otro módulo.

    También puede agregar el siguiente código al final del código f1:

    if __name__ == '__main__':
        print(y)
        print(w)
    

    Esto garantizará que los resultados de y y w solo se impriman cuando el código se esté ejecutando directamente, y no cuando se esté importando desde otro módulo.

    Al hacer esto, cuando se ejecute f2, solo imprimirá los resultados de f2 (p y q) y no los resultados de f1 (y y w).

Comments are closed.