簡體   English   中英

如何將所有全局變量導入函數-Python

[英]How do I import all global variables into a function - Python

我正在嘗試將所有全局變量導入到多個函數中,如果我可以調用這樣的函數,那就太好了:

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

任何幫助將不勝感激。

這不是一個好主意。 很難,因為它應該很困難。 如果您希望多個函數可以訪問共享狀態,則應使用一個類。

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)

這是您想要做的慣用方式。

正如我在評論中所述,訪問變量的另一種方法是在一個單獨的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM