python - 尝试从一个子例程获取另一个子例程的列表

标签 python list global-variables subroutine

我正在从文件中的数据创建一个列表,但我无法在其原始子例程之外使用该列表,我怎样才能将其设为全局,以便我可以在任何我想要的地方使用它并更改它?

def selecting_qs():
    global main_list
    dif = difficulty.get()
    print(main_list,dif)


#main list order:
#Question ID  ,  Difficulty  ,  Topic  ,  Answer ID  ,  Picture ID  ,  Frequency 
def main_file_info():
    main_file = open("main_file.txt","r")
    main_file_info=main_file.readlines()
    for line in main_file_info:
        main_list=line.split("@")

    main_list=main_list[1:len(main_list)-1]
    main_file.close()

    return(main_list)

最佳答案

要传递函数中使用的变量,您只需返回它们,分配它们,然后......传递它们。在您当前的脚本中,这将如下所示:

def selecting_qs(a_list):
    # global  <-- main_list this is not needed and can lead to problems!
    dif = difficulty.get()
    print(a_list, dif)


#main list order:
#Question ID  ,  Difficulty  ,  Topic  ,  Answer ID  ,  Picture ID  ,  Frequency 
def main_file_info():
    main_file = open("main_file.txt","r")
    main_file_info=main_file.readlines()
    for line in main_file_info:
        main_list=line.split("@")

    main_list=main_list[1:len(main_list)-1]
    main_file.close()

    return main_list  # returning the item(s) thus making them accessible from the outer scope

my_main_list = main_file_info()  # assigning the item(s) to a variable
selecting_qs(my_main_list)  # passing the item(s) to another function

如果有任何 Unresolved 问题,请告诉我。

关于python - 尝试从一个子例程获取另一个子例程的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40895180/

相关文章:

python - 使用Python ftplib上传文件时"' NoneType ' object has no attribute ' sendall '"

python - 在 Python 的列表中使用 abs()

c - 当全局变量的值在另一个函数内发生变化时,在任何其他函数中使用全局变量的值

其他函数无法使用 $.get 中的 jQuery 数据

python - 为什么我不能在 Python 中设置全局变量?

python - 将结果分配给虚拟变量 _

python - 带有补丁的单元测试行为(Flask)

java - Google App Engine 中的 3D 渲染

python - 使用指定的分隔符连接切碎的列表

c++ - 显示链表