2024-10-01 05:01:32 发布
网友
我已经改写了这个问题:
文件1代码:
from File2 import * setVariable("hi") x = getVariable() print (x)
文件2代码:
variableToReturn="" def setVariable(variable): variableToReturn = variable def getVariable(): return variableToReturn
为什么getVariable return“”不是“hi” 谢谢
通过告诉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函数中,不更改全局变量
variableToReturn
如果在类中执行此操作,则可以使用包装函数使用函数setter和getter。这里有一个很好的参考站点
通过告诉Python在全局字典中查找变量并引用它,可以从函数内部更改全局变量。你可以在变量名前加上“global”。考虑一下:
上面的代码应该打印2。但是这是一个不好的做法。使用函数的原因之一是具有局部逻辑和局部变量范围。使用全局变量与这种推理相矛盾
考虑一下:
函数内部的打印将告诉您问题所在。它们分别打印出全局范围和局部范围
您基本上是在函数中创建一个名为
variableToReturn
的新局部变量,它不会更改全局变量。所以在set函数中,不更改全局变量如果在类中执行此操作,则可以使用包装函数使用函数setter和getter。这里有一个很好的参考站点
相关问题 更多 >
编程相关推荐