Python如何从另一个文件中包含函数

时间:2016-01-26 01:25:35

标签: python

我将从另一个文件中的函数包含到主可执行脚本时遇到问题。我有太多的功能,我的主要脚本变得太长而且难以管理。所以我决定将每个函数移动到单独的文件而不是附加/包含它。我几乎读过这里的任何相关帖子来解决我的问题,但没有运气。我们来看看:

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'未定义

请帮帮我

2 个答案:

答案 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