python模块中的变量

时间:2018-03-17 23:02:45

标签: python variables module global

我重写了这个问题:

File1代码:

from File2 import *

setVariable("hi")
x = getVariable()
print (x)

File2代码:

variableToReturn=""
def setVariable(variable):
    variableToReturn = variable
def getVariable():
    return variableToReturn 

为什么getVariable返回""不是"嗨" 谢谢

2 个答案:

答案 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)

的一个很好的参考网站