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?
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 dea
yb
:Esto garantizará que los valores de
a
yb
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
:Esto garantizará que los resultados de
y
yw
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 def2
(p
yq
) y no los resultados def1
(y
yw
).