相关文章推荐
失望的红烧肉  ·  mysql ...·  1 月前    · 
没有腹肌的雪糕  ·  pytorch ...·  1 年前    · 
风流的人字拖  ·  开发人员资源 - Tableau·  1 年前    · 

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

1 人关注

我正试图将所有的全局变量导入到多个函数中,如果能在这样的函数上调用,那就太好了。

def importGlobals():
    global name, version, edition, fullName, method, printSize, printed, oldPrint, print

like so

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

如果有任何帮助,我们将不胜感激。

5 个评论
从哪里进口?你确实知道 阴阳怪气 变量在任何地方都可以访问,不需要使用 global 这个关键词,对吗?只有当你试图更新这些变量时,才需要使用 global
全局变量的用途是什么?使用全局变量是不好的做法。我发现在一个单独的py文件中创建变量,并将该py文件导入到你打算使用的文件中。举个例子,把变量放在一个名为global_variables的py文件中,在那里创建你的变量,然后把这个模块导入到你要使用的文件中,像global_variables.name那样访问它们;我在处理类的时候使用这个方法
你为什么不在脚本的顶部输入 "global x, y, z"?如果你这样做了,那么所有的局部函数环境都有了。现在你正在调用一个函数来把变量从局部推到全局,这没有意义?
@AnnaNevison 他说有一个原因。他有很多职能,希望避免在所有职能中都这样做。
不能修改......在脚本的顶部做 global 也没有任何效果和意义。 在顶级模块中定义的变量是 全球 默认情况下
python
variables
global-variables
255.tar.xz
255.tar.xz
发布于 2019-07-31
2 个回答
Drees
Drees
发布于 2019-07-31
已采纳
0 人赞同

正如我在评论中所说,另一种访问变量的方法是在一个单独的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

Output:

David David Aaron
我可以从 global_variables.py 里面的 main.py 随意修改变量,对吗?
是的,你可以。你可以像其他变量一样给它赋值。
@Techtiger255CodeMode 顺便提一下,如果你把 import global_variables 改为 import global_variables as gv ,并像 gv.name 那样访问变量,你可以用更短的名称来访问变量。
Tom Lubenow
Tom Lubenow
发布于 2019-07-31
0 人赞同

这不是一个好主意。它很难,因为它应该很难。如果你想让几个函数都能访问共享状态,你应该使用一个类。

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