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

самым лучшим и безопасным способом является «вернуть» его, как вы это делаете (обратите внимание, что вы можете вернуть несколько вещей), ** назначить ** его переменной (* вызов функции *, этот бит кода, который вы не показывая), а затем передать его следующей функции, которая хочет его использовать (в этом случае 'selection_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 

Если есть нерешенные вопросы, пожалуйста, дайте мне знать.