【问题标题】:Accessing and editing a dictionary from multiple files从多个文件访问和编辑字典
【发布时间】:2013-05-28 23:26:23
【问题描述】:

在 Python 2.7 中可以通过多个文件访问字典吗?
可以从其他文件中导入类和函数,但字典也可以这样做吗?
我可能有一个带有字典和各种函数的文件,其他文件可以使用这些函数来处理字典,但是是否有必要为我可能想做的每一件事编写一个函数?我希望能够从另一个文件中做一些基本的事情,比如打印字典的一部分。
本质上,我想知道的是:导入文件是否也会在文件中导入字典,如果没有,我该怎么办?

如果这可能,我还想知道是否可以从另一个文件编辑原始字典。除了打印其中的一部分,我还能更改原始字典中的值吗?

我在互联网上找不到任何关于此的信息。请教我,stackoverflow。

【问题讨论】:

    标签: python python-2.7 dictionary


    【解决方案1】:

    file1.py

    d = {'a':5}
    

    file2.py

    from file1 import d
    d['a'] += 3
    def whatever():
       pass
    

    file3.py

    from file2 import whatever
    from file1 import d
    print d
    #now if you wanted the unmodified value from file1 you could reload it
    import file1
    reload(file1)
    from file1 import d
    print d  #note only in this file is d reverted ... any other place would have the modified dictionary
    

    【讨论】:

    • 为什么要重新加载?您没有更改源代码。 reload() 在这里只是令人困惑的事情。
    • 展示如何恢复到最初在 file1 中未更改的 d
    • 对,你可能想明确一点;你是对的,reload() 将重新执行 d,但引用 d 的其他模块将不会看到更改,除非它们改为使用 import file1; print file1.d
    • 如果我想根据变量使用来自 file2.py 的 d['a'] 怎么样? def fun(x,y):
    【解决方案2】:

    是的,字典并不特殊,可以导入到其他模块中,就像您在 Python 模块中定义的任何其他内容一样。与函数和类一样,字典是 Python 对象,导入只会在当前模块中为您导入的值创建一个新引用。

    您可以在任何地方操作字典;字典是可变结构,一旦引用它,就可以更改该字典的键和值。

    【讨论】:

    • 谢谢。我会使用filename.dictionary 访问字典还是只使用字典的名称?
    • @Erebus9997:这取决于您如何导入它。 from modulename import dictionarydictionary 添加到本地命名空间,而 import modulenamemodulename 添加到本地命名空间,然后您必须使用 modulename.dictionary 来引用字典。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多