如何跨三个文件将列表从一个函数传递到Python3中的另一个函数?

时间:2017-10-21 04:08:05

标签: python python-3.x

关于这一点,我一直在敲打我的脑袋,我知道这可能最终成为愚蠢但我的导入游戏不存在。

基本上,我在同一目录中有四个文件:fs.pyz.pymatch.pyy.py

fs.py中的功能和z.py的功能会导入match.py。从那里开始,match.py的结果会导入y.py(这是我遇到问题的地方)。

当我将列表从match.py提供给y.py时,列表为空且没有任何内容。

每个文件都有一些代码,但逻辑的一般流程如下。我认为这与我在上一个文件中导入的方式有关:y.py

当我运行match.py时,我能够得到我想要的内容,因此我知道来自fs.pyz.py的结果正在被正确输入。我打印出来自y.py match.py的列表,看看我是否得到了任何内容而且它不是一个空列表所以我不确定为什么它被作为空列表传入y.py中的函数。我想在fs中导入zy.py吗?

fs.py:

def get_fs():
    y_params = [1, 2, 4]
    return y_params
if __name__ == "__main__":
    get_fs()

z.py:

def get_z():
    y_params = [3, 5, 4]
    return y_params
if __name__ == "__main__":
    get_z()

match.py​​

from fs import get_fs
from z import get_z

def create_list(fs=[], z=[]):
    match_list = []
    match_list = fs + z
    return match_list
if __name__ == "__main__":
    fs = get_fs()
    z = get_z()
    create_list(fs, z)

y.py

from match import create_list

def create_new_list(match_list=[]):
     print(match_list)

if __name__ == "__main__":
    match_list = create_list()
    create_match_list(match_list)

如果有人有任何想法,我会非常感激。我一直试图在过去的2个小时内解决这个问题,而且我对python很新。 T_T我也可以添加原始代码。

1 个答案:

答案 0 :(得分:0)

我猜你误解了你在代码中使用的if __name__ == '__main__'的概念。仅当您执行if时,此True条件才会评估为python file.py,如果您 file.py导入其他模块,则该条件将无法获取执行。

现在,在你的情况下,match.py将列表初始化程序放在if __name__ == "__main__"中,只有在运行python match.py时才会对其进行评估如果将match导入到其他文件中,if __name__ == "__main__"条件将评估为false,因此您的列表将为空。