我重写了这个问题:
File1代码:
from File2 import *
setVariable("hi")
x = getVariable()
print (x)
File2代码:
variableToReturn=""
def setVariable(variable):
variableToReturn = variable
def getVariable():
return variableToReturn
为什么getVariable返回""不是"嗨" 谢谢
答案 0 :(得分:0)
您可以通过告诉Python查找变量并在全局字典中引用它来更改函数内部的全局变量。您可以通过在变量名称前添加“global”来实现。考虑一下:
a=1
def foo():
global a
a=a+1
print a
上面的代码应该打印2.然而,这是一个不好的做法。使用函数的原因之一是具有局部逻辑和局部变量范围。使用全局变量与这种推理相矛盾。
考虑一下:
variableToReturn=""
def setVariable(variable):
variableToReturn = variable
print globals()
print
print locals()
def getVariable():
return variableToReturn
setVariable("hi")
x = getVariable()
print (x)
函数内的那些打印将告诉你问题是什么。他们分别打印出全球和本地范围。
答案 1 :(得分:0)
您基本上是在函数中创建一个名为variableToReturn
的新局部变量,它不会更改全局变量。因此,在set函数中,不要更改全局变量。
如果您在一个类中执行此操作,则可以使用包装函数来使用函数设置器和getter。这是(Reference for function setter and getter)
的一个很好的参考网站