我正在尝试将所有全局变量导入到多个函数中,如果我只能调用这样的函数,那将是很好的事情:
def importGlobals():
global name, version, edition, fullName, method, printSize, printed, oldPrint, print
像这样
def myFunction():
importGlobals()
print(name) # name is a global variable
除了将importGlobals
的内部复制到每个函数都需要使用的所有函数之外,还有其他方法吗?上面的解决方案不起作用...这也不起作用:
def importGlobals():
global name, version, edition, fullName, method, printSize, printed, oldPrint, print
def myFunction():
print(name)
importGlobals()
myFunction()
任何帮助将不胜感激。
答案 0 :(得分:1)
这不是一个好主意。很难,因为它应该很困难。如果您希望多个函数可以访问共享状态,则应该使用一个类。
class GlobalState:
# avoid overloading print
def __init__(name, version, edition, fullName, method, printSize, printed, oldPrint, _print):
self.name = name
self.version = version
...
def myFunction(self):
print(self.name)
print(self.version)
这是做自己想要的事的惯用方式。
答案 1 :(得分:1)
正如我在评论中所述,访问变量的另一种方法是在一个单独的py文件中实现它们,然后将它们导入到要访问它们的文件中,如下所示;
Main.py
import global_variables
def myFunction():
print(global_variables.name)
global_variables.name = "David"
print(global_variables.name)
def myOtherFunction():
print(global_variables.name)
global_variables.name = "Aaron"
print(global_variables.name)
myFunction()
myOtherFunction()
global_variables.py
# you can use any type for your variables and still access them in another module
name = "John"
version = {"Version":1.0} # access version by global_variables.version["Version"]
edition = ["Edition1"] # access edition by global_variables.edition[0]
fullName = "John Smith"
value = 5.33
输出:
John
David
David
Aaron