我将从另一个文件中的函数包含到主可执行脚本时遇到问题。我有太多的功能,我的主要脚本变得太长而且难以管理。所以我决定将每个函数移动到单独的文件而不是附加/包含它。我几乎读过这里的任何相关帖子来解决我的问题,但没有运气。我们来看看:
main_script.py
==================
from folder.another_file import f_fromanotherfile
class my_data:
MDList=[]
work=my_data()
def afunction():
f_fromanotherfile()
return
和
another_file.py
=====================
#In this file i've put just function code
def f_fromanotherfile():
a=[1,2,3,4]
work.MDList=a
return
这就是错误:
第11行,在f_fromanotherfile中 work.MDList =一 NameError:全局名称' work'未定义
请帮帮我
答案 0 :(得分:1)
工作范围'是它的模块main_script.py,所以你不能从另一个模块访问它。让工作'而不是f_fromanotherfile的参数:
在another_file.py中:
def f_fromanotherfile(work):
# function body stays the same
在main_module.py中:
def afunction():
f_fromanotherfile(work)
答案 1 :(得分:1)
因为在another_file.py
中#In this file i've put just function code
def f_fromanotherfile():
a=[1,2,3,4]
work.MDList=a
return
工作不是一个全局变量。然后对它进行分配是行不通的。
你应该将你的代码改为:another_file.py
#In this file i've put just function code
def f_fromanotherfile():
global work
a=[1,2,3,4]
work.MDList=a
return
使用全局关键字u可以在所谓的全局范围内表示变量并进行分配。
PS:有点像C中的关键字extern