python模块中的变量

2024-04-25 19:33:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经改写了这个问题:

文件1代码:

from File2 import *

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

文件2代码:

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

为什么getVariable return“”不是“hi” 谢谢


Tags: 文件代码fromimportreturndefhivariable
2条回答

通过告诉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)

函数内部的打印将告诉您问题所在。它们分别打印出全局范围和局部范围

您基本上是在函数中创建一个名为variableToReturn的新局部变量,它不会更改全局变量。所以在set函数中,不更改全局变量

如果在类中执行此操作,则可以使用包装函数使用函数setter和getter。这里有一个很好的参考站点

相关问题 更多 >