我尝试使我的代码更具模块化,以实现一般可读性。将函数名称存储到同一文件夹中的外部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,有没有办法强制它?
答案 0 :(得分:0)
它与命令事物没有太大关系 - 这就是名称空间的工作方式。 data.py和func.py具有不同的命名空间,如果要在另一个命名空间中使用某个命名空间,则需要导入它。将内容导入主文件的命名空间不会导致它出现在data.py的命名空间中。