如何将所有全局变量导入函数-Python

时间:2019-07-30 22:34:35

标签: python variables global-variables

我正在尝试将所有全局变量导入到多个函数中,如果我只能调用这样的函数,那将是很好的事情:

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()

任何帮助将不胜感激。

2 个答案:

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