2016-11-30 25 views
1

我从一个文件的数据创建一个列表,我不能使用它的原始子程序的列表,我怎么能使它全球所以我可以使用它并改变它我想要的任何地方?试图从一个子例程得到一个列表到另一个

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) 
+0

最好也是最安全的方法就是像你一样“返回”它(注意你可以返回多个东西),**将它分配给一个变量(*函数调用*,这部分代码你不是显示),然后将它传递给想要使用它的下一个函数(在这种情况下是'selects_qs') –

+0

如何从返回列表中获取列表?只是main_list = main_file_info()? –

+0

是的。究竟。无论函数调用返回,变量都会被分配。在这种情况下,'main_list' –

回答

1

要传递函数中使用的变量左右,你就必须回报他们,分配他们和好.. 他们。在当前的脚本,这将如下所示:

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 

如果存在悬而未决的问题,请让我知道。