Digamos que teníamos dos archivos:

File1.py

X = 4
def f():
    print(X)

File2.py

from File1 import f
X = 10
f()    
# prints 4

¿Cómo podemos cambiar el X dentro de la función f?

-1
A H 16 oct. 2018 a las 16:20

2 respuestas

La mejor respuesta

Es mejor exportar una función que hace el trabajo:

Archivo1:

X = 4
def setX(newValue):
    global X
    X = newValue
def f():
        print(X)

File2

from File1 import f
from File1 import setX
setX(10)
f() 

Esta solución exporta una función para establecer el valor desde fuera de File1; simplemente lo llamas para modificar la variable


O una versión más genérica:

def set_global(name, value):
    globals()[name] = value

Archivo2:

set_global('X', 10)
f() #prints 10
2
A H 16 oct. 2018 a las 14:58

Puede pasar X como argumento a f() y establecer X en la función en caso de que no se pase ningún valor.

File1.py

def f(X=4):
    print(X)

File2.py

from File1 import f
f(10)    
# prints 10
0
Nordle 16 oct. 2018 a las 13:33