python - 不能在另一个文件中使用返回的变量 - 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。这似乎也不起作用
难道我做错了什么?
解决方案
这里有很多问题在起作用。例如,由于未将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)
归根结底,有很多方法可以做您想做的事情,只需选择一种适合您需求的方法
推荐阅读
- .net-core - 动态属性和子模型不绑定
- haskell - Haskell - 处理分支的递归函数
- nginx - NGINX - 反向代理问题。不重写 URL?我认为?
- r - 重新编码问卷的项目
- javascript - 如何检查 Cypress 的 DOM 中是否存在元素?
- c++ - 通过 conda 安装库后,编译 C++ 脚本,不会看到它的头文件
- r - geom_col with position = "dodge" 和 x 轴上的日期(多个值)
- javascript - 如何将数组列表的第一个值推送到对象?
- symfony - 使用 Symfony 4.4 HTTP 客户端发帖不工作,状态码 422
- r - 从一长串二进制变量中提取唯一组合