2016-11-30 90 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 

如果存在懸而未決的問題,請讓我知道。