Python,外部文件,序列,名称错误

时间:2017-04-04 21:08:29

标签: python

我尝试使我的代码更具模块化,以实现一般可读性。将函数名称存储到同一文件夹中的外部py.files的函数和字典时,会引发名称错误。但是在一个文件和导入函数文件的dict文件(请参见下文)中它可以正常工作:

不起作用:

data.py
modes = {'add' : {'adds an entry': addMode}} 

func.py
def addMode():
    print('tada')

主档

from data import modes
from func import addMode
for v, button in modes.items():
    for tip, function in button.items():
        function()

工作但看起来很混乱:

data2.py
from func import addMode
modes = {'add' : {'adds an entry': addMode}}

主档

from data2 import modes
for v, button in modes.items():
    for tip, function in button.items():
        function()

前者不起作用的原因是什么?似乎顺序对于dict中的addMode不重要而不会引起NameError,有没有办法强制它?

1 个答案:

答案 0 :(得分:0)

它与命令事物没有太大关系 - 这就是名称空间的工作方式。 data.py和func.py具有不同的命名空间,如果要在另一个命名空间中使用某个命名空间,则需要导入它。将内容导入主文件的命名空间不会导致它出现在data.py的命名空间中。