在文件之间拆分“dict”定义

时间:2011-08-03 20:06:14

标签: python setup-project

我想在文件之间定义大型字典对象的内容。我想知道这在python中是否可行。

理想情况下,这就是我想要做的事情:

主文件:(dict_object_main.py)

# File name: dict_object_main.py

import dict_object_sub1
import dict_object_sub2

dict_object = {}

def doSomeStuffWithTheDictObject:
    ...
    return

第一个为“dict_object”添加了大量内容的文件:(dict_object_sub1.py)

# File name: dict_object_sub1.py
from dict_object_main import dict_object

dict_object['sub1'] ={
     'property1':'value1'
    ...
    ,'property9999':'value9999'
}

为“dict_object”添加了大量内容的第二个文件:(dict_object_sub2.py)

# File name: dict_object_sub2.py

from dict_object_main import dict_object

dict_object['sub2'] ={
     'property1':'value1'
    ...
    ,'property9999':'value9999'
}

我在javascript中设置了类似的东西。在Python中这样做是否可以,或者我应该采用不同的方式吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

编辑:我之前回答的第一部分是错误的。我学到的教训是没有循环依赖。以下是正确的:

另一种选择是在主文件中尝试:

from dict_object_sub1 import dict_object_sub1
from dict_object_sub2 import dict_object_sub2
dict_object = {}
dict_object.update(dict_object_sub1)
dict_object.update(dict_object_sub2)

然后在两个子文件中执行以下操作:

# dict_object_sub1.py
dict_object_sub1 = {...}

答案 1 :(得分:1)

您可能希望改用update方法。

# Same for dict_object_sub1.py or dict_object_sub2.py

from dict_object_main import dict_object
dict_object.update({
    'prop1': 'val1',
    # ...
})

注意: 我认为将声明分成两个不同的文件是没有多大意义的。在两种情况下,字典占用的最终内存都是完全相同的。

修改 正如daveydave400在他的回答中指出的那样,导入顺序也是错误的。

您需要至少3个不同的文件(或在导入模块中执行更新):

  • 一个dict_declare.py文件,您可以在其中声明字典:

    dict_object = {}
    
  • 每个部分字典声明的文件:

    from dict_object import dict_object
    
    dict_object.update({
        'prop1': 'val1',
        # ...
    })
    
  • 您的主文件:

    from dict_declare import dict_object
    import dict_object_sub<n>
    # ... repeat
    
    def doSomeStuffWithTheDictObject:
        ...
        return