Python 在导入的函数中修改变量

Python 在导入的函数中修改变量,python,python-3.x,Python,Python 3.x,假设我们有两个文件: File1.py X = 4 def f(): print(X) def f(X=4): print(X) File2.py from File1 import f X = 10 f() # prints 4 from File1 import f f(10) # prints 10 如何更改函数f内部的X 最好导出一个执行此任务的函数: 文件1: X = 4 def setX(newValue): global X

假设我们有两个文件:

File1.py

X = 4
def f():
    print(X)
def f(X=4):
    print(X)
File2.py

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

如何更改函数
f
内部的
X

最好导出一个执行此任务的函数:

文件1:

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

此解决方案导出一个函数,用于从外部文件1设置值;您只需调用它来修改变量


或更通用的版本:

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

set_global('X', 10)
f() #prints 10

您可以将
X
作为参数传递给
f()
,并在未传递值的情况下在函数中设置
X

File1.py

X = 4
def f():
    print(X)
def f(X=4):
    print(X)
File2.py

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

给出
X
作为
f()的参数是的,这是一个很好的答案。现在只需要找到一种方法使
setX
更通用,并接受任何参数(不仅仅是
X
)。添加了通用版本。谢谢,但我故意没有将X作为参数,因为我的用例(修补)无法更改。