首页 > 解决方案 > 不能在另一个文件中使用返回的变量 - Python

问题描述

我正在尝试在另一个文件(file2.py)中使用一个文件(file1.py)中定义的变量。文件 1 包含“shoe”,它是一个队列,已经过测试并且工作正常。所以看起来问题不在于队列的实现。关于问题变量的上下文:结果只是一个由另一个名为 cardList 的列表组成的打乱列表。结果在 shuffle 函数中被打乱。它是 shuff 范围内的局部变量。为了解决这个问题,我确实尝试使用:global result,然后再次导入它,但它不起作用,所以我可能使用global错误?

以下是我迄今为止尝试过的对我不起作用的方法: 在 File1 中:cardList 120 项的列表在哪里。

def shuff(deck): # this function works fine within file1
    for i in range(0, 9):
    result = []
    popped = cardList.pop(R.randint(0, len(cardList)-1))
    result = result.append(popped)

    return result

def main():
    shuff(cardList)

文件2 中

from File1 import result

以上不起作用,所以我环顾四周并按照一个答案说我的变量需要在 main() 中,所以我尝试了以下操作:在File1

def main():
    result = shuff(cardList)

我通过删除“返回结果”尝试了方法 2,因为我认为它可能会覆盖现有的结果变量。但是我也尝试过没有那个,两种方式,它似乎都不起作用。

最后,我在 shuff 函数下将结果设为 File1 中的 Global Var。这似乎也不起作用

难道我做错了什么?

标签: pythonpython-3.ximport

解决方案


这里有很多问题在起作用。例如,由于未将result定义为全局变量,因此该变量仅存在于您的shuff函数中。虽然方法 2 接近答案,但由于您的main是一个函数,因此 result仅存在于该函数内,不能从函数外部访问。如果你想从 File1 导入结果工作,我建议简单地做:

文件 1:

def shuff(deck): # this function works fine within file1
    for i in range(0, shoe.size()):
    result = []
    popped = cardList.pop(R.randint(0, len(cardList)-1))
    result = result.append(popped)

    return result

result = shuff(cardList)

文件 2:

from File1 import result
print(result)

如果要保留主要功能,请执行以下操作:

文件 1:

def main():
    return shuff(cardList)

文件 2:

from File1 import main
result = main()
print(result)

归根结底,有很多方法可以做您想做的事情,只需选择一种适合您需求的方法


推荐阅读